2

当您单击任务栏中的窗口(Windows 用户)时,它将保留其最后状态 - 最大化或正常可缩放窗口。我正在尝试做类似的事情,但是以编程方式并且没有窗口获得焦点(例如,成为前景并干扰我在另一个窗口中的当前活动)。

我可以这样做吗?可以使用此 API 调用获取当前窗口状态:

   //Empty Window placement structure
   WinDefExt.WINDOWPLACEMENT placement = new WinDefExt.WINDOWPLACEMENT();
   //winapi call to external User32.dll file
   UserExt.GetWindowPlacement(hwnd, placement);
   //showCmd should be equal to one of the SW_ constants (here: https://msdn.microsoft.com/en-us/library/windows/desktop/ms633548%28v=vs.85%29.aspx)
   placement.showCmd;
4

1 回答 1

3

ShowWindow不是“状态”,而是“动作”。没有GetShowState命令。您可以从窗口的当前状态推断出一个值,但无法找出与ShowWindow.

if (!IsWindowVisible(hWnd))
    swState = SW_HIDE;
else
if (IsIconic(hWnd))
    swState = SW_MINIMIZE;
else
if (IsZoomed(hWnd))
    swState = SW_MAXIMIZE;
else
{
    // not hidden, minimized or zoomed, so we are a normal visible window
    // last ShowWindow flag could have been SW_RESTORE, SW_SHOW, SW_SHOWNA, etc
    // no way to tell
    swState = SW_SHOW;
}
于 2015-02-01T19:49:47.257 回答