ahk run pid отличается от показанного в Window Spy

#autohotkey

#autohotkey

Вопрос:

Я пытаюсь захватить PID из команды запуска и использовать PID для изменения размера окна. Но не повезло. Потратив несколько часов, я понял, что PID, отображаемый в окне сообщения, отличается от PID, проверяемого через окно шпиона. Есть предложения?

 Run, "C:Program FilesGitgit-bash.exe",,, PID
;Sleep, 300
MsgBox, %PID% is the process PID ; --> PID shown here is different from PID inspected via Window Spy
WinWait, ahk_pid %PID%
;Sleep, 300
;WinActivate, ahk_pid %PID%
WinMinimize, ahk_pid %PID%
;WinMove, ahk_pid %PID%, ,500, 250, 200, 100
return
 

Ответ №1:

Это потому, что появляющееся окно не является результатом git-bash.exe процесса.
Он поступает из mintty.exe , который запускается где-то в конце строки после запуска git-bash.exe .

Самое простое, что вы можете сделать, это дождаться появления окна после запуска git-bash.exe , например:

 Run, % "C:Program FilesGitgit-bash.exe"
;// sleep a bit because other things from mintty.exe seem to get lauched first as well
Sleep, 1000
WinWait, % "ahk_exe mintty.exe"
;// get the hwnd of the last found window (the window we waited for above)
hwnd := WinExist()

;// and if you for some reason really need the PID, you can do e.g this to get it
WinGet, pid, PID, % "ahk_id " hwnd
MsgBox, % pid
 

Комментарии:

1. Спасибо за ответ, и он сработал. На самом деле изначально я пытался с помощью chrome window (наконец, мне нужно выровнять chrome), но мой код не работал. Затем я нашел пример Интернета, который был git-bash.exe . Я подумал, позвольте мне сначала протестировать код с помощью git-bash, и если это сработает, я переведу его в Google Chrome. Я попытался исправить код, но эта странная проблема (git-bash.exe ) заставил меня потратить несколько часов. Я только что попробовал chrome.exe в более раннем коде и это сработало. 🙂