You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何在启动特定程序(如VMware Workstation)时自动执行AutoHotkey命令?

如何在启动特定程序(如VMware Workstation)时自动执行AutoHotkey命令?

首先得说下你原脚本里的几个小问题:#If是用来定义热键的生效上下文(比如只有某个窗口激活时热键才起作用),不应该用来包裹这种自动执行的操作逻辑;而且把WinWait放在#If块里也不符合AHK的脚本结构,容易导致逻辑混乱。

接下来给你两种可行的解决方案,你可以根据自己的需求选择:

方案一:用AHK脚本直接启动VMware并执行操作

如果你愿意通过AHK脚本来启动VMware(可以把脚本做成快捷方式放桌面代替原快捷方式),这种方法最直接,逻辑也简单:

; 替换成你VMware的实际安装路径
Run, "C:\Program Files (x86)\VMware\VMware Workstation\vmware.exe"
; 等待VMware的窗口出现(用进程名定位更可靠)
WinWait, ahk_exe vmware.exe
; 设置鼠标坐标以窗口为基准(避免受屏幕分辨率影响)
CoordMode, Mouse, Window
; 右键点击指定位置
ControlClick, x86 y143, ahk_exe vmware.exe,, Right, 1
; 等待2秒确保右键菜单加载完成
Sleep, 2000
; 双击指定位置
ControlClick, x282 y130, ahk_exe vmware.exe,, Left, 2
return

方案二:后台监控VMware的启动事件(保留原快捷方式)

如果你还是想通过原来的桌面快捷方式启动VMware,那可以让AHK脚本在后台持续监控,一旦检测到VMware启动就自动执行操作:

#Persistent  ; 让脚本保持后台运行不退出
SetTimer, CheckVMwareLaunch, 1000  ; 每1秒检查一次进程状态

CheckVMwareLaunch:
; 检查vmware.exe是否在运行
Process, Exist, vmware.exe
if (ErrorLevel) {
    ; 等待VMware窗口完全加载完成
    WinWait, ahk_exe vmware.exe
    ; 执行你的操作
    CoordMode, Mouse, Window
    ControlClick, x86 y143, ahk_exe vmware.exe,, Right, 1
    Sleep, 2000
    ControlClick, x282 y130, ahk_exe vmware.exe,, Left, 2
    ; 关闭定时器,避免重复执行(如果需要每次启动都执行,可以调整这里的逻辑)
    SetTimer, CheckVMwareLaunch, Off
}
return

几个注意事项:

  • 坐标准确性:不同VMware版本、窗口大小或者屏幕分辨率下,你用的x86 y143这类坐标可能会失效。建议用AHK自带的Window Spy工具(右键托盘里的AHK图标就能找到),重新获取目标位置的准确坐标。
  • Sleep时间Sleep 2000是给右键菜单加载留的时间,如果你的电脑运行慢,可能需要调大这个数值;反之可以适当缩小。
  • 重复执行需求:如果方案二里你希望每次启动VMware都执行操作,那需要修改脚本逻辑,比如记录上次运行的进程ID,当检测到新的vmware.exe进程时再执行操作,避免重复触发。

备注:内容来源于stack exchange,提问作者yfjuu 6

火山引擎 最新活动