我做了一个小exe给我一个窗口的状态,并在最小化时最大化。它适用于像Calculator这样的常规应用程序。但它不适用于我需要最大化的应用程序。 应用程序在任务栏中最小化,它是一个全屏应用程序,以双屏幕设置显示图像。
IsIconic在Calculator上工作但在应用程序上返回false。
IsWindowVisible返回false,但是ShowWindow不起作用,但是如果命令重新运行,则IsWindowVisible返回true。
如果我使用nircmd.exe命令 nircmd win max title" App name" 应用程序在两个屏幕上返回全屏。
试图 使用SC_RESTORE或SC_MAXIMIZE的PostMessage无效
这是代码
HWND hWnd = FindWindow(NULL, "Application name");
if (IsWindow(hWnd))
{
SetForegroundWindow(hWnd); // I'll give focus to my window. This is always working.
std::cout << "Visible " << IsWindowVisible(hWnd) << std::endl;
if(!IsWindowVisible(hWnd))
{
std::cout << "Maximized " << std::endl;
ShowWindow(hWnd, SW_MAXIMIZE); // This is working only if the window is minimized while in fullscreen mode
//PostMessage(hWnd, WM_SYSCOMMAND, SC_RESTORE, 0);
}
}
答案 0 :(得分:0)
HWND hWnd = FindWindow(NULL, "Application name");
RECT rect;
// initial rect to your desired size
int width = rect.right - rect.left;
int height =rect.bottom - rect.top;
::MoveWindow(hWnd,rect.left,rect.top,width,height,TRUE);
::BringWindowToTop(hWnd);
FromHandle(hWnd)->ShowWindow(TRUE);
FromHandle(hWnd)->SetWindowPos(&CWnd::wndTopMost,rect.left,rect.top,width,height,SWP_FRAMECHANGED |SWP_SHOWWINDOW );`