C#后台无窗体程序实现

本文介绍了如何在C#中创建后台运行的应用程序,通过两种方法实现:一是隐藏窗体,二是完全不带窗体。在隐藏窗体方法中,利用Process类检查并防止程序重复启动,同时设置窗体属性使其不可见。而在无窗体方法中,直接省略窗体创建,仅保留后台运行部分。这两种方法都能确保程序在任务管理器的后台进程中运行。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

由于项目要求做一个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();
        }

直接运行可执行文件,在任务管理器里面的后台进程可找到运行的程序,如下图:
在这里插入图片描述

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值