我试图使用此代码在C ++上获取'Calculator'的进程ID。
#define _WIN32_WINNT 0x0501
#include <windows.h>
#include <iostream>
using namespace std;
int main(){
int wait;
//Handle - Window name
HWND windowHandle = FindWindowA(NULL, "Calculator");
//Getting ProcessID
DWORD processID;
GetWindowThreadProcessId(windowHandle, &processID);
if(processID){
cout << "Process ID is: " << processID << endl;
cin >> wait;
} else {
cout << "Unable to find the process id !" << endl;
cin >> wait;
}
return 0;
}
好的,所以我知道你在想什么,我正在使用GetWindowThreadProcessId(),我怎么期望得到实际的processID,我研究了一下,这就是我发现的。
我想通过使用IF检查FindWindow的句柄来验证窗口是否打开,然后如果可用则获取它的processID。
谢谢!
我正在做的是检查它是否正在获取processID我cout << processID << endl;
这是错误的,这就是原因。整行代码GetWindowThreadProcessId(windowHandle, &processID);
是抓取processID的,因此我需要在cout
中将整个函数/代码行存储在DWORD中。所以我所做的就是编辑这一行GetWindowThreadProcessId(windowHandle, &processID);
到此:
DWORD actualProcID = GetWindowThreadProcessId(windowHandle, &processID);
其中最大的问题是if条件。 这是它应该如何(它的工作原理):
DWORD processID;
DWORD actualProcId = GetWindowThreadProcessId(windowHandle, &processID);
if(actualProcId){ //We test the DWORD we declared.
cout << "Process ID is: " << processID << endl; // If true, we cout the process id
cin >> wait;
} else {
cout << "Unable to find the process id !" << endl;
cin >> wait;
}
感谢您的时间!