本文链接:C#后台无窗体程序实现_c#无窗口运行-CSDN博客
由于项目要求做一个C#窗体隐藏后台计算程序并唯一,找到两种方法实现后台应用程序,下面讲讲怎么实现。
文章目录
方法一:隐藏窗体
1、打开VS,选择Windows 窗体应用,新建WindowsFrom程序
2、实现应用程序唯一
主要用到Process类和及其GetProcesses()函数, 在main函数中
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Process[] proccess = Process.GetProcesses();//获取所有进程
string strCaCuProcessName = "WithoutWindowExe";//当前程序名
foreach (var pr in proccess)
{
if (pr.ProcessName == strCaCuProcessName && pr.Id != Process.GetCurrentProcess().Id)
{
//当前程序名相等且进程ID不一致,不加进程ID程序起不来(这时候程序已经运行着)
Environment.Exit(0);
}
}
Application.Run(new Form1());
}
3、在主窗口类的构造函数里面设置窗体的属性
public Form1()
{
InitializeComponent();
this.ShowInTaskbar = false;//任务栏中显示标志
this.Visible = false;//可视化属性
this.Width = 0; this.Height = 0;//设置没有高度和宽度
this.Left = -10000; this.Top = -10000;//宽高属性窗口位置放置到桌面界面外
this.Opacity = 0;//最重要的一个属性 不透明度
}
运行结果是没有出现程序,任务栏也没有显示运行的程序,任务管理器显示截图如下:
这种方法是在任务管理器里面容易找到,
方法二:不带窗体
方法二同方法一的区别在于是否带窗体,实现如下:
1、打开VS,选择Windows 窗体应用,新建WindowsFrom程序
2、删除窗体类
3、在程序入口main函数修改(这里直接加上应用程序唯一的代码)
程序不退出的奥秘就是
Application.Run(new Form1());//这里运行船体的界面并运行窗体的消息循环。
想让程序不退出,只要在Main函数的最后添加一句:
Application.Run();//不运行窗体
具体代码如下:
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Process[] proccess = Process.GetProcesses();//获取所有进程
string strCaCuProcessName = "WithoutWindowExe";//当前程序名
foreach (var pr in proccess)
{
if (pr.ProcessName == strCaCuProcessName && pr.Id != Process.GetCurrentProcess().Id)//当前程序名相等且进程ID不一致,不加进程ID程序起不来(这时候程序已经运行着)
{
Environment.Exit(0);
}
}
Application.Run();
}
直接运行可执行文件,在任务管理器里面的后台进程可找到运行的程序,如下图: