C#怎么获取这种窗口的句柄

.Net技术 码拜 8年前 (2016-03-09) 2572次浏览
C#怎么获取这种窗口的句柄
如图,这个调用某个dll弹出的,用spy++看没标题,类名也很奇怪,怎么获取?
解决方案

16

遍历全部窗口,判断进程id,同时检查类名中相似的部分

5

引用 2 楼 x3230835 的回复:

进程id怎么判断?判断id怎么用呢?

DWORD GetWindowThreadProcessId(HWND hWnd,LPDWORD lpdwProcessId);
hWnd:窗体句柄
lpdwProcessId:你要的进程ID的指针
return:窗口所属线程ID

5

补充一句,判断窗体大小也行,总之,你眼睛是怎么判断出来的,你把判断的过程写成代码即可

20

你想用程序获取这个窗口,总要有一些依据吧(或说是已知条件)。定位到一个窗口,有这么几种方法:
1、通过标题或类名,最直观,调用api即可
2、假如标题和类名是变动的,那么就去找其它共同点,窗口是由哪个进程弹出的总能确定吧,所以就遍历取得这个进程的全部窗口,再根据所谓“很奇怪的”类名进行相似筛选
3、假如你没有办法获取到进程,又不想通过遍历全部窗口进行比对(可能你觉得这样做太麻烦),那就只剩下一个已知条件了:你看到了它,想捕捉它。但很遗憾,从编程的角度来说,仅仅是看到了它是无法当成确切条件的
总之,你的要求有点像这个例子:本人在100多个人中看到一个人,让你帮本人找出来,但是本人不告诉你他的特点、性别、身高等,仅仅是让你把“他”找出来,你有办法吗?你是不是很奇怪,到底让本人找什么样的人呢?你编写的程序也觉得这个帖子很奇怪。

10

可以根据句柄取得进程id
GetWindowThreadId

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明C#怎么获取这种窗口的句柄
喜欢 (0)
[1034331897@qq.com]
分享 (0)