模拟移动鼠标到QQ2012任务栏的ICO图标,并双击左键;(已解决)
本帖最后由 5735988 于 2012-4-8 10:24 编辑模拟移动鼠标到QQ2012任务栏的ICO图标,并双击左键;
用 ProcessClose ("QQ.exe") 关闭QQ,老是会存留下 ICO 图标,只能模拟鼠标移动过去,他才会消失,
目的:用 ProcessClose ("QQ.exe") 关闭QQ后,清除任务栏的 CIO图标。 本帖最后由 风行者 于 2012-3-22 06:06 编辑
刚好有空,写个刷新托盘工具栏的函数
#include <GUIToolbar.au3>
;例子=====================
ProcessClose("QQ.exe")
ProcessWaitClose("QQ.exe")
_ResTray()
;==========================
;刷新托盘函数
Func _ResTray()
;获取托盘工具栏句柄
$hTray = ControlGetHandle("", "", "ToolbarWindow321")
Local $iMode = Opt("MouseCoordMode", 1)
Local $aPos = MouseGetPos()
;鼠标移动到全部托盘图标
For $i = 0 To _GUICtrlToolbar_ButtonCount($hTray)
$tId = _GUICtrlToolbar_IndexToCommand($hTray, $i)
__Press_Button($hTray, $tId)
Next
MouseMove($aPos, $aPos, 0)
Opt("MouseCoordMode", $iMode)
EndFunc ;==>_ResTray
Func __Press_Button($hWnd, $iCommandID)
Local $tRect = _GUICtrlToolbar_GetButtonRectEx($hWnd, $iCommandID)
Local $tPoint = _WinAPI_PointFromRect($tRect)
$tPoint = _WinAPI_ClientToScreen($hWnd, $tPoint)
Local $iX, $iY
_WinAPI_GetXYFromPoint($tPoint, $iX, $iY)
MouseMove($iX, $iY, 0)
EndFunc ;==>__Press_Button
本帖最后由 zldfsz 于 2012-3-22 08:14 编辑
回错贴了,看看 论坛搜索有刷新托盘的函数,但感觉并不完美
上面的函数也有鼠标移动的轨迹,并不完美
还是重新开个帖子了 根据托盘提示文本删除比较完美
#include <GUIToolbar.au3>
;例子=====================
ProcessClose("QQ.exe")
ProcessWaitClose("QQ.exe")
_ResTray("QQ")
;==========================
;刷新托盘函数
Func _ResTray($tip)
;获取托盘工具栏句柄
$hTray = ControlGetHandle("", "", "ToolbarWindow321")
;删除托盘图标
For $i = 0 To _GUICtrlToolbar_ButtonCount($hTray)-1
$tId = _GUICtrlToolbar_IndexToCommand($hTray, $i)
$tText = _GUICtrlToolbar_GetButtonText($hTray, $tId)
If StringInStr($tText,$tip) Then _GUICtrlToolbar_DeleteButton($hTray, $tId)
Next
EndFunc ;==>_ResTray 可以用 _WinAPI_PostMessage 。
#include <WinAPI.au3>
Const $WM_MOUSEMOVE = 0x200
$hTray = WinGetHandle("")
$hToolbar_Kill = ControlGetHandle($hTray, "", "")
$tRect = _WinAPI_GetClientRect($hToolbar_Kill)
$tR = DllStructGetData($tRect, "Right")
$tB = DllStructGetData($tRect, "Bottom")
For $X = 1 To $tR
For $Y = 1 To $tB
$Pos = $X + $Y * 65536
_WinAPI_PostMessage($hToolbar_Kill, $WM_MOUSEMOVE, 0, $Pos)
Next
Next 本帖最后由 shil1 于 2012-3-28 18:58 编辑
ProcessClose("QQ.exe")
ProcessWaitClose("QQ.exe")
ControlClick("","", "","middle")
这个多简单,ControlClick后面的点击坐标弄好,只要点到那个QQ ico所在的地方,应当就可以,点错了也没什么影响。不行就多点几个地方遍历那一块所以ico加上个循环^-^ 本帖最后由 5735988 于 2012-4-8 10:22 编辑
回复 6# 马甲
CLASS:Shell_TrayWnd]"这个是状态栏那里,
"这个呢
这个内部句柄是如何获得的。如果是别的,比如TM呢,如何获得
补充,学习了一下,似乎都是通用的。 看了风行的代码,很受启发,感谢!
页:
[1]