Chinaunix首页 | 论坛 | 博客
  • 博客访问: 318549
  • 博文数量: 80
  • 博客积分: 773
  • 博客等级: 军士长
  • 技术积分: 799
  • 用 户 组: 普通用户
  • 注册时间: 2011-09-24 23:52
个人简介

victory for prepared

文章分类

全部博文(80)

文章存档

2024年(2)

2023年(1)

2022年(2)

2021年(1)

2018年(8)

2017年(3)

2016年(20)

2015年(12)

2013年(5)

2012年(25)

2011年(1)

我的朋友

分类: WINDOWS

2012-08-01 17:17:48

如何获得想要的应用程序的窗口句柄?
使用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) |
1

上一篇:键盘模拟函数

下一篇:由光盘系统到测控

给主人留下些什么吧!~~