gpt4 book ai didi

c++ - 如果已最小化,如何恢复 winapi 窗口?

转载 作者:可可西里 更新时间:2023-11-01 09:58:44 27 4
gpt4 key购买 nike

我已经尝试了很多函数,例如 ShowWindowIsWindowVisible 至少尝试在窗口最小化时给出结果,更不用说恢复它了。无论窗口是否最小化,这些函数都会不断返回 false。我也尝试过将 GetWindowPlacementSetWindowPlacement 一起使用,但没有成功。我的 HWND 使用 FindWindow(TEXT("Chrome_WidgetWin_1"), NULL); 找到 Chrome,这是成功的,但我想测试/恢复窗口,如果它被最小化并且这些过去10 个小时没有什么可证明的。

最佳答案

Chrome 有一个不可见的同名窗口。只需要跳过不可见的窗口。

void show(HWND hwnd)
{
//We can just call ShowWindow & SetForegroundWindow to bring hwnd to front.
//But that would also take maximized window out of maximized state.
//Using GetWindowPlacement preserves maximized state
WINDOWPLACEMENT place;
memset(&place, 0, sizeof(WINDOWPLACEMENT));
place.length = sizeof(WINDOWPLACEMENT);
GetWindowPlacement(hwnd, &place);

switch (place.showCmd)
{
case SW_SHOWMAXIMIZED:
ShowWindow(hwnd, SW_SHOWMAXIMIZED);
break;
case SW_SHOWMINIMIZED:
ShowWindow(hwnd, SW_RESTORE);
break;
default:
ShowWindow(hwnd, SW_NORMAL);
break;
}

SetForegroundWindow(hwnd);
}

int WINAPI WinMain(HINSTANCE hinst, HINSTANCE, LPSTR cmdline, int nshow)
{
const wchar_t *classname = L"Chrome_WidgetWin_1";

HWND hwnd = NULL;
for (;;)
{
hwnd = FindWindowEx(0, hwnd, classname, 0);
if (!hwnd) break;

//skip Chrome's invisible winodw
if (IsWindowVisible(hwnd))
{
wchar_t buf[260];
GetWindowText(hwnd, buf, 260);
OutputDebugString(buf);
OutputDebugString(L"\n");

show(hwnd);
break;
}
}

return 0;
}

关于c++ - 如果已最小化,如何恢复 winapi 窗口?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29837268/

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