首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >FindWindowEx找不到窗口句柄

FindWindowEx找不到窗口句柄
EN

Stack Overflow用户
提问于 2010-02-04 02:50:00
回答 2查看 1.8K关注 0票数 1

我试图在对话框一打开就找到它的句柄。

现在,只要对话框打开,我就会尝试在一个单独的线程中为该对话框调用FindWindowEx,但它返回NULL。

然后,我在调用FindWindowEx之前进行了一些睡眠。在睡眠后的一段时间内它会起作用。

看起来甚至在创建对话框之前就调用了FindWindowEx,睡眠有助于创建对话框,因此有时它会起作用。

现在我在睡眠中设置了一些随机值。而且它看起来不是一个好的方法,因为它随时都可能失败。

是否有任何完整的证明方法,以便我可以在每次通过FindWindowEx处理,而不是使线程进入睡眠状态。

EN

回答 2

Stack Overflow用户

发布于 2010-02-04 03:35:35

如果您正在寻找的对话框是您的对话框--也就是说,您控制代码--那么您可以从您的对话框向您的观看应用程序发送一条消息,说:“哦,你好!”

如果对话框不是你的,并且你不想旋转,你可以在WM_CREATE消息上使用create a Windows hook

票数 2
EN

Stack Overflow用户

发布于 2010-02-04 02:59:32

一种非常简单的解决方案是在循环中重复调用FindWindowEx

代码语言:javascript
复制
HWND h = NULL;
while (1) {
      h = FindWindowEx(...);
      if (h) {
         break;
      } 
      Sleep(100);
   }

这并不是万无一失的--如果对话框永远不会打开,或者关闭得太快(尽管这是不太可能的),它就会无限循环。为了捕捉这两种情况,让主线程(创建和运行对话框)维护一个简单的bool属性,工作线程将查询该属性,以确定周围是否仍有对话框。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2194533

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档