Форум сайта python.su
Еще раз возвращаюсь к своей проблеме, связанной с созданием сервиса.
Я пытаюсь решить задачу поэтапно , поэтому изменил слегка условие на данный момент:
Нужно создать сервис, который будет выполнять создания файла в определенной папке при нажатии некой комбинации клавиш на клавиатуре. Я выбрал 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 ,то он работает на ура и создает файл при нажатии клавиш.
я захожу в команд лайн и прописываю инстал сервиса -> пишет,что инсталлед. Затем иду в Сервисес-> нахожу свой сервис и делаю ему старт -> он вроде как стартует.
Но почему то ,при нажатии клавиш файл не создает……
файл .пу я прикрепил
Если можно ,поясните почему же он его не хочет создавать!!!!!
Прикреплённый файлы: main_file.py (3,0 KБ)
Офлайн
Сделай по первому рецепту
Офлайн
Очень долго пыхтел но все таки по первому рецепту тоже смог запустить сервис.
Эффект тот же! При нажатии на 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()
то файл создается
что же делать………
Офлайн
у меня Windows 7 64 bit Home Premium Service Pack 1 если что
Офлайн
Нужно выбирать глобальные сочетания клавиш, которые ничем не перекрываются.
Например, под Вин Ctrl+Y - это стандартный шорткат для повторения.
Плюс на Вин 7 ваш хук может не успеть сработать и система его аннулирует.
И еще у меня есть сомнения на счет применимости этого хука именно для сервиса.
Мне почему то память упорно намекает, что должно быть какое-то окно (десктоп - это тоже окно), но я очень давно не писал такого рода программы, поэтому рекомендую вам проверить подсказки моей дырявой памяти. ;)
Офлайн
я точно помню , что это работало под win xp , должно и под семерку
http://code.activestate.com/recipes/551780-win-services-helper/
сейчас семерка, тоже проверяю, не хочет работать
Отредактировано sanodin (Янв. 17, 2014 23:14:58)
Офлайн
та же программа ведь работает когда я просто из среды разработки запускаю этот скрипт
что же делать?
Офлайн
сервис работает, если просто создать файл в директории Desktop, а вот с некоторыми библиотеками не дружит, выяснять надо
Офлайн
ну у меня он файл не создает
В общем ,хотел блеснуть на работе ,что могу на Питончике всякие няшечки писать и чувствую ,что не получится
Офлайн
если убрать
def OnKeyboardEvent(event): if event.Ascii == 3:
Отредактировано sanodin (Янв. 18, 2014 00:26:18)
Офлайн