2011-10-31 47 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);并看看它需要你(也是什么文件的价值?) –