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