我想创建一个简单的c ++控制台程序,该程序可让用户输入进程的PID,该程序将返回与该PID相关的窗口标题。如果不匹配,则默认为“无效”。
我的问题是,除了我输入控制台本身的PID以外,GetWindowText函数似乎给了我一个空值。
在进入GetWindowText函数之前,该程序似乎一直在起作用。
如果有人能帮助我解决这个问题,我将不胜感激。 我是编程新手,如果这是一个愚蠢的问题,请对不起。 预先感谢!
#include "stdafx.h"
#include <windows.h>
#include <stdio.h>
#include <psapi.h>
#include <iostream>
using namespace std;
int flag = 0;
WCHAR windowtitle[64] = L"Invalid";
DWORD inputpid;
BOOL CALLBACK EnumWindowsProc(HWND handle, LPARAM notinuse) {
DWORD gottenpid;
LPDWORD gottenpidpointer = &gottenpid;
GetWindowThreadProcessId(handle, &gottenpid);
if (gottenpid == inputpid) {
GetWindowText(handle, windowtitle, _countof(windowtitle));
wprintf(L"The window title is: %ls.\n", windowtitle);
flag = 1;
return false;
}
return true;
}
int wmain(int argc, WCHAR **argv) {
cout << "input pid:\n";
cin >> inputpid;
EnumWindows(EnumWindowsProc, NULL);
if (flag == 0) {
wprintf(L"The window title is: %ls.\n", windowtitle);
}
return 0;
}