使用C#调用外部exe,且带参数

1.问题意义

据说界面程序开发,首选C#(像lebview之类的也很好)
但是,能不能用其他语言开发核心代码,只用C#做界面?毕竟每种语言都有自己擅长的领域.

2.exe程序

比如有个example.exe,能接受4个参数.用cmd的调用方法是

example.exe "1" "a" "2" "3"

3.C#调用方法

// 调用exe的函数
using System.Diagnostics;

public bool StartProcess(string runFilePath, params string[] args)
{
        string s = "";
        foreach (string arg in args)
        {
            s = s + arg + " ";
        }
        s = s.Trim();
        Process process = new Process();//创建进程对象    
        ProcessStartInfo startInfo = new ProcessStartInfo(runFilePath, s); // 括号里是(程序名,参数)
        process.StartInfo = startInfo;
        process.Start();
        return true;
}

private void start_craw(object sender, EventArgs e)
{
    string exe_path = "E:/example.exe";  // 被调exe
    string[] the_args = { "1","2","3","4"};   // 被调exe接受的参数
    StartProcess(exe_path, the_args);
}

4.实战

界面设计

代码

给按键添加点击事件,点击事件触发start_craw函数


点击事件与函数关联

5.StartProcess更多的设置

public bool StartProcess(string runFilePath, params string[] args)
{
        string s = "";
        foreach (string arg in args)
        {
            s = s + arg + " ";
        }
        s = s.Trim();
        Process process = new Process();//创建进程对象    
        ProcessStartInfo startInfo = new ProcessStartInfo(runFilePath, s); // 括号里是(程序名,参数)
        process.StartInfo = startInfo;
        //process.StartInfo.UseShellExecute = true;    //是否使用操作系统的shell启动
        //startInfo.RedirectStandardInput = true;      //接受来自调用程序的输入     
        //startInfo.RedirectStandardOutput = true;     //由调用程序获取输出信息
        //startInfo.CreateNoWindow = true;             //不显示调用程序的窗口 
        process.Start();
        return true;
}

6.疑难解答

调用外部exe时,当这个exe运行出错时,会闪退,无法看清错误原因
解决:
直接去调试这个被调用的exe即可.

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,180评论 19 139
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 174,138评论 25 709
  • ¥开启¥ 【iAPP实现进入界面执行逐一显】 〖2017-08-25 15:22:14〗 《//首先开一个线程,因...
    小菜c阅读 6,695评论 0 17
  • 《裕语言》速成开发手册3.0 官方用户交流:iApp开发交流(1) 239547050iApp开发交流(2) 10...
    叶染柒丶阅读 28,094评论 5 19
  • 包装(packaging)为在流通过程中保护产品,方便储运,促进销售,按一定的技术方法所用的容器、材料和辅助物等的...
    Jay_jiang阅读 3,839评论 0 7