以下 F:/Debug/xx.exe 为客户端路径。

1. Web 调用

1.1 IE 内核的浏览器调用方式

js 函数调用如下:
var a=new ActiveXObject("Wscript.Shell");
a.exec("F:/Debug/xx.exe params");(格式是:exe 应用程序+空格+入参)

注意:使用如下的调用方式,需要将浏览器自定义安全设置→可以运行未安全认证的插件启用。

1.2 使用 URL Protocol 方式调用

1.2.1 创建注册表信息
  • 将以下内容复制到记事本,然后另保存为 bat 格式的文件,保存时编码类型选择 ANSI

    (防止注册表信息包含汉字时出现乱码).
  • 管理员权限执行保存后的 bat 文件.
  • (若执行过程出现拒绝访问,请进入注册表为当前用户添加完全控制权限,并重启电脑)。
reg delete HKCR\yunxing /f
reg add HKCR\yunxing /T reg_sz /d "yunxing Protocal"
reg add HKCR\yunxing /v "URL Protocol" /t reg_sz /d ""
reg add HKCR\yunxing\DefaultIcon /t reg_sz /d "F:\Debug\xx.exe"
reg add HKCR\yunxing\shell\open\command /t reg_sz /d "F:\Debug\xx.exe \"%%1\""
pause
1.2.2 调用示例
<a href="yunxing:params"> 点击 </a>

href 里面的内容格式是:格式头(y

unxing:)+入参,如:exe 应用程序+空格+高点名称+用户名+空格+用户密码。

2. 客户端代码

/// <summary>
/// 启动方法
/// </summary>
/// <param name="e"></param>
protected override void OnStartup(StartupEventArgs e)
{
if (e.Args != null && e.Args.Length >= 1)
{
string[] newargs;
// 谷歌浏览器使用URL Protocol时会自己url编码并且只会传入一个参数,需要把:及:前的去掉然后以空格进行分割得到参数数组
string inputArgStr = System.Web.HttpUtility.UrlDecode(e.Args[0].ToString());
if (inputArgStr.Contains(":"))
{
newargs= inputArgStr.Split(':')[1].Split(' ');
}
else
{
newargs = e.Args;
}
}
}

WPF 应用 - 在 web 中启动 exe的更多相关文章

  1. 自定义URL协议在Web中启动本地应用程序

    转自(http://blog.csdn.net/jackychen_king/article/details/7743811) 1.注册应用程序来处理自定义协议 你必须添加一个新的key以及相关的va ...

  2. maven web 项目中启动报错 Java.lang.ClassNotFoundException: org.springframework.web.servlet.DispatcherServlet

    主要原因是maven项目里面的jar包吗,没有导入到项目中 maven web 项目中启动报错 Java.lang.ClassNotFoundException: org.springframewor ...

  3. HTML5移动Web开发(十)——在浏览器中启动手机原生应用

    用户可以在浏览器中启动移动设备的原生应用程序,比如地图.电话.短信等,具体能够启动哪些应用程序,这取决于该移动设备上哪些原生应用是否允许从浏览器启动. 新建ch02r05.html <!doct ...

  4. 关于idea中,web项目启动tomcat,访问资源报错404

    背景: web项目启动tomcat,访问相应的资源,报错404,前提资源路径是没错的. 原因: 1.确定是不是web项目 不是的话: 配置web-inf的路径和webroot(web根目录)的路径 2 ...

  5. web调用本地exe应用程序并传入参数

    从网页中通过自定义URL Protocol调用本地程序,需要将协议写到注册表中.浏览器在解析到自定义URL Protocol之后,寻找注册表,通过注册表启动相应的程序并传入参数.协议里面需要记录本地程 ...

  6. WPF程序将DLL嵌入到EXE的两种方法

    WPF程序将DLL嵌入到EXE的两种方法 这一篇可以看作是<Visual Studio 版本转换工具WPF版开源了>的续,关于<Visual Studio 版本转换工具WPF版开源了 ...

  7. 在C#代码中应用Log4Net(四)在Winform和Web中捕获全局异常

    毕竟人不是神,谁写的程序都会有bug,有了bug不可怕,可怕的是出错了,你却不知道错误在哪里.所以我们需要将应用程序中抛出的所有异常都记录起来,不然出了错,找问题就能要了你的命.下面我们主要讨论的是如 ...

  8. 从web页面启动winform程序的实现方法

    本文实现的需求是: A.通过web页面启动winform程序: B.将页面的参数传递给winform程序: C.winform程序已经启动并正在运行时,从web页面不能重新启动winform程序,只是 ...

  9. Java Web 中使用ffmpeg实现视频转码、视频截图

    Java Web 中使用ffmpeg实现视频转码.视频截图 转载自:[ http://www.cnblogs.com/dennisit/archive/2013/02/16/2913287.html  ...

随机推荐

  1. JVM实战篇

    1.1 JVM参数 1.1.1 标准参数 -version -help -server -cp 1.1.2 -X参数 非标准参数,也就是在JDK各个版本中可能会变动 -Xint 解释执行 -Xcomp ...

  2. 【php代码审计】熊海cms1.0

    0x01 环境安装 1. 熊海cms1.0 (http://js.down.chinaz.com/201503/xhcms_v1.0.rar) 2.seay代码审计工具 3. phpstudy (ph ...

  3. Linux 驱动框架---platform驱动框架

    Linux系统的驱动框架主要就是三个主要部分组成,驱动.总线.设备.现在常见的嵌入式SOC已经不是单纯的CPU的概念了,它们都会在片上集成很多外设电路,这些外设都挂接在SOC内部的总线上,不同与IIC ...

  4. Inkscape 太慢

    问题: 在画板上图像较多时, 会在粘贴 / 删除 时会陷入长时间的等待 解决: 最佳: Ubuntu上面的比windows上的快上几十倍, 测试比较, 感觉并不是Ubuntu上多用了GPU, 总之, ...

  5. Code Spell Checker & VSCode 单词拼写验证

    Code Spell Checker & VSCode 单词拼写验证 https://marketplace.visualstudio.com/items?itemName=streetsid ...

  6. Suspense for Data Fetching

    Suspense for Data Fetching Experimental https://reactjs.org/docs/concurrent-mode-suspense.html React ...

  7. onsen & UI & vue & mobile UI

    onsen & UI vue & mobile UI $ npm i onsenui vue-onsenui # OR $ npm i -S onsenui vue-onsenui h ...

  8. React Native 三端同构

    React Native 三端同构 https://www.ibm.com/developerworks/cn/web/wa-universal-react-native/index.html rea ...

  9. macOS open url from terminal

    macOS open url from terminal open URL && start terminal bash open url in chrome open chrome ...

  10. element-ui的树型结构图,带有复选框的,没有子项的,横排展示

    // 修改树形图样式,如果不含有下箭头的块,要变成行内样式 treeChildInline(){ let hasCaretRight = $("#permission_panel" ...