C#后台无窗体程序实现

本文链接: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();
        }

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

  • 9
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
对于使用C#开发窗体化程序,可以使用System.Net命名空间中的TcpClient和TcpListener类实现以太网交互数据的最小系统实例。以下是一个简单的示例: ```csharp // C#窗体应用程序 using System; using System.Net; using System.Net.Sockets; using System.Text; using System.Windows.Forms; namespace EthernetCommunication { public partial class Form1 : Form { private TcpListener server; private TcpClient client; public Form1() { InitializeComponent(); } private void btnStart_Click(object sender, EventArgs e) { // 启动TCP服务器 server = new TcpListener(IPAddress.Any, 8888); server.Start(); // 接受客户端连接 client = server.AcceptTcpClient(); // 在后台线程中接收数据 var receiveThread = new System.Threading.Thread(ReceiveData); receiveThread.Start(); } private void ReceiveData() { var stream = client.GetStream(); var buffer = new byte[1024]; int bytesRead; while ((bytesRead = stream.Read(buffer, 0, buffer.Length)) > 0) { var data = Encoding.ASCII.GetString(buffer, 0, bytesRead); // 处理接收到的数据 // ... // 显示接收到的数据 Invoke(new Action(() => { txtReceivedData.AppendText(data); txtReceivedData.AppendText(Environment.NewLine); })); } } private void btnSend_Click(object sender, EventArgs e) { if (client == null) return; var stream = client.GetStream(); var data = Encoding.ASCII.GetBytes(txtSendData.Text); // 发送数据 stream.Write(data, 0, data.Length); } private void Form1_FormClosing(object sender, FormClosingEventArgs e) { // 关闭连接 client?.Close(); server?.Stop(); } } } ``` 对于使用Python开发的程序,可以使用socket模块实现以太网交互数据的最小系统实例。以下是一个简单的示例: ```python # Python控制台程序 import socket def main(): server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) server_socket.bind(('localhost', 8888)) server_socket.listen(1) print("Waiting for client connection...") client_socket, address = server_socket.accept() print("Client connected:", address) while True: data = client_socket.recv(1024).decode('utf-8') if not data: break # 处理接收到的数据 # ... print("Received data:", data) client_socket.close() server_socket.close() if __name__ == '__main__': main() ``` 以上示例分别展示了使用C#和Python开发的最小系统实例,用于通过以太网进行数据交互。请注意,在实际应用中,你可能需要根据具体需求进行适当的修改和完善。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值