我正在嘗試調試用C#編寫的一個小測試驅動程序。它打開了我們的測試應用程序的幾個實例。測試應用程序連接到服務器,如果連接成功,則在標籤中顯示「REMOTE_CONNECTED」。因此,在嘗試向測試應用程序提供數據之前,測試驅動程序正在尋找。爲什麼FindWindowEx在我的窗口中找不到標籤?
下面的代碼是什麼樣子:
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中運行此設置並設置了一些斷點,那麼它似乎工作。所以它似乎不是一個邏輯缺陷,而是一些時間或爭用問題。
請記住,FindWindowEx搜索'GetWindowText'字符串,而不是'WM_GETTEXT'值。 –
Spy ++可以真正幫助追蹤這樣的東西。 –
檢查這個帖子http://stackoverflow.com/questions/5241984/findwindowex-from-user32-dll-is-returning-a-handle-of-zero-and-error-code-of-127 – volody