问题描述
- C# 实现打开A软件的同时后台打开B软件
- 就是我用A软件调用B软件,每次打开A软件,B软件都会后台打开,这个怎么做到,我的要求就是B软件在后台打开,不要显示窗口,除非用户在托盘打开这个软件
请大神写个简单的例子,新手,还不怎么会
解决方案
在b程序中加个启动参数,b的main函数中判断这个参数,有就显示界面,没有不显示界面就行了。
Application.Run()就是不显示界面了。
大致代码如下:
b
static class Program { static Form1 mainForm; [STAThread] static void Main(string[] paras) { Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); System.Windows.Forms.NotifyIcon nIcon = new NotifyIcon(); nIcon.Icon = xxx; nIcon.Click += nIcon_Click; bool bNoForm = false; if (paras != null && paras.Length > 0) { foreach (string s in paras) { if (s.ToLower() == ""/q"") { bNoForm = true; } } } nIcon.Visible = true; if (!bNoForm) { mainForm = new Form1(); mainForm.Show(); } Application.Run(); } static void nIcon_Click(object sender EventArgs e) { if (mainForm == null || mainForm.IsDisposed) { mainForm = new Form1(); } mainForm.Show(); } }
a程序中调用:
System.Diagnostics.Process p = new System.Diagnostics.Process();p.StartInfo.FileName = ""b.exe"";p.StartInfo.Arguments = ""/q"";p.Start();
解决方案二:
a b两个程序都是你写的,或者不是。
最简单的是使用exe捆绑工具捆版a软件和你编写的一个小程序c。
c不包含界面,它的作用是启动b,并且将它的窗口隐藏。建议你用C++/Delphi等原生语言来写这个c。
解决方案三:
在启动项目属性里面选多个启动项目
解决方案四:
如果是启动的时候要显示界面就不要加参数。
如果是指运行的时候显示界面,那就点一下托盘的图标。当然,我这只是示例,一般都会给托盘图标添加些菜单,不同的菜单实现不同的功能。
时间: 2024-08-03 04:37:27