如何获得想要的应用程序的窗口句柄?
使用FindWindowEx函数,使用这个函数可以通过遍历的方法得到自己想要的窗口。
然后呢,得到自己想要的窗口之后呢?能不能获取这个窗口的相关信息呢?比如有几个功能按键,尺寸多少,窗口左上角的坐标是多少啊,窗口是否可以拉伸啊等等。
如果不能对窗口进行操作的话,那就只能自己先读取相应的窗口信息,再看看如何办了。
如果想对介入其他程序的运行的话,貌似就相当于破解软件了。
曾今用过ANSYS这个软件,使用图形化的界面可以构造实体然后做力学分析,但是也可以通过log文件(一个文本文本件)来实现这些功能,就相当于把繁琐的图形化界面操作用语言写出来,如果什么地方有问题可以直接修改,非常方便。但是不是所有的软件都有这个功能的,如果有的话,那就太好了,对于一些需要人来操作的软件来说,如果可以使用程序代替繁琐的重复性劳动的话,将是非常棒的事情。
——————————————————————————————————
2014年6月26日
临近毕业,干点私活。获取一个商业应用程序的界面显示的信息并做相应的处理,处理的范围仅对数据进行获取及统计,并不涉及到将自己的数据注入该应用程序。网上搜了搜,再根据上面说的一些操作,将大致的解决思路罗列下来。“温故而知新,可以为师也”。
1,根据进程名称获取进程ID2,函数GetProcessesByName()。
2,使用EnumWindows(),遍历所有的窗口句柄。根据窗口句柄使用GetWindowThreadProcessId(),获取进程ID1。将此ID1与根据进程名获取的ID2进行比较,如果相同则证明该窗口句柄为目标窗口。
3,获得了目标窗口的句柄后,通过EnumChildWindows(), 获取所有子窗口的句柄。因为遍历的顺序是一样的,所以可以根据遍历的次序判断哪个窗口是自己需要的窗口,这主要针对很多窗口的类名相同且标题为空的情况。
4,确定了获得的子窗口是自己需要的窗口,再使用对应的获取信息方法获取相应的信息。
如获取窗口标题:GetWindowText()
获取列表内容:SendMessage(列表窗口句柄,获取内容的命令字,参数0,参数1);
阅读(2133) | 评论(0) | 转发(0) |