以下 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 HKCRyunxing /f
reg add HKCRyunxing /T reg_sz /d "yunxing Protocal"
reg add HKCRyunxing /v "URL Protocol" /t reg_sz /d ""
reg add HKCRyunxingDefaultIcon /t reg_sz /d "F:Debugxx.exe"
reg add HKCRyunxingshellopencommand /t reg_sz /d "F:Debugxx.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;
}
}
}