2009-05-19 104 views
3

我希望能夠查詢某個函數併爲其指定一個processID或processName - 然後應返回truefalse該進程位於前臺或不。如何確定進程是否爲當前活動/前臺應用程序

因此,即使對Firefox的查詢將返回true(因爲現在我在FireFox中,輸入此),其他所有內容都應返回false



是,即使可能爲每一類型的應用程序(.NET,JAVA /擺動,純C++/Win32的UI)的?

  • 此問題僅適用於Windows。

回答

5

GetForegroundWindowGetWindowThreadProcessId應該讓你得到這些信息。

也就是說,如果你知道PID只是檢查它,這樣的功能:

bool IsForegroundProcess(DWORD pid) 
{ 
    HWND hwnd = GetForegroundWindow(); 
    if (hwnd == NULL) return false; 

    DWORD foregroundPid; 
    if (GetWindowThreadProcessId(hwnd, &foregroundPid) == 0) return false; 

    return (foregroundPid == pid); 
} 

這將爲使用核心的Win32庫在一定程度上其它任何應用程序 - 這將包括Windows窗體, WPF,原生Win32應用程序等。注意,這僅適用於在調用桌面和會話上運行的應用程序 - 例如,您不能使用它來確定其他用戶的應用程序是否處於前臺。

+0

謝謝,你知道這是否適用於DirectX/OpenGL應用程序? – 2009-05-19 18:27:03

相關問題