gpt4 book ai didi

windows - AutoIt ControlCommand 未按预期工作

转载 作者:可可西里 更新时间:2023-11-01 10:06:55 28 4
gpt4 key购买 nike

我正在使用 AutoIt 尝试制作一个小的热键应用程序来使用 Windows Journal这样我就可以快速选择不同的颜色。

看来我离获得期望的结果非常接近但又很遥远。我使用 AutoIt 工具找到工具栏的 CommandID 和颜色的 ID。这是我的代码:

    ControlCommand("[CLASS:JournalApp]","",113,"SendCommandID", 40178)

我的问题是不会选择颜色。它将被选择到颜色周围有“选择”括号的程度,但我绘制的颜色仍然是我选择的最后一种颜色。

所以我试着乱搞,发现这段代码:

    ControlCommand("[CLASS:JournalApp]","",113,"Check","")

它确实会选择颜色,但它只会选择淡蓝色。我不知道为什么,但那是总是被选中的颜色。我还没有找到将 "SendCommandID" 的选择能力与 "Check"

的检查能力结合起来的方法

此外,它还是一个 ToolbarWin32 控件。

最佳答案

我自己想通了。

这是我学到的东西:

ControlCommand("[CLASS:JournalApp]","",113,"Check","") 

有一个严重的弱点,就是无法指定要检查哪个按钮。起初它似乎是随机的,但经过一段时间的尝试后我注意到它是在相对于客户端窗口的特定坐标处完成的。为什么?我不知道。但至少它不是随机的。

ControlCommand("[CLASS:JournalApp]","",113,"SendCommandID", 40178)

弱点在于,表面上看起来按钮点击成功了。按钮的功能并未实际执行。就我的具体情况而言,在我使用它之后笔的颜色没有改变,尽管它看起来像是点击了按钮。

这是我的解决方案:

我环顾四周,发现 AutoIt 有一个专门处理 ToolBarWin32 类的库。这是来自 GuiToolbar.au3 的库。有了这个,我发现我能够做一些事情。第一,我可以将点击发送到按钮,甚至可以更改按钮的状态。我发现改变按钮的状态对触发事件没有任何作用,点击有效,但它有一个弱点,它会导致鼠标退缩。这没有用,因为我的笔靠近我的数位板,因为它具有鼠标移动的优先权。所以我不得不将笔从平板电脑上拿开才能使用热键——不是很方便。这是我的解决方案代码:

if WinActive("[CLASS:JournalApp]") Then
WinActivate("[CLASS:ToolbarWindow32; INSTANCE:2]", "")
$cmdId = "401"&$hotKeys[$key-1+$shift]
If $cmdId < 40172 or $cmdId > 40188 Then
Return
EndIf
$hWnd = ControlGetHandle("[CLASS:JournalApp]", "", 113)
_GUICtrlToolbar_ClickButton($hWnd, $cmdId)
EndIf

之后我发现 AutoIt 的原生 ControlClick() 更有用,因为它不会导致鼠标退缩。它直接触发了鼠标点击事件。因此,结合工具栏库中的一个很好的命令,可以得到一个更简洁的解决方案。在这里:

if WinActive("[CLASS:JournalApp]") Then
WinActivate("[CLASS:ToolbarWindow32; INSTANCE:2]", "")
$cmdId = "401"&$hotKeys[$key-1+$shift]
If $cmdId < 40172 or $cmdId > 40188 Then
Return
EndIf
ConsoleWrite($hotKeys[$key-1])
$hWnd = ControlGetHandle("[CLASS:JournalApp]", "", 113)

;get the coords of the button and control send a click
local $btnCoords= _GUICtrlToolbar_GetButtonRect($hWnd, $cmdId)

ControlClick("[CLASS:JournalApp]", "", "[CLASS:ToolbarWindow32; INSTANCE:2]","left",1,$btnCoords[0]+2,$btnCoords[1]+2)
EndIf

关于windows - AutoIt ControlCommand 未按预期工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16929423/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com