【发布时间】:2013-03-26 13:40:39
【问题描述】:
我想编写一个可以在一些正在运行的应用程序之间切换的 c# 应用程序。它应该执行与 Windows 中的 Alt+Tab 相同的功能。我使用 Windows API 中的SetForegroundWindow() 函数,但如果在 Windows 任务栏上最小化应用程序,它就不能正常工作。所以我添加了ShowWindow()函数,但有一个问题是我无法以用户设置的原始大小显示窗口。
[DllImport("user32.dll")]
public static extern bool SetForegroundWindow(IntPtr hWnd);
[DllImport("user32.dll")]
public static extern bool ShowWindow(IntPtr hWnd, int nCmdShow);
示例:我最大化窗口,然后将其最小化到任务栏中。当我打电话时:
ShowWindow(processWindowHandle, ShowWindowCmd.SW_NORMAL);
WindowsApi.SetForegroundWindow(processWindowHandle);
窗口未最大化。我尝试使用ShowWindowCmd.SW_NORMAL 参数,但结果相同。
【问题讨论】:
-
你试过SW_RESTORE吗?
-
是的,我尝试了 SW_RESTORE。最大化然后最小化的应用程序然后显示为未最大化(如预期的那样)。它显示为小于屏幕最大尺寸的窗口。
-
我不想每次都最大化窗口。我想以与另一个窗口隐藏窗口之前或将其最小化到任务栏之前相同的状态显示窗口...
-
我已经更新了我的答案,您需要将值 9 提供给 ShowWindow 方法以恢复原始状态。
-
@JMK: 9 等于
SW_RESTORE,所以这不是解决方案...msdn.microsoft.com/en-us/library/windows/desktop/…