2011-10-31 60 views
1

我需要獲得當前前臺窗口句柄,並將其與保存之前的窗口句柄查看它們是否匹配,但我不能使用前臺窗口標題,因爲經常標題變化比較當前前臺窗口辦理

這是我使用比較標題

char cWindow[MAX_PATH]; 
char nWindow[MAX_PATH]; 
GetWindowTextA(GetForegroundWindow(), cWindow, sizeof(cWindow)); 


//Later in code 
GetWindowTextA(GetForegroundWindow(), cWindow, sizeof(cWindow)); 
if (strcmp(nWindow, cWindow) != 0) 
{ 
    fputs("found!",file); 
    strcpy(nWindow, cWindow); 
} 

回答

2

當你要檢查的前臺窗口是否已經改變,你應該比較窗口直接處理,沒有他們的頭銜。

HWND oldForegroundWindow = GetForegroundWindow(); 

HWND newForegroundWindow = GetForegrundWindow(); 
if (newForegroundWindow != oldForegroundWindow) { 
    ForegroundWindowHasChanged(oldForegroundWindow, nForegroundWindow); 
    oldForegroundWindow = newForeroundWindow; 
} 
+0

這工作!謝謝! – Brofessional

1

Errr你不設置nWindow任何東西都來電將被設置CWindow的代碼。你認爲這可能是一個問題嗎?

+0

我改變第一個 GetWinowTextA的(GetForegroundWindow(),nWindow,的sizeof(nWindow)); 並仍然存在相同問題 – Brofessional

+0

建議您執行以下操作:在第一個GetWindowTextA放置一個fprintf(文件「,發現nWindow爲:%s \ n」,nWindow);並在第二個之後,你把fprintf(文件,「發現cWindow是:%s \ n」,cWindow);並看看它需要你(也是什麼文件的價值?) –