Найти - Пользователи
Полная версия: создание Windows Service и его работа
Начало » Python для новичков » создание Windows Service и его работа
1 2 3 4 5
Doktopat
Еще раз возвращаюсь к своей проблеме, связанной с созданием сервиса.
Я пытаюсь решить задачу поэтапно , поэтому изменил слегка условие на данный момент:
Нужно создать сервис, который будет выполнять создания файла в определенной папке при нажатии некой комбинации клавиш на клавиатуре. Я выбрал Ctrl + ‘C’
я взял шаблон построения сервиса отсюда: http://iqa.com.ua/programming/python/windows-services-from-python-scripts (использую 2 пример)
В мэйн я вставляю саму логику скрипта:
def OnKeyboardEvent(event):
if event.Ascii == 3:
open(“C:\Users\Doktopat\Desktop\Desktop\\file.txt”, “w”)

hm = pyHook.HookManager()
hm.KeyDown = OnKeyboardEvent
hm.HookKeyboard()

while True:
pythoncom.PumpMessages()
servicemanager.LogInfoMsg(“I'm still here.”)

Хочу заметить ,что если просто запустить этот скриптик в PyCharm ,то он работает на ура и создает файл при нажатии клавиш.
я захожу в команд лайн и прописываю инстал сервиса -> пишет,что инсталлед. Затем иду в Сервисес-> нахожу свой сервис и делаю ему старт -> он вроде как стартует.
Но почему то ,при нажатии клавиш файл не создает……
файл .пу я прикрепил
Если можно ,поясните почему же он его не хочет создавать!!!!!
sanodin
Сделай по первому рецепту
Doktopat
Очень долго пыхтел но все таки по первому рецепту тоже смог запустить сервис.
Эффект тот же! При нажатии на Ctrl + ‘Y’ это по Аски = 25 файл не создается. А если отдельно запустить вот это:
import pyHook
import pythoncom

def OnKeyboardEvent(event):
if event.Ascii==25:
open(“C:\Users\Doktopat\Desktop\Desktop\\file.txt”, “w”)

hm = pyHook.HookManager()
hm.KeyDown = OnKeyboardEvent
hm.HookKeyboard()

while True:
pythoncom.PumpMessages()

то файл создается
что же делать………
Doktopat
у меня Windows 7 64 bit Home Premium Service Pack 1 если что
Lexander
Нужно выбирать глобальные сочетания клавиш, которые ничем не перекрываются.
Например, под Вин Ctrl+Y - это стандартный шорткат для повторения.
Плюс на Вин 7 ваш хук может не успеть сработать и система его аннулирует.
И еще у меня есть сомнения на счет применимости этого хука именно для сервиса.
Мне почему то память упорно намекает, что должно быть какое-то окно (десктоп - это тоже окно), но я очень давно не писал такого рода программы, поэтому рекомендую вам проверить подсказки моей дырявой памяти. ;)
sanodin
я точно помню , что это работало под win xp , должно и под семерку
http://code.activestate.com/recipes/551780-win-services-helper/
сейчас семерка, тоже проверяю, не хочет работать
Doktopat
та же программа ведь работает когда я просто из среды разработки запускаю этот скрипт
что же делать?
sanodin
сервис работает, если просто создать файл в директории Desktop, а вот с некоторыми библиотеками не дружит, выяснять надо
Doktopat
ну у меня он файл не создает
В общем ,хотел блеснуть на работе ,что могу на Питончике всякие няшечки писать и чувствую ,что не получится
sanodin
если убрать
            def OnKeyboardEvent(event):
                if event.Ascii == 3:
то просто файл создаст
то есть Hook не отлавливается
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB