gunziyang 发表于 2012-5-10 16:52:56

如何向后台窗口发送相对坐标点击和按键

希望能够在执行自动化操作的时候,用户依然能够处理别的事情,所以要对后台窗口进行自动化操作。注意,此窗口不能捕获到窗口里的控件。

希望各位大牛能给出一个例子,小弟不胜感激

xlj310 发表于 2012-5-10 16:59:30

Local $text = WinGetClassList("所需操作的窗口标题", "")
msgbox(0,"控件列表",$text)

一般这样可以列出很多控件出来,你在之后要用的时候在后面加1,2,3就行了。
比如有5个Button控件,你就可以尝试去点
controlclick("标题","内容","Button1")
controlclick("标题","内容","Button2")
controlclick("标题","内容","Button3")
controlclick("标题","内容","Button4")
controlclick("标题","内容","Button5")
我也是菜鸟,见笑了!

502762378 发表于 2012-5-10 17:04:00

关于自动化接触AU3的新手总会思考这个问题,我原来没有想出答案,现在也想不通

502762378 发表于 2012-5-10 17:04:03

关于自动化接触AU3的新手总会思考这个问题,我原来没有想出答案,现在也想不通

gunziyang 发表于 2012-5-10 17:10:36

Local $text = WinGetClassList("所需操作的窗口标题", "")
msgbox(0,"控件列表",$text)

一般这样可以列 ...
xlj310 发表于 2012-5-10 16:59 http://www.autoitx.com/images/common/back.gif

窗口没有控件啊(可能因为是自定义的窗口),就是一个窗体,总之我用au3info是没有能捕获控件

地平线 发表于 2012-5-10 17:19:41

本帖最后由 地平线 于 2012-5-10 18:05 编辑

回复 5# gunziyang
能说明白是什么窗口,哪一类控件吗?或者截个图看看。最近在用_SendMessage和_WinAPI,有点心得,或许能给你点意见。

gunziyang 发表于 2012-5-10 18:15:44

回复gunziyang
能说明白是什么窗口,哪一类控件吗?或者截个图看看。最近在用_SendMessage和_WinAPI,有 ...
地平线 发表于 2012-5-10 17:19 http://www.autoitx.com/images/common/back.gif

oracle 8i客户端的卸载程序

地平线 发表于 2012-5-10 19:09:46

本帖最后由 地平线 于 2012-5-10 19:15 编辑

回复 7# gunziyang
oracle 8i客户端的卸载程序
没用过也没见过这东西。下面的例子给你参考一下。顺便,彗星小助手也是个不错的工具。
#Include <Array.au3>
#Include <WinAPIEx.au3>
#include <SendMessage.au3>
Dim $hwnd
Const $class='ATL:005E9100';类名
Const $name='金山卫士 3.5 ';标题
$hwnd = _WinAPI_FindWindow($class,$name)
;MsgBox(0,"",$hwnd)
Opt('MustDeclareVars', 1)
Global $Data = _WinAPI_EnumChildWindows($hwnd,FALSE )
_ArrayDisplay($Data, '_WinAPI_Enum');所有子窗口或控件的句柄列表

Const $WM_RBUTTONDOWN = 0x204;右键按下
Const $WM_RBUTTONUP = 0x205;右键松开
Const $WM_LBUTTONDOWN = 0x0201;左键按下
Const $WM_LBUTTONUP = 0x0202;左键松开
_SendMessage($Data,0x0201,0,0);点击指定控件
_SendMessage($Data,0x0202,0,0)

gunziyang 发表于 2012-5-10 21:46:08

回复gunziyang

没用过也没见过这东西。下面的例子给你参考一下。顺便,也是个不错的工具。
地平线 发表于 2012-5-10 19:09 http://www.autoitx.com/images/common/back.gif


金山卫士我没有,我把你这例子用在Firefox上不成功(也没见有啥输出),能不能给个Firefox的例子

我在Firefox上的代码如下:
#Include <Array.au3>

#Include <WinAPIEx.au3>

#include <SendMessage.au3>

Dim $hwnd

Const $class='MozillaWindowClass';类名

Const $name='Mozilla Firefox ';标题

$hwnd = _WinAPI_FindWindow($class,$name)

;MsgBox(0,"",$hwnd)

Opt('MustDeclareVars', 1)

Global $Data = _WinAPI_EnumChildWindows($hwnd,FALSE )

_ArrayDisplay($Data, '_WinAPI_Enum');所有子窗口或控件的句柄列表



Const $WM_RBUTTONDOWN = 0x204;右键按下

Const $WM_RBUTTONUP = 0x205;右键松开

Const $WM_LBUTTONDOWN = 0x0201;左键按下

Const $WM_LBUTTONUP = 0x0202;左键松开

_SendMessage($Data,0x0201,0,0);点击指定控件

_SendMessage($Data,0x0202,0,0)

lxwlxwayy 发表于 2012-5-10 23:10:07

张嘴比张睛要舒服的都

地平线 发表于 2012-5-10 23:20:04

本帖最后由 地平线 于 2012-5-10 23:46 编辑

回复 9# gunziyang
我不清楚你最后要达到的目标是什么。那只是我提供的一个方法,但并不是万能的。
最后一句应该是:
If IsArray($Data) Then
      _ArrayDisplay($Data, '_WinAPI_Enum');所有子窗口的句柄列表
EndIf
只有当$Data是数组类型时才输出列表,FireFox的话用msgbox输出是0。
PS:话说FireFox的那个是网页来的吧,没有控件。{:face (245):}

gunziyang 发表于 2012-5-11 08:07:28

回复gunziyang
我不清楚你最后要达到的目标是什么。那只是我提供的一个方法,但并不是万能的。
最后一 ...
地平线 发表于 2012-5-10 23:20 http://www.autoitx.com/images/common/back.gif

我的目的就是给后台窗口发送点击和按键啊

Firefox本身并不是网页吧

地平线 发表于 2012-5-11 12:43:14

我的目的就是给后台窗口发送点击和按键啊
Firefox本身并不是网页吧
这个我就不懂了,还是请教大神们吧。或者换其他方法。
页: [1]
查看完整版本: 如何向后台窗口发送相对坐标点击和按键