C#客户端程序调用外部程序的3种实现方法

 更新时间:2018年04月12日 10:18:26   作者:_AlexYIN  
这篇文章主要给大家介绍了关于C#客户端程序调用外部程序的3种实现方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧。

简介

大家都知道,当我们用C#来开发客户端程序的时候,总会不可避免的需要调用外部程序或者访问网站,本篇博客介绍了三种调用外部应用的方法,供参考,下面话不多说了,来一起看看详细的介绍吧。

实现

第一种是利用shell32.dll,实现ShellExecute方法,该方法可同时打开本地程序、文件夹或者访问网站,只要直接输入路径字符串即可, 如C:\Users\Desktop\xx.exe或者https://cn.bing.com/,可以根据返回值判断是否调用成功 (成功0x00000002a , 失败0x00000002)

Window wnd = Window.GetWindow(this); //获取当前窗口
var wih = new WindowInteropHelper(wnd); //该类支持获取hWnd
IntPtr hWnd = wih.Handle;    //获取窗口句柄
var result = ShellExecute(hWnd, "open", "需要打开的路径如C:\Users\Desktop\xx.exe", null, null, (int)ShowWindowCommands.SW_SHOW);
[DllImport("shell32.dll")]
public static extern IntPtr ShellExecute(IntPtr hwnd, //窗口句柄
 string lpOperation, //指定要进行的操作
 string lpFile,  //要执行的程序、要浏览的文件夹或者网址
 string lpParameters, //若lpFile参数是一个可执行程序,则此参数指定命令行参数
 string lpDirectory, //指定默认目录
 int nShowCmd   //若lpFile参数是一个可执行程序,则此参数指定程序窗口的初始显示方式(参考如下枚举)
 );
public enum ShowWindowCommands : int
{
 SW_HIDE = 0,
 SW_SHOWNORMAL = 1,
 SW_NORMAL = 1,
 SW_SHOWMINIMIZED = 2,
 SW_SHOWMAXIMIZED = 3,
 SW_MAXIMIZE = 3,
 SW_SHOWNOACTIVATE = 4,
 SW_SHOW = 5,  //显示一个窗口,同时令其进入活动状态
 SW_MINIMIZE = 6,
 SW_SHOWMINNOACTIVE = 7,
 SW_SHOWNA = 8,
 SW_RESTORE = 9,
 SW_SHOWDEFAULT = 10,
 SW_MAX = 10
}

第二种是利用kernel32.dll,实现WinExec方法,该方法仅能打开本地程序,可以根据返回值判断是否调用成功(<32表示出现错误)

var result = WinExec(pathStr, (int)ShowWindowCommands.SW_SHOW);
[DllImport("kernel32.dll")]
public static extern int WinExec(string programPath, int operType);

第三种方法是利用Process类,Process类具体应用可以看类的定义,这里只实现它打开文件和访问网站的用法,(其他使用方法请参考 https://msdn.microsoft.com/en-us/library/system.diagnostics.process(v=vs.110).aspx ),调用失败会抛出异常

 /// <devdoc>
 /// <para>
 ///  Provides access to local and remote
 ///  processes. Enables you to start and stop system processes.
 /// </para>
 /// </devdoc>

具体实现为

 //调用程序   
 Process process = new Process();
try
 {
  process.StartInfo.UseShellExecute = false;
  process.StartInfo.FileName = pathStr;
  process.StartInfo.CreateNoWindow = true;
  process.Start();
 }
  catch (Exception ex)
 {
  MessageBox.Show(ex.Message);
 }
//访问网站
try
{
  Process.Start("iexplore.exe", pathStr);
}
  catch (Exception ex)
{
  MessageBox.Show(ex.Message);
}

可以看出来,C#调用外部程序还是比较容易的~    有补充的地方欢迎留言,谢谢

Demo下载:点击这里

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对脚本之家的支持。

相关文章

  • C#隐藏手机号、邮箱等敏感信息的实现方法

    C#隐藏手机号、邮箱等敏感信息的实现方法

    这篇文章主要介绍了C#隐藏手机号、邮箱等敏感信息的实现方法的相关资料,需要的朋友可以参考下
    2016-09-09
  • C#中字符串的一般性和特殊性

    C#中字符串的一般性和特殊性

    本篇文章主要介绍了C#中字符串的一般性和特殊性的相关知识,具有很好的参考价值,下面跟着小编一起来看下吧
    2017-02-02
  • C# cefSharep控件的使用详情

    C# cefSharep控件的使用详情

    本文主要介绍了C# cefSharep控件的使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-01-01
  • C#播放short或者byte类型的音频

    C#播放short或者byte类型的音频

    这篇文章主要为大家详细介绍了如何使用C#实现播放short或者byte类型的音频,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下
    2024-12-12
  • C#与PHP的md5计算结果不同的解决方法

    C#与PHP的md5计算结果不同的解决方法

    今天在用C#接入我的登录api发现了一个问题,登陆的时候无论如何都会出现用户名和密码错误的问题,后来通过查找排除找的了问题的原因是因为C#与PHP的md5计算结果不同导致的,下面就来看看如何解决这个问题吧。
    2016-12-12
  • C# Socket网络编程实例

    C# Socket网络编程实例

    这篇文章主要介绍了C# Socket网络编程实例,分析了Socket网络通信的原理与具体应用技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-01-01
  • C#中GDI+绘制圆弧及圆角矩形等比缩放的绘制

    C#中GDI+绘制圆弧及圆角矩形等比缩放的绘制

    这篇文章主要介绍了C#中GDI+绘制圆弧及圆角矩形等比缩放的绘制,文章围绕主题展开详细的内容戒杀,具有一定的参考价值,需要的小伙伴可以参考一下
    2022-08-08
  • C#数据类型转换(显式转型、隐式转型、强制转型)

    C#数据类型转换(显式转型、隐式转型、强制转型)

    本文详细讲解了C#数据类型转换(显式转型、隐式转型、强制转型),文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-01-01
  • C#实现Ping的方法小结

    C#实现Ping的方法小结

    这篇文章主要介绍了C#实现Ping的方法,以两个实例形式形式较为详细的分析了C#实现ping功能的相关技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-08-08
  • C# HttpClient Cookie验证解决方法

    C# HttpClient Cookie验证解决方法

    本文将详细介绍C# HttpClient Cookie验证解决方法,需要了解的朋友可以参考下
    2012-11-11

最新评论