【请问】各位老师,在下有一个关于获取窗口句柄的有关问题

【请教】各位老师,在下有一个关于获取窗口句柄的问题
首先,我说明一下这个问题产生的过程。
过程:
我本来的目的是想要监控一个外部软件里面label的text,如果这个label.text="信息:需要清理",那么我做的软件就会向CCleaner要求清理。
我的思路是这样的:
1、通过进程名获取进程pid(因为对象窗口的标题会变,所以不通过窗口标题操作)
2、根据进程pid获取窗口句柄(正在苦恼的)
3、遍历窗口里面的控件,如果object.text存在“信息”,那么我就会监控这个控件的text(利用timer)。(以前没试过,准备尝试)
4、如果text="信息:需要清理",那么我就重复1、2的步骤,然后遍历控件,找到一个控件的text="运行清理器(R)",然后点击他。
思路路上(有些操作以前没有尝试过,所以思路上有可能出现问题)

接着,我说一下我的查找资料的经历
经历:
一开始,我通过百度进行搜寻相关的资料,找到一些。我把那些资料上的内容迁移到我的代码里面去,并且进行修改和调试,但是依然是失败的。几番折磨,耐心大损。

最后,希望各位老师能帮助一下,在下不胜感激!(b(^o^)d)

------解决方案--------------------
首先搞清楚你要监控的label是什么,不同开发 语言的label不一样,有的没有句柄,你怎么找,有的不是text属性是caption属性,你怎么知道
------解决方案--------------------
你先用spy++看一下有没有这个句柄,类名叫什么

知道了进程句柄有api可以抓main window句柄的(不过我忘了是什么,你可以去找找)

还有process类自带这个功能
------解决方案--------------------
引用:
Quote: 引用:

首先搞清楚你要监控的label是什么,不同开发 语言的label不一样,有的没有句柄,你怎么找,有的不是text属性是caption属性,你怎么知道

很明显的是,我的确不清楚对象软件是什么语言开发的,还有用的是text还是caption。
很感谢老师你的提醒。
如果这样说的话,很麻烦。所以我们就不去讨论这个label有没有句柄,直接默认他是有句柄的,而且属性用的是text。
那么这种情况下,我们应该怎么做呢?
(PS:解决问题,我想一步一步解决,遇到的先解决,后来遇到的后来解决。如果这个label真的没有窗口,也就是没有句柄,那么我再想想其他方法。我想把有窗口的和没有窗口的、text和caption的解决方法都学一遍。)
b(^o^)d

PS:对于程序问题,最好举出你现在遇到的,而又解决不了的,理论这东西!!!
看例子,讲解,通俗易懂!
------解决方案--------------------
做过一个迅雷自动登录,说下自己的看法。可以考虑定位软件坐标截图识别文字,然后根据识别的文字,模拟点击软件界面处理按钮位置。当然最好的方法还是得到具体控件,仅供参考。
------解决方案--------------------
你现在卡在哪一步?思路没什么问题。
------解决方案--------------------
引用:
Quote: 引用:

你现在卡在哪一步?思路没什么问题。

我现在卡在如何通过进程Pid获取窗口句柄


http://www.cnblogs.com/qiuyi21/articles/1302732.html

http://support.microsoft.com/kb/242308/zh-cn

所以说这个东西是有api可以实现的,你网上随便找一下就有了。

还有不用api可以用process类,process实例有个属性叫mainwindow出来就是主窗口的handle