C# 在系统启动时最小化Windows窗体
我已经为它开发了一个windows窗体应用程序和安装程序。我已经在我的机器上安装了那个应用程序。现在,当我重新启动电脑或登录电脑时,应用程序就会启动并显示在桌面上。系统托盘图标也显示在系统托盘中。现在我想保持应用程序隐藏,只有系统托盘图标应该是可见的。表示应用程序不应显示在屏幕上,但系统托盘图标应可见。我使用了“CreateProcessAsCurrentUser”方法,其中我将“STARTF_USESHOWWINDOW”的值设置为不同的值。但它仍然不起作用。此外,我不知道在系统启动时调用哪个应用程序方法。是Program.cs文件中的Main()函数。请告诉我解决方案以及调用的函数C# 在系统启动时最小化Windows窗体,c#,winforms,C#,Winforms,我已经为它开发了一个windows窗体应用程序和安装程序。我已经在我的机器上安装了那个应用程序。现在,当我重新启动电脑或登录电脑时,应用程序就会启动并显示在桌面上。系统托盘图标也显示在系统托盘中。现在我想保持应用程序隐藏,只有系统托盘图标应该是可见的。表示应用程序不应显示在屏幕上,但系统托盘图标应可见。我使用了“CreateProcessAsCurrentUser”方法,其中我将“STARTF_USESHOWWINDOW”的值设置为不同的值。但它仍然不起作用。此外,我不知道在系统启动时调用哪个应
[STAThread]
Main() function code: `static void Main()
{
Mutex mutex = new Mutex(false, "Application Name");
try
{
if (mutex.WaitOne(0, false))
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.ThreadException += new ThreadExceptionEventHandler(Application_ThreadException);
AppDomain.CurrentDomain.UnhandledException += new UnhandledExceptionEventHandler(CurrentDomain_UnhandledException);
Application.Run(new MainForm());
}
else
{
IntPtr pf = NativeMethods.FindWindow(null, "Application Name");
NativeMethods.ShowWindow(pf, 0);
NativeMethods.SetForegroundWindow(pf);
}
}
我已将flag的值设置如下
[Flags]
public enum CreateProcessFlags : uint
{
STARTF_USESHOWWINDOW = 0x00000000,
}
试试这个。。。。把这个写在你的表格里:
protected override void SetVisibleCore(bool value)
{
base.SetVisibleCore(false);
}
这将始终使窗体不可见
不过,你需要一些逻辑来确定它是否应该从应用程序的其他部分显示出来。例如,设置一个全局布尔值并修改上面的代码以使用该值
或者,您可以使用以下选项:
protected override void OnVisibleChanged(EventArgs e)
{
base.OnVisibleChanged(e);
this.Visible = false;
}
但当你直接运行应用程序时,你会看到一些闪光。然后,您需要再次控制何时使其可见,因此请检查visible属性的全局布尔值,以便最终显示表单您尝试过吗
private void Form1_Load(object sender, EventArgs e)
{
this.WindowState = FormWindowState.Minimized;
this.Hide();
this.ShowInTaskbar = true;
}
然后使用notifyicon为什么不直接隐藏表单?i、 e..var mainForm=新的mainForm();mainForm.Hide();Application.Run(mainForm)??显然,这取决于初始化MainForm时所做的操作。@Ahmedilyas:我通过在application.Run(newmainform)方法之后和之前将Windowstate设置为minimized进行了尝试。但事实并非如此worked@HansPassant你能详细解释一下我到底要做什么吗?我还不明白平沃克的解释。com@HansPassant:谢谢你的解决方案!