在winform中打开进程关闭进程

打开进程关闭进程方法1

打开关闭进程的代码如下:

using System.Windows.Forms;
using System.Diagnostics;
using System.IO;

namespace process2
{
    public partial class Form1 : Form
    {
        static string rootpath = "notepad.exe";
        static string rootpath2 = "calc.exe";
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            Process.Start(rootpath);
        }

        private void button2_Click(object sender, EventArgs e)
        {
            //Process[] processes=Process.GetProcessesByName(Path.GetFileNameWithoutExtension(rootpath));
            Process[] processes = Process.GetProcessesByName("notepad");
            foreach (Process process in processes)
            {
                try
                {
                    process.Kill();
                }
                catch (Exception ex)
                {
                    // 处理无法终止进程的情况  
                    MessageBox.Show($"Failed to kill process {process.Id}: {ex.Message}", "Error");
                }
            }
        }
    }
}

下面两个方法是一样的,都是为了获取进程的名称。

  //Process[] processes=Process.GetProcessesByName(Path.GetFileNameWithoutExtension(rootpath));
  Process[] processes = Process.GetProcessesByName("notepad");

打开进程关闭进程方法2

using System.Windows.Forms;
using System.Diagnostics;
using System.Threading;

namespace process
{
    public partial class Form2 : Form
    {
        Process calcProcess;
        public Form2()
        {
            InitializeComponent();
        }

        private void btn_Start_Click(object sender, EventArgs e)
        {

            calcProcess = new Process();
            //calcProcess.StartInfo.FileName = @"C:\Windows\system32\calc.exe";
            calcProcess.StartInfo.FileName = @"C:\Windows\notepad.exe";
            calcProcess.Start();

            
            if (calcProcess != null && !calcProcess.HasExited)
            {
                MessageBox.Show($"The process '{calcProcess.Id}' is running.");
            }
            else
            {
                MessageBox.Show($"The process '{calcProcess.ProcessName}' is not running.");
            }
        }
    
        private void btn_Stop_Click(object sender, EventArgs e)
        {           
            if (calcProcess != null && !calcProcess.HasExited)
            {
                try
                {
                    calcProcess.CloseMainWindow();
                    Thread.Sleep(1000);

                }
                catch (Exception ex)
                {
                    MessageBox.Show($"Failed to close or kill the process: {ex.Message}", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
            }
            else
            {
                MessageBox.Show("Calculator process is not running.", "Information", MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
        }
    }
}

关闭进程可以使用calcProcess.CloseMainWindow();也可以使用calcProcess.Kill();

该方法可以打开和关闭notepad记事本,但是无法关闭calc计算器进程。因为打开计算器进程后,还没有等关闭进程,该进程就已经关闭了。不知道是因为什么,希望小伙伴可以解答一下。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要在Winform打开Unity游戏并通过进程进行数据交互,可以通过以下步骤实现: 1. 在 Winform 添加一个按钮,当用户单击它时,启动 Unity 游戏进程。 2. 在 Unity 游戏编写 C# 代码来与 Winform 进行数据交互,例如使用标准输入输出流进行通信。 3. 在 Winform 使用 Process 类来启动 Unity 游戏进程,并使用标准输入输出流来向 Unity 游戏发送数据并接收数据。 例如,可以在 Unity 游戏编写以下代码来向标准输出流发送数据: ``` Console.WriteLine("Some data"); ``` 然后,在 Winform ,可以使用以下代码来启动 Unity 游戏进程,并向其发送数据: ``` private Process unityProcess; private void StartUnityGame() { unityProcess = new Process(); unityProcess.StartInfo.FileName = "UnityGame.exe"; unityProcess.StartInfo.UseShellExecute = false; unityProcess.StartInfo.RedirectStandardInput = true; unityProcess.StartInfo.RedirectStandardOutput = true; unityProcess.OutputDataReceived += UnityProcess_OutputDataReceived; unityProcess.Start(); unityProcess.BeginOutputReadLine(); unityProcess.StandardInput.WriteLine("Some data"); } private void UnityProcess_OutputDataReceived(object sender, DataReceivedEventArgs e) { // 处理从 Unity 游戏发送回来的数据 } ``` 通过以上步骤,就可以在 Winform 启动 Unity 游戏进程并进行数据交互了。在 Unity 游戏,可以使用标准输入输出流来向 Winform 发送数据,并在 Winform 使用 Process 类来接收数据。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值