[英]Window title C++ how to get the name of a randomizing title
所以我正在开发一个程序来检测标题的窗口名称,该标题的窗口名称不断更改我目前使用的标题 Gamebar-592d22(master) 中的 6 个字符:
Hwnd hwnd = FindWindowA(NULL, WindowTitle);
我通过 hwnd 发送鼠标输入。
您将无法为此使用FindWindow()
。 请改用EnumWindows()
。 在枚举回调中,使用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, ...);
更新:例如,鉴于您关于向找到的窗口内的坐标发送鼠标消息的评论,您可以使用回调的LPARAM
将信息传递到回调中。 例如:
LPARAM
传递HWND
变量的地址,如果找到匹配的窗口,则将其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));
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.