找回密码
 加入
搜索
查看: 4483|回复: 6

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

  [复制链接]
发表于 2011-1-4 14:30:46 | 显示全部楼层 |阅读模式
本帖最后由 lon91ong 于 2011-1-6 12:30 编辑

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

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


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

麻烦大侠了!
发表于 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("[CLASS:IEFrame]") ;最后一个活动的IE窗口的主句柄
$aWindows = _WinAPI_EnumWindows(False, $hWnd);
_ArrayDisplay($aWindows)
 楼主| 发表于 2011-1-5 15:34:10 | 显示全部楼层
还有些空间根本取不到ID的,怎么办?
发表于 2011-1-5 15:57:08 | 显示全部楼层
请参看 帮助文档 窗口标题与文本(高级)  看不懂就看我签名里 有文章

hotkeyset是无法传递参数的 需要绕路
 楼主| 发表于 2011-1-5 20:48:40 | 显示全部楼层
本帖最后由 lon91ong 于 2011-1-5 20:51 编辑

回复 4# sxd

大侠的博文中提到"在au3里任何需要"窗口标题"的参数都可以使用"窗口句柄"来代替."
我遇到的
ControlClick($Hwnd,"","[CLASS:Internet Explorer_Server; INSTANCE:1]","main",1,200,600)
这个函数中,把$Hwnd用信息工具取得的句柄0x003A02EC代替就不好使,怎么回事呢?
直接用窗口名称或"[CLASS:IEFrame]"就正常!
发表于 2011-1-6 01:41:36 | 显示全部楼层
HWnd ( 表达式 )
 楼主| 发表于 2011-1-6 12:30:04 | 显示全部楼层
大侠真是 一语点醒梦中人啊!
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-5-3 10:19 , Processed in 0.094816 second(s), 23 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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