2014-12-30 166 views
0

我有一個窗口在單獨的線程中運行。我需要在另一個線程中獲取該窗口的句柄。得到窗口的句柄

我不能使用:: FindWindow API,因爲窗口名稱會改變,因爲我的應用程序可以用其他語言運行。另外,我無權訪問用於窗口名稱的資源字符串。

我也不能使用:: GetActiveWindow,因爲調用線程ID和活動窗口線程ID是不同的。

請提出一些解決方案。

+0

['GetGUIThreadInfo'](http://msdn.microsoft.com/en-us/library/windows/desktop/ms633506(v = vs.85).aspx)似乎是一個合理的選擇,假設你有您的潛在客戶線程的ID。 – WhozCraig

+0

爲什麼你需要搜索它,如果你自己創建它。 [mfc中的窗口句柄](http://stackoverflow.com/questions/3255207/window-handle-in-mfc)。 – qwr

+0

該窗口不是由我自己創建的。它屬於一個不同的ocx。我需要在我的ocx中處理它。這兩個ocx都在相同的進程下運行。我如何獲得窗口的線程ID。 – user2338040

回答

0

不需要將窗口名稱傳遞給FindWindow函數。您可以傳遞NULL作爲窗口名稱,並僅使用lpClassName參數查找窗口。

MFC通常會自動分配窗口類名稱,但您可以通過使用AfxRegisterClass註冊唯一名稱並使用該註冊類名稱創建窗口來控制窗口的類名稱。