找回密码
 加入
搜索
查看: 1507|回复: 4

[网络通信] 如何后台点击任务栏程序图标激活程序

[复制链接]
发表于 2019-6-14 20:29:55 | 显示全部楼层 |阅读模式
在写一个自动程序,需要在任务栏上点击程序图标呼出程序主界面,可以用winsetstat激活界面,但这个程序很奇怪,用winsetstat激活的界面显示不完全。如果直接用鼠标点击的话,界面是正常的。因为用在服务器上,需要能够后台激活,试过了systray udf,SysTray_ClickItem,_GUICtrlToolbar_ClickButton, 都不能做到后台激活。
请问要怎样才能后台模拟鼠标点击系统图标呢?

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入

×
发表于 2019-6-15 20:22:11 | 显示全部楼层
本帖最后由 afan 于 2019-6-15 20:41 编辑

估计是任务栏的句柄没获取成功,以下是XP成功点击任务栏第一个按钮的测试
Local $hwnd = ControlGetHandle('[CLASS:Shell_TrayWnd]', '', 'ToolbarWindow322')
ControlClick($hwnd, '', '', '', 1, 1, 1)

 楼主| 发表于 2019-6-15 21:38:33 | 显示全部楼层
afan 发表于 2019-6-15 20:22
估计是任务栏的句柄没获取成功,以下是XP成功点击任务栏第一个按钮的测试

谢谢,我的环境是win 2008,参照代码,修改如下未成功。
Local $hwnd = ControlGetHandle('[CLASS:Shell_TrayWnd]', '', 'ToolbarWindow321')
ControlClick($hwnd, '', '', '', 1, 1, 1)



发表于 2019-6-15 21:58:29 | 显示全部楼层
jsmart 发表于 2019-6-15 21:38
谢谢,我的环境是win 2008,参照代码,修改如下未成功。
Local $hwnd = ControlGetHandle('[CLASS:Shell ...

你可以用 _GUICtrlToolbar_GetMaxSize($hwnd) 检查一下矩形是否正常
 楼主| 发表于 2019-6-15 23:26:42 | 显示全部楼层
本帖最后由 jsmart 于 2019-6-16 00:12 编辑
afan 发表于 2019-6-15 21:58
你可以用 _GUICtrlToolbar_GetMaxSize($hwnd) 检查一下矩形是否正常

终于基本实现,目前存在的问题就是我只能做到点击第一个图标,我就是在命令之前将程序关闭再重启,保准它位于第一个。代码参考了ControlClickPlus,已经找不到出去了,感谢源码作者,也感谢afan版主,你说任务栏第一个按钮给我了提示,我把整个任务栏当成了一个控件来做。代码如下,纯自学,不足之处,请莫怪。

$hwnd = ControlGetHandle("[CLASS:Shell_TrayWnd]","", "[CLASS:ToolbarWindow32; INSTANCE:1]")
_controlclicktray("[CLASS:Shell_TrayWnd]","",$hwnd)

Func _ControlClicktray($iTitle, $iText, $iControl)
        Local $counts=_GUICtrlToolbar_ButtonCount($hwnd)
        Local $hwnd = ControlGetHandle($iTitle, $iText, $iControl)
        Local $pos = ControlGetPos($iTitle, $iText, $iControl)
        Local $lParm = "0x" & String(Hex(Int($pos[3]/ 2), 4)) & String(Hex(Int($pos[2]/$counts/ 2), 4))
        _WinAPI_PostMessage($hwnd, 0x200, 0x0, $lParm)
        _WinAPI_PostMessage($hwnd, 0x201, 0x1, $lParm)
        _WinAPI_PostMessage($hwnd, 0x202, 0x0, $lParm)
EndFunc
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-9-28 09:32 , Processed in 0.075543 second(s), 20 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表