C# WinForm【笔记13】跨项目交互代码执行:工程A exe打开工程B执行相关函数
2026/7/9 4:55:47 网站建设 项目流程

一、首先将对应Debug放进ADebug里面,如下

二、按钮点击打开该文件(XU)exe文件,同时创建客户端简单发送,

NamedPipeClientStream client; private void btnOpen_Click(object sender, EventArgs e) { // 获取当前程序所在目录 string currentDir = Application.StartupPath + "\\"+Bemp_Index.Text; var targetFiles = Directory.GetFiles(currentDir, "*.exe"); // 如果没有找到文件 if (targetFiles.Length == 0) { MessageBox.Show("未找到相关.exe程序!"); return; } string targetExe = targetFiles .OrderByDescending(f => File.GetLastWriteTime(f)) // 按修改时间排序 .First(); // 取最新的一个 // 启动目标程序 Process.Start(targetExe); BempDesc = "其他"; //创建exe客户端 client = new NamedPipeClientStream(".", "MyPipe", PipeDirection.InOut); client.Connect(3000); // 超时3秒 }

三、发送字符串代码函数

public void Bump_Open() { string str = ""; if (ckPA.Checked) { str=ckPA.Text+"开"; } if (ckBA.Checked) { str =str+","+ ckBA.Text + "开"; } byte[] msg = Encoding.UTF8.GetBytes(str); client.Write(msg, 0, msg.Length); client.Flush(); }

四、B工程加载创建服务端并做接收操作:

public Form1() { InitializeComponent(); #region exe服务端接收 var server = new NamedPipeServerStream("MyPipe", PipeDirection.InOut, 1, PipeTransmissionMode.Message); // 关键:消息模式 server.WaitForConnection(); // 等待启动方连接 Thread th = new Thread(() => { while (server.IsConnected) { int bytesRead = server.Read(buffer, 0, buffer.Length); if (bytesRead == 0) { break; } string message = Encoding.UTF8.GetString(buffer, 0, bytesRead); string[] arr = message.Split(','); for (int i = 0; i < arr.Length; i++) { if (arr[i] == "PA开") { byte[] data = new byte[4]; data[0] = 0x04; data[1] = 0x01; data[2] = 0x00; data[3] = 0x01; myQueue.Enqueue(0, myUsart.Data_Pack(data, 0x00)); } else if (arr[i] == "BA开") { byte[] data = new byte[4]; data[0] = 0x04; data[1] = 0x02; data[2] = 0x00; data[3] = 0x01; myQueue.Enqueue(0, myUsart.Data_Pack(data, 0x00)); } } UIMessageTip.ShowOk("泵浦:" + message, 3000, true); Thread.Sleep(10); // 如果需要返回确认 //byte[] response = Encoding.UTF8.GetBytes("OK\n"); //server.Write(response, 0, response.Length); } }); th.IsBackground = true; th.Start(); #endregion }

结语:接收到message字符串,根据字符串对其进行相应操作,根据需求进行修改;总的来说,就说另类的跨工程交互操作,

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询