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

twtyypmb123 2016-04-20 12:14:27

如图,这个调用某个dll弹出的,用spy++看没标题,类名也很奇怪,怎么获取?
...全文
1059 8 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
twtyypmb123 2016-05-24
  • 打赏
  • 举报
回复
引用 5 楼 rocmemory 的回复:
你想用程序获取这个窗口,总要有一些依据吧(或者说是已知条件)。定位到一个窗口,有这么几种方法: 1、通过标题或类名,最直观,调用api即可 2、如果标题和类名是变动的,那么就去找其它共同点,窗口是由哪个进程弹出的总能确定吧,所以就遍历取得这个进程的所有窗口,再根据所谓“很奇怪的”类名进行相似筛选 3、如果你没有办法获取到进程,又不想通过遍历所有窗口进行比对(可能你觉得这样做太麻烦),那就只剩下一个已知条件了:你看到了它,想捕捉它。但很遗憾,从编程的角度来说,仅仅是看到了它是无法当成确切条件的 总之,你的要求有点像这个例子:我在100多个人中看到一个人,让你帮我找出来,但是我不告诉你他的特点、性别、身高等,仅仅是让你把“他”找出来,你有办法吗?你是不是很奇怪,到底让我找什么样的人呢?你编写的程序也觉得这个帖子很奇怪。
联系就是这个窗体是我通过调用dll得到的,应该根据我的调用程序的句柄有关吧,可以根据这个着手么?
twtyypmb123 2016-05-24
  • 打赏
  • 举报
回复
引用 7 楼 rocmemory 的回复:
可以根据句柄取得进程id GetWindowThreadId
这个方法没有用过,不过自己已经弄出来了,首先搞清楚窗体之间的关系child、sibling、parent、owner,具体可以看http://blog.csdn.net/dahaii0/article/details/6967848 其实找到方法了也很简单.当对话框弹出时,用EnumWindows遍历所有顶级窗口,在回调函数中用GetParent得到它的owner窗体的句柄,和主窗体一对比便知 不过也要感谢各位给的启发
为轮子而生 2016-05-24
  • 打赏
  • 举报
回复
可以根据句柄取得进程id GetWindowThreadId
为轮子而生 2016-04-20
  • 打赏
  • 举报
回复
你想用程序获取这个窗口,总要有一些依据吧(或者说是已知条件)。定位到一个窗口,有这么几种方法: 1、通过标题或类名,最直观,调用api即可 2、如果标题和类名是变动的,那么就去找其它共同点,窗口是由哪个进程弹出的总能确定吧,所以就遍历取得这个进程的所有窗口,再根据所谓“很奇怪的”类名进行相似筛选 3、如果你没有办法获取到进程,又不想通过遍历所有窗口进行比对(可能你觉得这样做太麻烦),那就只剩下一个已知条件了:你看到了它,想捕捉它。但很遗憾,从编程的角度来说,仅仅是看到了它是无法当成确切条件的 总之,你的要求有点像这个例子:我在100多个人中看到一个人,让你帮我找出来,但是我不告诉你他的特点、性别、身高等,仅仅是让你把“他”找出来,你有办法吗?你是不是很奇怪,到底让我找什么样的人呢?你编写的程序也觉得这个帖子很奇怪。
bigbaldy 2016-04-20
  • 打赏
  • 举报
回复
引用 2 楼 x3230835 的回复:
进程id怎么判断?判断id怎么用呢?
DWORD GetWindowThreadProcessId(HWND hWnd,LPDWORD lpdwProcessId); hWnd:窗体句柄 lpdwProcessId:你要的进程ID的指针 return:窗口所属线程ID
bigbaldy 2016-04-20
  • 打赏
  • 举报
回复
补充一句,判断窗体大小也行,总之,你眼睛是怎么判断出来的,你把判断的过程写成代码即可
twtyypmb123 2016-04-20
  • 打赏
  • 举报
回复
引用 1 楼 rocmemory 的回复:
遍历所有窗口,判断进程id,同时检查类名中相似的部分
进程id怎么判断?判断id怎么用呢?
为轮子而生 2016-04-20
  • 打赏
  • 举报
回复
遍历所有窗口,判断进程id,同时检查类名中相似的部分

111,094

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧