如何最小化如何恢复winapi窗口?

我已经尝试了许多函数,比如ShowWindowIsWindowVisible ,至less在窗口最小化的时候尝试给出结果,更不用说还原它了。 无论窗口是否最小化,这些函数都会不断返回false。 我也尝试使用SetWindowPlacementGetWindowPlacement没有成功。 我的HWNDFindWindow(TEXT("Chrome_WidgetWin_1"), NULL);findChrome FindWindow(TEXT("Chrome_WidgetWin_1"), NULL); 这是成功的,但我想testing/恢复窗口,如果它最小化,这些过去的10小时没有任何显示。

Solutions Collecting From Web of "如何最小化如何恢复winapi窗口?"

Chrome浏览器有一个不可见的窗口,名称相同。 不可见的窗口只需要跳过。 事后看来,这并不是一个谜。

 void show(HWND hwnd) { //ShowWindow(hwnd, SW_NORMAL); //SetForegroundWindow(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; } 

我编辑了这一大堆的时间。 以前的编辑在这里: https : //stackoverflow.com/posts/29837548/revisions