本帖最后由 倚栏听风 于 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 都成功了。 可是,程序里却不是这样的。
到了这里,我再一次晕了。。。
难道是我的方向错了????????? 再次请教各位大大。。。。。 |