就是我用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。
如果是启动的时候要显示界面就不要加参数。
如果是指运行的时候显示界面,那就点一下托盘的图标。当然,我这只是示例,一般都会给托盘图标添加些菜单,不同的菜单实现不同的功能。