[英]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.