C#运行【C++/C】 release模式生成的带参数的exe

需求:

在C# 界面里面点击一个按钮,能保证运行带参数的exe

1.确保exe在cmd能运行成功

如果不知道C/C++怎么生成一个可在cmd运行的带参数的exe,可参考C/C++生成带参数可在CMD运行的exe

2.新建一个winform项目(包含按钮)

C#运行【C++/C】 release模式生成的带参数的exe_第1张图片
C#运行【C++/C】 release模式生成的带参数的exe_第2张图片

3.为按钮注册点击事件,使其能运行exe

此部分参考C# 中运行exe程序

3.1 新建一个运行带参数的exe的函数

C#运行【C++/C】 release模式生成的带参数的exe_第3张图片

using System.Diagnostics;

新增一个函数StartProcess_args接受所运行的exe和参数

// filename表示exe所在路径(路径不能有空格)  args为运行exe需要的参数数组
        public bool StartProcess_args(string filename, string[] args)
        {
     
            try
            {
     
                string s = "";
                foreach (string arg in args)
                {
     
                    s = s + arg + " ";
                }
                s = s.Trim();
                Process myprocess = new Process();
                ProcessStartInfo startInfo = new ProcessStartInfo(filename, s);
                myprocess.StartInfo = startInfo;
                myprocess.StartInfo.UseShellExecute = false;
                myprocess.StartInfo.CreateNoWindow = false;//控制是否显示运行小黑窗 false为显示
                myprocess.Start();
                myprocess.WaitForExit();//关键,等待外部程序退出后才能往下执行
               
                return true;
            }
            catch (Exception ex)
            {
     
                MessageBox.Show("启动应用程序时出错!原因:" + ex.Message);
            }
            return false;
            
        }

4.在按钮事件中调用exe

 private void button1_Click(object sender, EventArgs e)
        {
     
            string[] args = new string[2];
            // exe需要两个输入参数
            args[0] = "参数1";
            args[1] = "参数2";
            // 如果运行成功,弹出成功的窗口
            if (StartProcess_args(@"C:\Users\Administrator\dist\test.exe", args))
            {
     
                MessageBox.Show("运行exe成功");
            }
        }

C#运行【C++/C】 release模式生成的带参数的exe_第4张图片


一些很重要的事情:(为什么exe能在cmd运行,却在C#中无法运行)
如果exe里面的代码有一些相对路径的文件的引用,那么此时的相对路径是相对C#程序的【C#项目路径\bin\Debug】,不是相对exe所在的位置

你可能感兴趣的:(奇淫技巧)