【发布时间】:2015-09-10 02:00:39
【问题描述】:
我目前正在使用 C++ 开发一个项目,我想做的是获取所有正在运行的可用进程以及它们的标题,但目前我只能跟踪它们的处理程序并计算它们,而不是取他们的头衔。
BOOL CALLBACK EnumWindowsProc(HWND hWnd, LPARAM lParam);
int i;
string hwndTitle;
LPTSTR WindowTitle;
int length = 0;
int getHWND()
{
std::cout << "Finding all open windows\n";
if(EnumWindows(EnumWindowsProc, 0)) {
std::cout << i << " windows are open\n"<<hwndTitle<<"\n"<<"Call was successful...\n" << std::endl;
std::cin.get();
} else {
std::cout << "Call was unsuccessful...\n" << std::endl;
std::cin.get();
}
return 0;
}
BOOL CALLBACK EnumWindowsProc(HWND hWnd, LPARAM lParam) {
i++;
HWND WindowHandle;
WindowHandle = GetForegroundWindow();
length = GetWindowTextLength (hWnd);
hwndTitle = GetWindowText(hWnd , WindowTitle , length);
return true;
}
【问题讨论】:
-
并非所有进程都有窗口或标题。你想用这些做什么?
-
我正在开发一个类似的任务管理器应用程序。我是一个简单的标题。
-
你没有回答我的问题。
-
问题包括:
WindowTitle从未分配。GetWindowText不返回string。回调函数接收到HWND,因此WindowHandle = GetForegroundWindow()适得其反。另外:.I's a simple header.是什么意思?