我是autohotkey的新手,我目前面临着对ControlClick的误解。
我的目标是使用ControlClick右键单击toolbarWindow321上的图标以显示上下文菜单。我不想使用Click或Send,因为当会话被锁定时可以执行操作。
我在网上搜索了一段时间并尝试了几件事。
ControlClick,,ahk_class Shell_TrayWnd,,R,NA x1500 y22
如果我想要工具栏的下拉菜单,这个工作正常。事实并非如此。
我试过这样的事情:
ControlClick,ToolbarWindow321,ahk_class Shell_TrayWnd,,Right,1,NA x1500 y22
但没有显示任何内容。我尝试了几个坐标,并使用AutoIt3间谍来确定我的图标的位置。
我确定我做错了什么(当然还是会很好:) :) 有人知道我必须做些什么来使其发挥作用吗?
答案 0 :(得分:0)
我写了一些代码,点击记事本的“另存为”窗口中的“桌面”按钮。 在Windows XP版本的记事本上,这是一个ToolbarWindow32控件。 代码使用Acc库中的函数,您可以将这些函数放在脚本的Lib文件夹中。
Acc Library [AHK_L](2012年9月27日更新) - 脚本和函数 - AutoHotkey社区 https://autohotkey.com/board/topic/77303-acc-library-ahk-l-updated-09272012/
^q::
ControlGet, hCtl, Hwnd, , ToolbarWindow322, A
if !hCtl
Return
oAcc := Acc_Get("Object", "tool_bar", 0, "ahk_id " hCtl)
Loop, % oAcc.accChildCount
if (oAcc.accName(A_Index) = "Desktop")
if (1, oAcc.accDoDefaultAction(A_Index))
break
Return
编辑:在您的特定情况下,accDoDefaultAction可能与右键单击无关。
供参考,我的脚本适用于Windows XP和7:
^q:: ;notepad (save as) - click Desktop button
^d:: ;notepad (save as) - click Desktop button
WinGet, hWnd, ID, A
hCtl := ""
if !hCtl ;check for treeview e.g. Win 7
{
ControlGet, hCtl, Hwnd, , SysTreeView321, ahk_id %hWnd%
if hCtl
oAcc := Acc_Get("Object", "outline", 0, "ahk_id " hCtl)
}
if !hCtl ;check for toolbar e.g. Win XP
{
ControlGet, hCtl, Hwnd, , ToolbarWindow322, ahk_id %hWnd%
if hCtl
oAcc := Acc_Get("Object", "tool_bar", 0, "ahk_id " hCtl)
}
Loop, % oAcc.accChildCount
if (oAcc.accName(A_Index) = "Desktop")
if (1, oAcc.accDoDefaultAction(A_Index))
break
Return
答案 1 :(得分:0)
这个问题可能看起来像一个相对微不足道的问题,一个“阅读手册”的问题,但我记得自己有问题。 可以说,底部的方法应该像上面那样工作,但不是。
;notepad save as (windows xp version) left-click Desktop button)
ControlClick, ToolbarWindow322, A, , , , NA x40 y100
;taskbar (windows 7) right-click taskbar button
ControlClick, x260 y20, ahk_class Shell_TrayWnd, , R
ControlClick, x260 y20, ahk_class Shell_TrayWnd, , R, NA
;taskbar (windows 7) right-click taskbar button (DIDN'T WORK)
;(clicked the wrong part of the taskbar, at the far right I believe)
ControlClick, , ahk_class Shell_TrayWnd, , R, x260 y20
ControlClick, , ahk_class Shell_TrayWnd, , R, NA x260 y20
您的代码备注:
这种形式对我来说也不起作用:
ControlClick,,ahk_class Shell_TrayWnd,,R,NA x1500 y22
我相信:
ControlClick,ToolbarWindow321,ahk_class Shell_TrayWnd,,Right,1,NA x1500 y22
应该是这样的:
ControlClick,ToolbarWindow321,ahk_class Shell_TrayWnd,,Right,NA x1500 y22
删除了'1'
进一步说明:
您可以使用Acc来识别按钮的坐标,然后使用ControlClick右键单击它。