[英]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.