当前位置: 代码迷 >> C# >> 从多个雷同窗体中获取指定窗体句柄
  详细解决方案

从多个雷同窗体中获取指定窗体句柄

热度:349   发布时间:2016-04-28 08:40:18.0
从多个相同窗体中获取指定窗体句柄?
如图: 点击链接弹出 打开对话框。
假设标题不是固定的,唯一能够确认的就是父窗体的句柄(这里父窗体就是这个浏览器)。

我使用findwindowex,无法获取到子窗体句柄:FindWindowEx(pTRwindows, IntPtr.Zero, "#32770", null);

用spy++发现 "打开对话框" 的父窗体是指向浏览器,但浏览器的子窗体中没有它.

我现在想的解决办法是枚举出所有系统#32770的窗体,然后使用API GetPrent得到它们的父窗体,如果父窗体等于浏览器,就锁定了我要的这个对话框。

那么问题是如何枚举出所有#32770的窗体。
非常谢谢。

------解决思路----------------------


那你有试过吗?、、、、

引用:
Quote: 引用:

FindWindowEx 是找寻嵌套窗口的 对话框是一个独立窗口 是桌面的子窗口 而不是浏览器的
而他的Owner是属于浏览器的 也就是GetParent
要遍历的话

IntPtr hWnd = IntPtr.Zreo;
while(IntPtr.Zreo == (hWnd = FindWindowEx(IntPtr.Zreo/*从桌面开始找寻*/,hWnd,null,"#32770"))){
    if(GetParent(hWnd) == 浏览器句柄)。。。。。
}

直接手打代码 可能有错误

道理是这样的,但FindWindowEx不可用遍历,它总是获取最后一个窗体。
  相关解决方案