如何枚举所有进程及其关系窗口标题和进程名称
答案 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
}
}