Я не особо разбирался с AHK, но я видел скрипт, который умеет посылать нажатия клавиш в окно, а Window интерпретирует нажатия клавиш и отображает их соответственно. Скрипт использовал функцию под названием ControlSend. И мне было любопытно, что на самом деле делает эта функция в Win32 API. Самая близкая функция, которую я мог предположить, это использует SendMessage / PostMessag; Однако, когда я фактически протестировал PostMessage / SendMessage в окне, используя WM_KEYDOWN в качестве сообщения, окно не смогло его интерпретировать. Так что на самом деле это не вопрос кодирования, но на какие функции на самом деле полагается ControlSend в AHK в Win32 API? Он не имитирует клавиатуру с помощью keybd_event или SendInput, потому что ей удается отправлять нажатия клавиш, даже когда окно процесса находится в фоновом режиме и не сфокусировано. Я пытался найти это, но без объяснения причин.
Это был скрипт AHK
Loop{
sendKey("a")
}
F1::
if (mypid == 0){
WinGet, var, PID, A
mypid = %var%
MsgBox, Found client %mypid%
}
sendKey(key)
{
global mypid
WinClose
ControlSend,,{%key%}, ahk_pid %mypid%
}