(c ++)GetWindowText返回除控制台本身以外的所有内容的空值

时间:2018-07-13 14:48:33

标签: c++ winapi callback console-application

我想创建一个简单的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;
}

0 个答案:

没有答案