我已经为它开发了一个Windows窗体应用程序和安装程序。我已经在计算机上安装了该应用程序。现在,当我重新启动PC或登录计算机时,该应用程序将启动并显示在桌面上。系统托盘中还会显示一个系统托盘图标。现在,我想保持应用程序隐藏,并且只有系统任务栏图标应该可见。表示应用程序不应显示在屏幕上,但系统任务栏图标应可见。我使用了“ CreateProcessAsCurrentUser”方法,在其中将“ STARTF_USESHOWWINDOW”的值设置为不同的值。但仍然无法正常工作。我也没有得到系统启动时调用哪种应用程序方法。是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);
}
}
我将标志的值设置如下。
[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属性的全局bool值,以便最终显示该表单
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句