gpt4 book ai didi

c++ - 试图从 Windows API 获取 Chrome 应用程序窗口的高度和宽度?

转载 作者:行者123 更新时间:2023-11-28 02:05:10 25 4
gpt4 key购买 nike

我正在尝试从 Windows 的控制台应用程序获取 Chrome 窗口的尺寸,但我似乎无法从 Win32 API 获取它。

这是我到目前为止所做的:

BOOL CALLBACK EnumWindowsProcMy(HWND hwnd,LPARAM lParam)
{
DWORD lpdwProcessId;
GetWindowThreadProcessId(hwnd,&lpdwProcessId);
if(lpdwProcessId==lParam)
{
g_HWND=hwnd;
return FALSE;
}
return TRUE;
}

int _tmain(int argc, _TCHAR* argv[])
{
charArray = "chrome.exe";

// getting process id from name
PROCESSENTRY32 entry;
entry.dwSize = sizeof(PROCESSENTRY32);
HANDLE snapshot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, NULL);

if (Process32First(snapshot, &entry) == TRUE)
{
while (Process32Next(snapshot, &entry) == TRUE)
{
CString strProcessName = entry.szExeFile;

//if (stricmp(entry.szExeFile, charArray) == 0)
if (strProcessName == charArray)
{
HANDLE hProcess = OpenProcess(PROCESS_ALL_ACCESS, FALSE, entry.th32ProcessID);
EnumWindows(EnumWindowsProcMy, entry.th32ProcessID);
// g_HWND now has HWND for the process chrome.exe.
hWindowFromProcess = g_HWND;
int result = 0, result2 = 0;
result = GetWindowRect(g_HWND, &g_Rect);

LONG nWidth = g_Rect.right - g_Rect.left;
LONG nHeight = g_Rect.bottom - g_Rect.top;
CloseHandle(hProcess);
}
}
}
}

当我从 RECT 结构中获取结果时,我不断获取偏离的值。例如,当我在 1920 x 1080 屏幕中将窗口完全最大化时,我得到的宽度为 71 像素,高度为 16 像素。我还注意到,无论它改变窗口的大小,RECT 的值都保持不变。如果我使用另一个窗口(如 cmd.exe)进行测试,我会得到正确的 RECT 值。

所以我假设浏览器的呈现是由 WinAPI 以外的方法完成的。我看过一些关于使用 javascript 获取浏览器尺寸的文章,但我需要来自 Windows 应用程序的此信息。

最佳答案

Chrome 使用了几个不可见的窗口,您应该跳过它们。 Chrome 窗口有自己的类名 "Chrome_WidgetWin_1",它可以用来查找窗口(你可以从 Spy++ 工具中找到这个信息)

同时尽量避免 T 宏和全局变量。这是 Unicode 中的示例:

int wmain()
{
HWND hwnd = NULL;
for (;;)
{
hwnd = FindWindowEx(0, hwnd, L"Chrome_WidgetWin_1", 0);
if (!hwnd)
break;

if (!IsWindowVisible(hwnd))
continue;

RECT rect;
GetWindowRect(hwnd, &rect);
int w = rect.right - rect.left;
int h = rect.bottom - rect.top;
cout << w << ", " << h << "\n";
break;
}

return 0;
}

关于c++ - 试图从 Windows API 获取 Chrome 应用程序窗口的高度和宽度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37800316/

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