_WinAPI_PostMessage后台点击按钮示例--
本帖最后由 siton 于 2014-8-7 22:07 编辑发现程序中用ControlClick的时候,需要激活当前窗口,不符合实际应用,在论坛上查了半天资料,在百度上又搜索 _WinAPI_PostMessage,用法。。
参考网址:http://msdn.microsoft.com/en-us/library/bb775985(v=vs.85).aspx
http://blog.sina.com.cn/s/blog_86fe5b440102v12x.html
终于瞎猫给蒙对了。在这里写出来,供大家参考,自己也好做个备份在这里,便以后待查。
虽然现在还是不大理解。_WinAPI_PostMessage ( $hWnd, $iMsg, $wParam, $lParam ) 中的 $iMsg, $wParam,这两个参数用法。
BM_CLICK = 0x00F5 按钮单击
#include <WinAPI.au3>
a2()
Func a2()
$hWnd = WinGetHandle("计算器");计算3+4=7
$a = ControlGetHandle($hWnd, "", 81);按钮句柄清空
$a1 = ControlGetHandle($hWnd, "", 125);按钮句柄 1
$a2 = ControlGetHandle($hWnd, "", 92);按钮句柄 +
$a3 = ControlGetHandle($hWnd, "", 126);按钮句柄 2
$a4 = ControlGetHandle($hWnd, "", 112);按钮句柄 =
Sleep(1000)
$cv1 = _WinAPI_PostMessage($a1, 0x00F5, 1, 0);
Sleep(1000)
$cv1 = _WinAPI_PostMessage($a2, 0x00F5, 1, 0);
Sleep(1000)
$cv1 = _WinAPI_PostMessage($a3, 0x00F5, 1, 0);
Sleep(1000)
$cv1 = _WinAPI_PostMessage($a4, 0x00F5, 1, 0);
;以下是发送字符例子,后台发送字符,也可以实现。
;~ Sleep(500)
;~ $cv1 = _WinAPI_PostMessage($hWnd, 0x0100, 51, 0);3
;~ ;MsgBox(0,$cv1,"")
;~ Sleep(500)
;~ $cv1 = _WinAPI_PostMessage($hWnd, 0x0100, 107, 0);+
;~ Sleep(500)
;~ $cv1 = _WinAPI_PostMessage($hWnd, 0x0100, 52, 0);4
;~ Sleep(500)
;~ $cv1 = _WinAPI_PostMessage($hWnd, 0x0100, 13, 0);回车
EndFunc ;==>a2
不激活不能controlclick?你确定吗? 本帖最后由 拉风晓晓 于 2014-8-7 11:07 编辑
Func _WinWaitActivate($title, $text, $timeout = 0)
WinWait($title, $text, $timeout)
If Not WinActive($title, $text) Then WinActivate($title, $text)
WinWaitActive($title, $text, $timeout)
EndFunc ;==>_WinWaitActivate
;~ _WinWaitActivate("计算器", "")
ConsoleWrite(1&',')
ControlClick ( "计算器",'',133, 'left' ,1, 19,14)
ConsoleWrite(2&',')
;~ _WinWaitActivate("计算器", "")
ConsoleWrite(3&',')
ControlClick ( "计算器",'',91, 'left' ,1, 17,11)
ConsoleWrite(4&',')
;~ _WinWaitActivate("计算器", "")
ConsoleWrite(5&',')
ControlClick ( "计算器",'',126, 'left' ,1, 12,16)
ConsoleWrite(6&',')
;~ _WinWaitActivate("计算器", "")
ConsoleWrite(7&',')
ControlClick ( "计算器",'',112, 'left' ,1, 20,22)
ConsoleWrite(8&',')
up 我刚才测试了一下,可以在不激活状态发送控件点击命令,上面的代码在计算器最小化也可以实现 帮助手册上,对于ControlClick 是这样备注的。有些特殊情况,需要WinActivate() 函数激活控的窗口.
备 注
除非是活动窗口, 否则某些控件不会响应点击. 使用 ControlClick() 前, 调用 WinActivate() 函数激活控件的窗口.
两次点击将发送双击消息到控件 - 这个事件可以在资源管理器控件中启动程序!
页:
[1]