右键控制点击ToolbarWindow321 autohotkey

时间:2014-11-26 14:55:54

标签: autohotkey right-click trayicon

我是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间谍来确定我的图标的位置。

我确定我做错了什么(当然还是会很好:) :) 有人知道我必须做些什么来使其发挥作用吗?

2 个答案:

答案 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右键单击它。