繁体   English   中英

为什么FindWindowEx无法在我的窗口中找到标签?

[英]Why isn't FindWindowEx finding the label in my window?

我正在尝试调试一些用C#编写的测试驱动程序。 它打开了我们拥有的测试应用程序的多个实例。 测试应用连接到服务器,连接成功后,在标签中显示“ REMOTE_CONNECTED”。 因此,测试驱动程序在尝试将数据输入到测试应用程序之前正在寻找它。

代码如下所示:

  Console.Out.WriteLine("MAIN HANDLE IN GETCONN: " + Hwnd);
  //Attempt to find if we have have connected to the remote server
  IntPtr connHwnd = FindWindowEx(Hwnd, IntPtr.Zero, null, "REMOTE_CONNECTED");

这个connHwnd总是会返回一个IntPtr.Zero,打印到控制台的Hwnd是我期望测试应用程序的句柄。 测试驱动程序处于循环状态一段时间,反复调用上面的代码,直到找到该标签。 我在屏幕上看到标签显示“ REMOTE_CONNECTED”,但该功能找不到它。

此外,其他人也可以在XP上使用它(而我在Windows 7上)。

最后,如果我在Visual Studio中运行它并设置一些断点,那么它似乎可以工作。 因此,这似乎不是逻辑缺陷,而是某种时序或争用问题。

我的问题竟然与此问题类似:

为什么无法获得启动过程的主窗口句柄?

我的MainWindowHandle未设置为我期望的窗口(我使用Spy ++弄清楚了,谢谢Rob P.!)。 因此,我使用EnumWindows编写了一些代码来查找我要查找的窗口(请参阅链接文章中的约书亚的答案),然后使用该窗口句柄传递给FindWindowEx,一切按预期进行。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM