簡體   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