Уведомления

Группа в Telegram: @pythonsu

#1 Янв. 27, 2012 07:32:08

Virtul
От:
Зарегистрирован: 2012-01-27
Сообщения: 26
Репутация: +  0  -
Профиль   Отправить e-mail  

возможно ли перехватить нажатие кнопки в стороннем приложении?

Есть задача - средствами пайтона в виндовсе во-первых перехватывать события нажатия кнопки мыши/клавы в других приложениях, во-вторых получать какой-нибудь идентификатор нажатого элемента управления (кнопок, чекбоксов, пунктов меню, в общем всего)

Первая часть реализована в pyHook - можно узнать в каком окошечке по каким координатам было клацнуто мышкой и т.п.
Но вот со второй - проблемка, где-то нагуглил мнение, что это вообще нельзя сделать с помощью пайтона, т.к. в целевое приложение нужно внедрять dll (или как-то так). Действительно ли это так? Объясните, пожалуйста, поподробнее почему. Для С есть hook библиотеки, в python же можно их использовать или я не о том? Может можно через ironpython+.net это реализовать?

Заранее благодарю за ответы.



Офлайн

#2 Янв. 27, 2012 13:00:00

nerijus
От:
Зарегистрирован: 2010-06-03
Сообщения: 93
Репутация: +  1  -
Профиль   Отправить e-mail  

возможно ли перехватить нажатие кнопки в стороннем приложении?

Ну если уж можно на питоне делать API хуки, тогда можно и нажатие клавиш ловить. Вот посмотрите пару линков:
http://www.rohitab.com/discuss/topic/37018-api-hooking-in-python/
http://www.ownedcore.com/forums/world-of-warcraft/world-of-warcraft-bots-programs/wow-memory-editing/285120-pymem-python-process-memory-editing.html

P.S. для этого не обязательно подгружать длл. Когда то делал программу, которая все прямо из памяти делала. С начала CreateRemoteThread, потом узнаем своё место в чужой памяти с “call” без “ret”. Потом узнаем адрес “peb” (process environment block) при помощи FS:, из него берём адрес kernel32.dll тогда находим GetProcAddress и вызываем что угодно. Для такого подхода не нужно загружать ни какие файлы, но программировать приходится на очень низком уровне.



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version