gpt4 book ai didi

c++ - 窗口标题C++如何获取随机标题的名称

转载 作者:行者123 更新时间:2023-12-03 07:15:36 24 4
gpt4 key购买 nike

因此,我正在开发一个程序,该程序将检测标题的窗口名称,该名称会不断更改当前使用的标题Gamebar-592d22(master)中的6个字符:

Hwnd hwnd = FindWindowA(NULL, WindowTitle);
然后通过hwnd发送鼠标输入。

最佳答案

您将无法为此使用FindWindow()。请改用 EnumWindows() 。在enum callback内部,使用 GetWindowText() 获取所提供的HWND的标题,检查其是否与您感兴趣的模式匹配,如果是,则根据需要使用HWND,例如:

BOOL CALLBACK MyEnumWindowsProc(HWND hwnd, LPARAM lParam)
{
char title[24] = {0};
GetWindowTextA(hwnd, title, 23);
int num;
if (sscanf(title, "Gamebar-%6x(master)", &num) == 1)
{
// use hwnd and lParam as needed...
}
return TRUE;
}

EnumWindows(&MyEnumWindowsProc, ...);
UPDATE :例如,鉴于您对发送鼠标消息以在找到的窗口内的坐标进行评论,您可以使用回调的 LPARAM将信息传递到回调中。例如:
  • 您可以在HWND中传递LPARAM变量的地址,如果找到了匹配的窗口,则将其HWND分配给该变量,然后可以在EnumWindows()退出时发送消息:

  • BOOL CALLBACK FindGamebarWnd(HWND hwnd, LPARAM lParam)
    {
    char title[24] = {0};
    GetWindowTextA(hwnd, title, 23);
    int num;
    if (sscanf(title, "Gamebar-%6x(master)", &num) == 1)
    {
    *reinterpret_cast<HWND*>(lParam) = hwnd;
    return FALSE;
    }
    return TRUE;
    }

    HWND hwnd = NULL;
    EnumWindows(&FindGamebarWnd, reinterpret_cast<LPARAM>(&hwnd));
    if (hwnd)
    SendMessage(hwnd, WM_LBUTTONUP, 0, MAKELPARAM(pt.x, pt.y));
  • 您可以在LPARAM中传递鼠标坐标,然后在找到匹配窗口时从回调中发送消息:

  • BOOL CALLBACK ClickGamebarWnd(HWND hwnd, LPARAM lParam)
    {
    char title[24] = {0};
    GetWindowTextA(hwnd, title, 23);
    int num;
    if (sscanf(title, "Gamebar-%6x(master)", &num) == 1)
    {
    SendMessage(hwnd, WM_LBUTTONUP, 0, lParam);
    return FALSE;
    }
    return TRUE;
    }

    EnumWindows(&ClickGamebarWnd, MAKELPARAM(pt.x, pt.y));

    关于c++ - 窗口标题C++如何获取随机标题的名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64548435/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com