架构师_程序员_码农网

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

搜索
查看: 41629|回复: 5

[WinForm] winform带启动参数的执行其他exe,并得到返回值

[复制链接]
发表于 2016-5-13 16:36:43 | 显示全部楼层 |阅读模式
大体是这样一个思路,A.exe去带参数执行B.exe,然后,执行完成之后,B.exe要返回内容给A.exe,然后A.exe要得到数据。

首先,我们B.exe设置带启动参数执行。

  1. /// <summary>
  2.         /// 应用程序的主入口点。
  3.         /// </summary>
  4.         [STAThread]
  5.         static void Main(string[] args)
  6.         {
  7.             Application.EnableVisualStyles();
  8.             Application.SetCompatibleTextRenderingDefault(false);
  9.             Application.Run(new Form1(args));
  10.         }
复制代码


  1. private static string Testurl;
  2.         public Form1(string[] str)
  3.         {
  4.             if (str.Length != 0)
  5.             {
  6.                 Testurl = str[0];
  7.                 //MessageBox.Show(str[0]);
  8.                 Console.WriteLine(str[0]);
  9.             }
  10.             InitializeComponent();
  11.             InitAllCityData();
  12.             Browser.Navigate(Testurl);
  13.         }
复制代码


A.exe要带启动参数,执行B.exe,B还要返回数据,怎么返回呢?

  1. foreach (GeckoNode item in node)
  2.                 {
  3.                     //GeckoNode temp=item.SelectSingle("/div/a");
  4.                     string url_click = ((Gecko.DOM.GeckoAnchorElement)(item.ChildNodes[0].SelectSingle("a"))).Href;
  5.                     txtmsg.Invoke(new Action(() =>
  6.                     {
  7.                         txtmsg.AppendText(url_click + "\r\n");
  8.                     }));
  9.                     Console.WriteLine(url_click);
  10.                 }
  11.                 Console.WriteLine("success");
复制代码


上面,是我从B.exe随便搞的一点代码,来演示一下。

然后A.exe怎么去执行B.exe呢???

  1. private void button1_Click(object sender, EventArgs e)
  2.         {
  3.             
  4.             string arg1 = "https://WWW.XXX.COM";
  5.             string arg2 = "bbbbbbbbbbbbbbbbbbbbbbbbbbbbb";

  6.             System.Diagnostics.Process p = new System.Diagnostics.Process();
  7.             p.StartInfo.WorkingDirectory = Application.StartupPath;    //要启动程序路径
  8.             p.StartInfo.FileName = "GeckoWebBrowserClient.exe";//需要启动的程序名   
  9.             p.StartInfo.Arguments = arg1 + " " + arg2;//传递的参数   
  10.             p.StartInfo.UseShellExecute = false;
  11.             p.StartInfo.RedirectStandardOutput = true;
  12.             
  13.             p.Start();//启动  
  14.             //p.WaitForExit();
  15.             //string outStr = p.StandardOutput.ReadToEnd();

  16.             //MessageBox.Show(outStr + "success");
  17.             p.BeginOutputReadLine();
  18.             // 为异步获取订阅事件  
  19.             p.OutputDataReceived += new DataReceivedEventHandler(process_OutputDataReceived);

  20.         }
  21.         private void process_OutputDataReceived(object sender, DataReceivedEventArgs e)
  22.         {
  23.             // 这里仅做输出的示例,实际上您可以根据情况取消获取命令行的内容  
  24.             // 参考:process.CancelOutputRead()  
  25.             System.Diagnostics.Process p = (System.Diagnostics.Process)sender;
  26.             if (!String.IsNullOrEmpty(e.Data))
  27.             {
  28.                 txtmsg.AppendText(e.Data + "\r\n");
  29.                 if (e.Data == "success")
  30.                 {
  31.                     p.Kill();
  32.                     p.Close();
  33.                 }
  34.             }
  35.         }  
复制代码


哈哈,大家应该明白了吧????B.exe输入success的时候,A.exe就去结束B的进程,就kill掉,

大家会问,怎么不让B.exe自动退出呢??????

  1. //this.Close();
  2.                 Application.Exit();
  3.                 //System.Environment.Exit(System.Environment.ExitCode);
复制代码


上面3种退出的,我试了2种,都不行,都会导致B.exe未响应!!!

所以,我只能让A.exe去杀掉进程,也是一个投机取巧的方式吧!

下面就是A.exe从B.exe那里获取到的数据了。

QQ截图20160513163609.jpg




上一篇:c#如何解决geckofx的两个错误
下一篇:C# WinForm下,隐藏主窗体的方法
码农网,只发表在实践过程中,遇到的技术难题,不误导他人。
发表于 2016-5-19 14:37:58 | 显示全部楼层
这方法用来UPdata不错
码农网,只发表在实践过程中,遇到的技术难题,不误导他人。
发表于 2022-2-17 22:59:53 | 显示全部楼层
全显示提高回帖质量是每位会员应尽的义务!,看不到东西啊
码农网,只发表在实践过程中,遇到的技术难题,不误导他人。
发表于 2022-2-18 10:38:45 | 显示全部楼层

全显示提高回帖质量是每位会员应尽的义务!
码农网,只发表在实践过程中,遇到的技术难题,不误导他人。
发表于 2022-3-24 22:41:34 | 显示全部楼层
学习学习
码农网,只发表在实践过程中,遇到的技术难题,不误导他人。
发表于 2022-3-25 13:36:33 | 显示全部楼层
winform带启动参数的执行其他exe
码农网,只发表在实践过程中,遇到的技术难题,不误导他人。
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

免责声明:
码农网所发布的一切软件、编程资料或者文章仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。本站信息来自网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容。如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。如有侵权请邮件与我们联系处理。

Mail To:help@itsvse.com

QQ|小黑屋|架构师 ( 鲁ICP备14021824号-2 )|网站地图

GMT+8, 2026-5-28 08:39

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表