从 Main 函数最大化窗口?
我已经使用互斥体来运行单实例程序,现在我希望当用户重新打开应用程序时窗口当前最小化,使其最大化。
这是我当前在 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());
}
}
I have used a mutex to run a single instance program, and now I want the window to become maximized if it is currently minimized when the user reopens the application.
Here is the code I currently have in my Program.cs file:
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());
}
}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
您正在寻找
ShowWindow
函数和SW_MAXIMIZE
标志。在 C# 中,P/Invoke 声明如下所示:
将其添加到您的代码中:
如果您实际上想测试窗口是否在最大化之前先最小化,您可以使用老式的
IsIconic
函数:如果您只想激活窗口(而不是最大化它),请使用
SW_SHOW
值(5
) 而不是SW_MAXIMIZE
。这会将其恢复到最小化之前的先前状态。You're looking for the
ShowWindow
function and theSW_MAXIMIZE
flag.In C#, the P/Invoke declaration would look like this:
Add it to your code here:
If you actually want to test whether the window is minimized first before you maximize it, you can use the old-school
IsIconic
function:If you just want to activate the window (rather than maximize it), use the
SW_SHOW
value (5
) instead ofSW_MAXIMIZE
. This will restore it to its previous state, before it was minimized.我想建议一个纯粹的.NET 解决方案(即没有操作系统依赖性)。
Program.cs
ExtMethods.cs
Form1.cs
I would like to suggest a solution that is purely .NET (i.e. without OS dependency).
Program.cs
ExtMethods.cs
Form1.cs