我为它开发了一个Windows窗体应用程序和安装程序。我在我的机器上安装了该应用程序。现在,当我重新启动PC或登录计算机时,应用程序将启动并显示在桌面上。系统托盘图标也显示在sys托盘中。现在我想保持app隐藏,只有sys tray图标应该是可见的。意味着应用程序不应显示在屏幕上,但应显示系统托盘图标。我使用了“CreateProcessAsCurrentUser”方法,其中我将“STARTF_USESHOWWINDOW”的值设置为不同的值。但它仍然不起作用。另外,我没有得到在系统启动时调用哪种Application方法。是Program.cs文件中的Main()函数吗?请告诉我解决方案以及被调用的函数。
[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,
}
答案 0 :(得分:0)
试试这个....把它放在你的表格中:
protected override void SetVisibleCore(bool value)
{
base.SetVisibleCore(false);
}
这将始终使表单不可见。
您需要一些逻辑来确定是否应该从应用的其他部分显示它。例如,设置一个全局bool值并修改上面的代码以使用它。
或者,您可以使用:
protected override void OnVisibleChanged(EventArgs e)
{
base.OnVisibleChanged(e);
this.Visible = false;
}
但是当你立即运行应用程序时,你会看到一些闪光。然后,再次需要控制何时使其可见,因此请检查可见属性的全局bool值,以便最终显示表单
答案 1 :(得分:0)
private void Form1_Load(object sender, EventArgs e)
{
this.WindowState = FormWindowState.Minimized;
this.Hide();
this.ShowInTaskbar = true;
}
然后使用notifyicon