lon91ong 发表于 2011-1-4 14:30:46

[已解决]如何取得某窗口内特定类型控件的句柄

本帖最后由 lon91ong 于 2011-1-6 12:30 编辑

kn007大侠给出了取得两个相同窗口句柄的方法,见这里
我还想进一步取得窗口内的控件句柄,请问大侠要怎么做呢?

比如两个相同的IE窗口中的Internet Explorer_Server控件的句柄


{:face (303):} 顺便再问一下,热键激发的函数动作怎么传递参数呢?
比如:F9对应funcTest(1),F10对应funcTest(2)

麻烦大侠了!

ceoguang 发表于 2011-1-5 10:54:37

Internet Explorer_Server是类名
用EnumWindows()列目标窗口所有控件,然后用GetDlgCtrlID对比ID,因为很多时候,类名是有重复的.当然,ID也有重复,但不会存在同一个类用同一个ID的可能.
例如下面的这个代码就是取同一窗口内所有的控件句柄及类名,包括隐藏的控件#include <WinAPI.au3>
#include <array.au3>
Global $aWindows, $hWnd
$hWnd = WinGetHandle("") ;最后一个活动的IE窗口的主句柄
$aWindows = _WinAPI_EnumWindows(False, $hWnd);
_ArrayDisplay($aWindows)

lon91ong 发表于 2011-1-5 15:34:10

还有些空间根本取不到ID的,怎么办?

sxd 发表于 2011-1-5 15:57:08

请参看 帮助文档 窗口标题与文本(高级)看不懂就看我签名里 有文章

hotkeyset是无法传递参数的 需要绕路

lon91ong 发表于 2011-1-5 20:48:40

本帖最后由 lon91ong 于 2011-1-5 20:51 编辑

回复 4# sxd

大侠的博文中提到"在au3里任何需要"窗口标题"的参数都可以使用"窗口句柄"来代替."
我遇到的
ControlClick($Hwnd,"","","main",1,200,600)
这个函数中,把$Hwnd用信息工具取得的句柄0x003A02EC代替就不好使,怎么回事呢?
直接用窗口名称或""就正常!

sxd 发表于 2011-1-6 01:41:36

HWnd ( 表达式 )

lon91ong 发表于 2011-1-6 12:30:04

大侠真是 一语点醒梦中人啊!
页: [1]
查看完整版本: [已解决]如何取得某窗口内特定类型控件的句柄