2012-01-07 74 views
0

我想顯示的對話框的標題:獲取當前窗口的句柄給GetWindowText?

HWND hWnd = ::GetActiveWindow(); 
char cc[101]; 
::GetWindowText(hWnd,cc,100); 
MessageBox(cc); 

但結果產生一個空白的「」。

不知道怎麼回事?

+0

好像設計很差。如果一個模塊需要與一個窗口進行交互,應該給它一個句柄,而不必猜測。 – 2012-01-07 04:09:43

回答

1

根據MSDN

檢索窗口句柄連接到調用線程的消息隊列中的活動窗口。

這意味着如果您從中調用函數的線程不擁有任何窗口,則該函數將失敗。

你可能想用GetForegroundWindow代替。

0

這可能會晚點,但無論如何。如果您想要隨時獲取系統上的當前(活動)窗口,最好的方法是使用在DLL中實現的過程,然後安裝調用此過程的全局鉤子。

下列資源是非常有幫助的:

  1. Creating and using your DLL
  2. An overview on Hooks