【发布时间】:2011-08-24 19:26:50
【问题描述】:
我使用互斥锁来运行单个实例程序,现在我希望窗口在用户重新打开应用程序时当前处于最小化状态时最大化。
这是我目前在 Program.cs 文件中的代码:
static class Program
{
[DllImport("user32.dll")]
public static extern bool SetForegroundWindow(IntPtr hWnd);
/// <summary>
/// The main entry point for the application.
/// </summary>
[STAThread]
static void Main()
{
bool Ok = true;
string ProductName = Application.ProductName;
Mutex m = new Mutex(true, ProductName, out Ok);
if (!Ok)
{
System.Diagnostics.Process[] p = System.Diagnostics.Process.GetProcessesByName(ProductName);
SetForegroundWindow(p[0].MainWindowHandle);
}
else
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new Form1());
}
}
【问题讨论】:
-
我可以建议恢复窗口(即取消最小化)比最大化它更有意义。
-
@romkyns:绝对同意。
SW_SHOW是这样做的方法,正如我在答案底部提到的那样。这会将窗口恢复到最小化之前的状态,无论是标准窗口还是最大化窗口。
标签: c# .net windows winapi maximize