WPF 应用 - 在 web 中启动 exe

以下 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;
        }
    }
}
posted @ 2021-03-08 21:47  鑫茂  阅读(64)  评论(0编辑  收藏  举报