AHK 窗口控制里,经常会看到这些写法:窗口标题、ahk_class、ahk_exe、ahk_pid、ahk_id。它们都能定位窗口,但可靠程度和适用场景不同。
但是最推荐的还是 ahk_class ,因为他是指定窗口固定不变的,比较稳定。ahk_class 再加上完整标题,或者标题前几个字就更确定了。
一、标题:最直观,也最容易变
#Requires AutoHotkey v1.1 #NoEnv #SingleInstance Force SetTitleMatchMode, 2 WinActivate, 记事本
标题适合新手快速测试,但标题经常变化:文档名、网页标题、未保存星号、软件状态都会出现在标题里。所以正式脚本不要只依赖标题。
二、类名:适合区分窗口类型
WinActivate, ahk_class Notepad
ahk_class 是窗口类名,同一类窗口通常相同。它比标题稳定,但不同版本软件可能类名变化;同一个软件的多个窗口也可能类名一样。
三、进程名:日常最推荐的基础条件
WinActivate, ahk_exe notepad.exe
ahk_exe 通过进程名匹配窗口。日常控制某个软件时,它通常比标题可靠。比如浏览器标题一直变,但进程名还是 chrome.exe 或 msedge.exe。
四、PID:适合锁定某一次启动的进程
Run, notepad.exe,,, pid WinWait, ahk_pid %pid% WinActivate, ahk_pid %pid%
PID 适合你自己刚启动的程序。它能区分同一个 exe 的多个实例。但程序关闭后 PID 会失效,系统以后也可能复用这个数字,所以 PID 不适合长期保存。
五、句柄:最精确,但生命周期最短
WinGet, hwnd, ID, ahk_exe notepad.exe WinActivate, ahk_id %hwnd%
ahk_id 使用窗口句柄,也就是 HWND。它精确到某一个窗口,是最精确的定位方式。但窗口关闭重开后,旧句柄就没用了。
六、推荐组合
| 条件 | 可靠性 | 适合场景 |
|---|---|---|
| 标题 | 一般 | 快速测试、人眼可读 |
| ahk_class | 较好 | 区分窗口类型 |
| ahk_exe | 很好 | 日常锁定软件 |
| ahk_pid | 很好但临时 | 锁定自己启动的进程 |
| ahk_id | 最精确但临时 | 锁定具体窗口 |
SetTitleMatchMode, 2
; 推荐组合:进程名 + 标题关键词
WinActivate, 设置 ahk_exe notepad.exe
; 或者:先拿句柄,再对句柄操作
WinGet, hwnd, ID, ahk_exe notepad.exe
if hwnd
WinActivate, ahk_id %hwnd%
七、建议
- 临时测试可以用标题。
- 正式脚本优先用
ahk_exe。 - 同一软件多窗口时,搭配标题或类名。
- 自己启动的进程,用 PID 很稳。
- 已经拿到窗口后,后续操作用句柄最精确。
窗口定位没有绝对最可靠,只有“在当前场景最合适”。标题好读,进程名稳定,PID 和句柄精确但短命。组合使用,才是稳定窗口脚本的基础。
声明:站内资源为整理优化好的代码上传分享与学习研究,如果是开源代码基本都会标明出处,方便大家扩展学习路径。请不要恶意搬运,破坏站长辛苦整理维护的劳动成果。本站为爱好者分享站点,所有内容不作为商业行为。如若本站上传内容侵犯了原著者的合法权益,请联系我们进行删除下架。

评论(0)