Что нового

Отправка нажатий клавиш через функцию Controlsend в неактивное окно

S1R1US

скрипт мне запили!
Сообщения
50
Репутация
6
Доброго дня.
Нужен Ваш совет. Есть такой код:
Код:
$hWnd = "Безымянный — Блокнот"
ControlSend($hWnd,"","Edit1",'{q}' & '{e}' & '{r}')
Exit
Он исправно, последовательно отправляет нажатия клавиш 'q', 'e', 'r' - в элемент Edit1, расположенный в пустом окне блокнота.
Допустим имеется другое окно блокнота, в котором отсутствуют какие либо элементы (edit,input или другие). Каким образом можно передать в это окно клавиатурные нажатия находясь в фоновом режиме, без указания класса элемента?
Пробовал:
Код:
$hWnd = "Безымянный — Блокнот"
ControlSend($hWnd,"","",'{q}' & '{e}' & '{r}')
Exit
Не работает. Однако вот так работает (за счет активации окна):
Код:
$hWnd = WinWait("[CLASS:Notepad]", "", 5)
WinActivate($hWnd)
ControlSend($hWnd,"", "",'{q}' & '{e}' & '{r}')
Exit
Но мне необходимо передать данные клавиатурные нажатия в неактивное окно (то есть не делать его активным, не указывая конечный класс элемента, куда будет направлено "нажатие"). Подскажите пожалуйста, возможно есть другой вариант?
 
Автор
S

S1R1US

скрипт мне запили!
Сообщения
50
Репутация
6
На форуме есть кто нибудь живой? :-\
Неужели никто не может хотя бы просто подсказать - реально ли выполнить данную задачу на AutoIt'е и с помощью какой функции?
 

Belfigor

Модератор
Локальный модератор
Сообщения
3,608
Репутация
941
Судя по описанию ты пытаешься отправлять нажатия в игру. Возможно игра защищается от нажатий в неактивное окно. Как вариант, чтобы особо не запариваться есть вариант запустить игру на вирт машине и там творить с ней всё что хочешь. Есть еще вариант отправлять что-то типа этого.
Код:
ControlSend($hWnd,"","",'{q DOWN}')
попробуй, уйдет ли зажатие q в окно


Добавлено:
Сообщение автоматически объединено:

Ну и да, в твоем случае ты отправляешь в команду не хендл, а тайтл. Функция принимает и то и то, но таки лучше сразу учиться называть вещи своими именами
 
Верх