HWND按进程名称(无windowname)

时间:2018-03-18 12:06:26

标签: c++ winapi

是否可以通过进程名称从窗口获取function formatResult_User(item) { var markup = '@Html.Partial("_UserCardTemplate")'; return Mustache.render(markup, view); } ? 每次重启(随机windowname)时窗口的名称都会改变,如下所示:

image

我刚刚通过窗口名称找到了一些东西。

2 个答案:

答案 0 :(得分:1)

进程和窗口之间的连接并不明显。首先,一个进程可以有几个窗口。其次,看起来Windows API没有提供基于进程查找窗口的方法(我觉得很奇怪,因为你的截图显示了这一点)。

但是,您可以浏览所有打开的窗口并根据进程进行过滤。请参阅此问题并详细解答如何执行此操作:Find Window and change it's name

答案 1 :(得分:-3)

我找到了这个解决方案,但是我为一个进程ID获得了多个HWND

#include <Windows.h>

void GetAllWindowsFromProcessID(DWORD searchPID, std::vector <HWND> &wnds)
{
    HWND hCurWnd = NULL;
    do
    {
        hCurWnd = FindWindowEx(NULL, hCurWnd, NULL, NULL);
        DWORD processID = 0;
        GetWindowThreadProcessId(hCurWnd, &processID);
        if (searchPID == processID)
        {
            wnds.push_back(hCurWnd);
        }
    } while (hCurWnd != NULL);
}

int main()
{
    DWORD PID = 0x00001D7C;
    std::vector<HWND> HWND_List;
    GetAllWindowsFromProcessID(PID, HWND_List);

    return 0;
}