找回密码
 加入
搜索
查看: 10107|回复: 25

[GUI管理] 窗口信息获取不到控件ID的奇怪问题。。。。【问题解决】 谢谢大家。。。

 火.. [复制链接]
发表于 2010-5-12 09:25:28 | 显示全部楼层 |阅读模式
本帖最后由 倚栏听风 于 2010-5-14 07:26 编辑

实在是奇怪的问题,百度了半天,可还是没有一点头绪,请教各位大大,还是直接上图吧。


我是要修改这个控件的值。但是却无法获取控件ID。


第一张图显示的是我用 窗口信息工具捕获的信息。
乍一看很正常,有控件ID 有高级类名称。 可,这只是个影子。 是骗人的,是不真实的,是在欺骗偶这个菜菜的感情的。
当使用 控件ID 201 或者是 CLASS:Static;instance:1 的时候,ControlSetText 是可以正常使用的。 但就像我刚才说的,这都是假的。

当点击这里的时候,这里会变成可编辑的,也就是如下图这样。

然后在这里输入字符,就可以改名字了。
可是然后呢,我用第一张图里获取的数据,使用 controlsettext 修改的时候。。。。。 奇迹,出现了。


简单的说,当我手动点击并输入数据的时候,上图和上上图是一样的。
当我用 controlsettext 和我亲爱的 控件ID201 的时候,可编辑框里的内容和上图显示的内容,是不同的。

好吧,我承认,这个算不得什么奇迹。。。  可是,接下来。。。。 将是见证奇迹的时刻。。。。。




这是在可编辑框下,我用窗口信息工具获取到的数据。。。
请注意,控件ID是空的。。。。 然后有朋友就会说了,不是还有高级类名称吗? [CLASS:Edit;INSTANCE:1]
如果你也想这么说,那么。。。。。请看下图。。。。



对,没错,998。。。。您只需要九百九十八元,即可得到。。。。     可是得到什么呢????
额,其实我是想说,你没看错,这是另外一个控件,可是,控件ID同样是空的,高级类名称呢? 竟然相同?
于是,我尝试了一下 controlsettext ($title , " [CLASS:Edit;INSTANCE:1]" , "奥特曼" )  ,对,没错,是尝试。。。 因为像我这样的菜鸟,一般都是直接用控件ID的。   好吧,不废话了,可结果呢?   这两个可编辑框的内容都没有发生改变。。。。   发生改变的。是下面“输入数字ID进入频道”的编辑框。
于是呢?我就继续用窗口信息工具获取了一下下面这个编辑框的信息。。。。
结果,我惊了。。。。。


华丽丽的,控件ID出来了, 105 我很喜欢的数字,因为 10/5=看帖不回贴的。。。
额,上面说到我惊了,那,我惊讶的就是,[CLASS:Edit;INSTANCE:1]        
竟然出现三个 [CLASS:Edit;INSTANCE:1]
到了这里,我彻底的不解了。。。


忽然。。。。
我看到了它------------------------------------------ 类:LabelEditWnd
说到这里,我有两个不解的问题, 为什么这里的基本窗口信息里面没有了 标题呢? 难道是因为标题不正确,所以我刚才的 controlsettext 失败?
还有,这个 LabelEditWnd 究竟是何方大神????
经过一番百度。。。。。
http://msdn.microsoft.com/cn-zh/library/84zbe4z7
貌似,是 treeview 的一个属性。。。  看其内容,貌似刚才那两个控件,都是。。。 treeview 下的。。。。额,那个什么?

额,到了这里,我是彻底的不解了,彻底的没辙了,彻底的困了,彻底的。。。。。那个什么了。

所以就发帖子请教大家啦。。。。   希望大家能指点小弟一二。。。 我是实在没线索了。。。 唉,菜呀菜。。。
即便是不知道怎么办,也请各位大大顺便顶一下小弟的帖子,小弟在此先谢了。。。。









--------------------------------------进度1-----------------------------------------

上回书说到.........
呵呵,在窗口信息工具里,显示的是没有窗口标题的,且,窗口句柄也发生了改变,于是,我就在想,难道这个编辑框是在另一个窗体中?
于是我下载了一个窗口信息工具(window explere)来查看,结果发现,它果真是在另一个窗体中。 隐藏的
_WinAPI_FindWindow("labeleditwnd","")  获取到类名称为 labeleditwnd ,标题为空的 窗口句柄。

WinGetClassList(_WinAPI_FindWindow("labeleditwnd","")) 获取到该窗体内的所有控件列表。。。 得到一个 edit 控件。
哇哈哈,找到了,这个就是那个编辑框的控件了。

可是,ControlSend 和 ControlSetText 都不支持以句柄来操作,所以,我们可以用 winsettitle 来改变标题。
窗口标题 要修改的窗口的标题.参考标题特殊定义.    winsettitle 是支持句柄的。
$From_hwnd = _WinAPI_FindWindow("labeleditwnd","")
winsettitle($From_Hwnd , "" , "Title")
可问题出现了。
ControlSend("Title","","[CLASS:Edit; INSTANCE:1]","Hello World!")  返回值为1 ,也就是运行成功,可事实上,却没有正确的修改其内容。
ControlSettext("Title","","[CLASS:Edit; INSTANCE:1]","Hello World!") 返回值同样为1,也是一样,没有正确的修改其内容。。。。

可是,真的没有修改成功吗?
打开 window explere 却发现,该编辑框的内容,每次都成功被编辑了。 无论是 send 还是 settext 都成功了。 可是,程序里却不是这样的。

到了这里,我再一次晕了。。。

难道是我的方向错了????????? 再次请教各位大大。。。。。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入

×

评分

参与人数 1金钱 +10 收起 理由
afan + 10 感谢主动将修改帖子分类为[已解决],请继续 ...

查看全部评分

 楼主| 发表于 2010-5-12 10:35:50 | 显示全部楼层
没人顶,愁了,自己顶一个。。。。
希望睡醒了能有回复吧。
发表于 2010-5-12 10:38:00 | 显示全部楼层
对这个没有研究!等待高人来吧!
发表于 2010-5-12 10:40:35 | 显示全部楼层
可以用句柄
 楼主| 发表于 2010-5-12 11:12:44 | 显示全部楼层
可以用句柄
guland 发表于 2010-5-12 10:40



嗯,用句柄? 是用 sendmessage 或者是 posemessage 吗?
能给个详细的用法吗?

还有,句柄不是随机的吗?关闭窗口就失效了。  有什么办法可以获取指定控件的句柄吗? 特征是个问题。
发表于 2010-5-12 11:37:51 | 显示全部楼层
回复 5# 倚栏听风


    那没有办法了,有很多控件AU3都获取不到控件信息的
发表于 2010-5-12 12:54:38 | 显示全部楼层
恩,也越到相类似的问题...
 楼主| 发表于 2010-5-12 16:06:42 | 显示全部楼层
回复  倚栏听风


    那没有办法了,有很多控件AU3都获取不到控件信息的
guland 发表于 2010-5-12 11:37



    获取不到控件信息,并不代表着无法用程序来设置控件吧。
 楼主| 发表于 2010-5-12 17:21:08 | 显示全部楼层
求救各位大大呀。
发表于 2010-5-12 17:30:14 | 显示全部楼层
没办法就模拟鼠标操作吧
 楼主| 发表于 2010-5-12 20:45:32 | 显示全部楼层
鼠标模拟严重影响正常操作呀。
发表于 2010-5-13 08:25:40 | 显示全部楼层
回复 8# 倚栏听风


    不要不服气,也许你厉害,你可以搞定,世上没有什么绝对的事情
 楼主| 发表于 2010-5-13 14:54:32 | 显示全部楼层
........................  版主大大,我不是那个意思,我只是觉得,应该有办法的吧。
发表于 2010-5-13 17:11:16 | 显示全部楼层
“ControlSend 和 ControlSetText 都不支持以句柄来操作” 刚好相反,用句柄操作更好~!
另外,如果无效的话还可以先 ControlClick() 操作一下(同样是支持句柄的)。
 楼主| 发表于 2010-5-13 17:39:38 | 显示全部楼层
本帖最后由 倚栏听风 于 2010-5-13 17:44 编辑

回复 14# afan


    支持???? 我惆怅,帮助文档里面没写呀。 我还以为不支持呢,我去试一下。


学习了,果真可以,可,即便可以,也依然是无效,最多是节省了两行代码。无需更改标题了。 直接就可以操作。


获取控件,在这里可以使用 findwindowex 。
FindWindowEx
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-6-11 09:28 , Processed in 0.093146 second(s), 21 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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