获取winapi中窗口的最后一个ShowWindow状态

时间:2015-02-01 18:52:16

标签: windows winapi showwindow

当您单击任务栏中的窗口(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;

1 个答案:

答案 0 :(得分:1)

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;
}