如何枚举所有进程及其关系窗口标题和进程名称

时间:2011-01-27 09:36:00

标签: c++

如何枚举所有进程及其关系窗口标题和进程名称

2 个答案:

答案 0 :(得分:1)

我希望我理解“它的关系”是什么意思。您可以使用EnumProcesses枚举系统上的所有进程ID,并且可以使用EnumWindows枚举系统中的所有顶级窗口(然后使用GetWindowText检索标题) 。要在两者之间进行关联,请使用GetWindowThreadProcessId

答案 1 :(得分:1)

枚举窗口:

#include <Windows.h>
#include <vector>
#include <string>

struct WindowInfo
{
    HWND m_hWnd;
    string m_title;
    WindowInfo(HWND hwnd, string title) : m_hWnd(hwnd), m_title(title) {}
};
BOOL CALLBACK EnumWindowsProc(HWND hwnd,LPARAM lParam)
{
    vector<WindowInfo*> & windows = *(vector<WindowInfo*>*)lParam;
    char title[256];
    GetWindowTextA(hwnd, title, 256);
    windows.push_back(new WindowInfo(hwnd,title));
    return TRUE;
}
int main() 
{
    vector<WindowInfo*> windows;
    BOOL ret = EnumWindows(EnumWindowsProc, (LPARAM) &windows);
    if ( ret ) 
    {
        //windows have windowinfo of all enumerated windows
    }        
}