从FindWindow句柄获取ProcessID - C ++

时间:2016-11-02 22:17:39

标签: c++ windows pid handle

我试图使用此代码在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;
}

感谢您的时间!

0 个答案:

没有答案