C# C Windows窗体Windows状态与快捷方式的运行属性

C# C Windows窗体Windows状态与快捷方式的运行属性,c#,forms,shortcut,windowstate,C#,Forms,Shortcut,Windowstate,我有一个C Windows窗体应用程序,在执行时使用默认代码启动窗体实例: [STAThread] static void Main () { Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); Application.Run(new Form1()); } 如果我在Form1上使用WindowsState属性的默认值Normal,我就能够为应用程序创建一个快

我有一个C Windows窗体应用程序,在执行时使用默认代码启动窗体实例:

[STAThread]
static void Main () {
  Application.EnableVisualStyles();
  Application.SetCompatibleTextRenderingDefault(false);
  Application.Run(new Form1());
}
如果我在Form1上使用WindowsState属性的默认值Normal,我就能够为应用程序创建一个快捷方式,并将Run属性设置为Normal、Minimized或Maximized,这将得到尊重

但是,如果应用程序不是通过快捷方式运行的,我希望它在默认情况下最大化。但是如果我将WindowsState属性设置为Maximized,则该快捷方式的Run属性将不再受尊重

有办法处理这两种情况吗


谢谢。

我找到了检测快捷方式设置的部分方法。我的意思是,如果在OnLoad事件中将WindowState设置为其他值,则此方法似乎不适用于快捷方式中的Normal Window选项。但是,它适用于最小化和最大化的快捷方式选项。也许其他人可以解释这一点

表格类别:

bool windowStateSetByShortcut = false;

protected override void WndProc(ref Message m)
{
    /*WM_SIZE*/
    if (m.Msg == 0x0005)
    {
        // This will be set to true if the shortcut uses the Maximized or Minimized
        // options because then it runs before OnLoad.
        windowStateSetByShortcut = true;     
    }
    base.WndProc(ref m);
}

protected override void OnLoad(EventArgs e)
{    
    if (!windowStateSetByShortcut)
    {
        WindowState = FormWindowState.Normal;
    }
    base.OnLoad(e);
}

可能重复@dotctor谢谢,但经过审查,这不是该问题的重复。当应用程序不是通过shurtcut启动时,我还需要一个默认的WindowsState最大化,而不是正常,比如dbl单击可执行文件。