autohotkey 的 ControlClick 和 Set Default 不起作用?

autohotkey 的 ControlClick 和 Set Default 不起作用?

我正在跟进这个很棒的 AutoHotkeyScript并且很难点击Set Default按钮。

off topic:如果您想复制,我必须更改一些命令才能使声音窗口检测正常工作,因此这就是我目前的情况:

   Run mmsys.cpl
   IfWinNotActive,  Sound, , WinActivate,  Sound, 
   WinWait,Sound ; Change "Sound" to the name of the window in your local language
   ControlSend,SysListView321,{Down 1} ; This number selects the matching audio device in the list, change it accordingly
   Sleep, 100
   ControlClick, &Set Default; Change "&Set Default" to the name of the button in your local language
   Sleep, 100
   ;ControlClick,OK

现在,the AHK log显示正在执行:

109: {
110: toggle := !toggle
112: if toggle  
114: Run,mmsys.cpl
115: IfWinNotActive,Sound,l
115: WinActivate,Sound (0.03)
116: WinWait,Sound (0.31)
119: ControlSend,SysListView321,{Down 1} (0.01)
120: Sleep,100 (0.11)
121: ControlClick,&Set Default; Change "&Set Default" to the name of the button in your local language
122: Sleep,100 (0.11)
124: }
125: if !toggle  
138: }
139: Return (6.74)

&Set Default未被点击。我已验证按钮名称实际上是。&Set Default我想我可以使用 ClassNN 的Button2,但我想知道 - 为什么 - 这不起作用,而不仅仅是破解它。

或者我可以send [alt down]S[alt up]将其设置为默认值,但同样,这是黑客行为,为什么简单的 ControlClick 不起作用?

答案1

哦,看起来这是一个简单的语法问题:

  1. 不需要在每行末尾都加分号
  2. 命令和分号之间需要一个空格分隔符。

例如,WinWait, Sound;是一个问题但却WinWait, Sound ;是正确的。

答案2

对于 ControlClick:在更彻底地浏览文档后,我终于找到了自己的解决方案:

https://autohotkey.com/docs/commands/ControlClick.htm#Reliability

您可以将 NA 指定为第六个参数,以等待鼠标按钮抬起。我发现在点击Control, Check, ,Button1之前触发时ControlClick不起作用,但将 添加到NA末尾以某种方式神奇地解决了这个问题。我想这是模拟点击,但尚未抬起。

相关内容