Что нового

[Мышь, клавиатура] Программа не перехватывает команду Send

Статус
Закрыто для дальнейших ответов.

Hesp

Новичок
Сообщения
3
Репутация
0
Доброго времени суток. Пытаюсь написать простенький скрипт автоматизации для игры. Суть проблемы такова: есть сам клиент игры и программа которая интегрируется в клиент и перехватывает нажатие клавиши, что способствует некому игровому процессу :smile:. Когда пытаюсь отправить send то он направляется прямиком в клиент игры и программа не реагирует. Пытался реализовать данную функцию с помощью ControlSend но столкнулся с проблемой, что программа не имеет title.
 

firex

AutoIT Гуру
Сообщения
943
Репутация
208
Hesp
А как же имя процесса? А класс окна?

Набросал получение указателя на окно через имя процесса:

Код:
Global $_sProcess = 'opera.exe', $_aWin, $_hWinGame = 0
; ---

Global $_aProc = ProcessList( $_sProcess )
If Not @Error Then
	$_aWin = _WinAPI_EnumProcessWindows( $_aProc[1][1] )
	If Not @Error Then _
		$_hWinGame = $_aWin[1][0]
EndIf

;$_hWinGame - указатель на ваше окно
 

Belfigor

Модератор
Локальный модератор
Сообщения
3,608
Репутация
941
Предупреждение За нарушение правил форума (пункт Б.5):
Имя темы должно нести смысловую нагрузку (отражать суть вопроса/проблемы)
Правильно сформулированное название темы привлекает больше внимания, и шансы получить конкретный ответ увеличиваются.


Данные правила могут пополняться локальными правилами раздела.
Как правильно называть темы

"[Мышь, клавиатура] Программа не перехватывает команду Send" - это неприемлемое название темы, переименуйте тему иначе она будет закрыта, а вам возможно будет выдан бан на несколько дней.

С уважением, ваш Модератор.
 
Автор
H

Hesp

Новичок
Сообщения
3
Репутация
0
Прошу прощения за долгое отсутствие.
Опробовал
Код:
Global $_sProcess = 'opera.exe', $_aWin, $_hWinGame = 0
; ---

Global $_aProc = ProcessList( $_sProcess )
If Not @Error Then
    $_aWin = _WinAPI_EnumProcessWindows( $_aProc[1][1] )
    If Not @Error Then _
        $_hWinGame = $_aWin[1][0]
EndIf

;$_hWinGame - указатель на ваше окно


Вариант несколько не рентабелен, данная программа не реагирует если посылать команду непосредственно ей. Реагирует только на нажатие клавиши в клиенте игры. (как уже упоминал выше в моем случае autoit просто обходит интеграцию на прямую к клиенту) Скорее всего программа перехватывает нажатие на уровне драйвера. Возможно как то эмулировать нажатие клавиши через драйвер?
 

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,322
Hesp,
Предупреждение За нарушение правил форума (пункт В.11):
Любые отрывки AutoIt кода необходимо заключать в тег [autoit]
autoit.gif
(подробнее), а обычный код соответственно в тег [code]
code.gif
(подробнее). Также большие выдержки текста помещайте под тег [spoiler]
spoiler.gif
(подробнее), там где это поддерживается естественно. Как в случае с названием темы, также короткое и эргономичное сообщение привлекает больше внимания, и шансы на получение конкретного ответа увеличиваются.


С уважением, ваш Глобальный модератор.
 
Статус
Закрыто для дальнейших ответов.
Верх