实践网页链接启动应用附带参数
2021-05-30 16:05
标签:uap 内容 http 两种 prot pen open 步骤 imp 1.什么需求都是有的,你们懂得。我们就来实践下,兜住底,别让技术人的脸面掉地上了。 2.先从搜索开始,经过关键字切换,不断过滤,依据这边文章搞定大半 https://www.cnblogs.com/wang726zq/archive/2012/12/11/UrlProtocol.html 3.不同需求在于我这要求启动的应用是iexplore.exe,经过实践,因为协议完整没有处理的原因,会不停的关闭重启,今日开启关闭的不断循环中 4.解决问题从原因出发,需要启动应用后处理原来的网页链接内容。 5.步骤简述 1)定义协议头,传递参数,部署测试页面 上面两种触发机制都可以。 2)添加注册表文件,或者进入rededit手动添加到对应目录下 HKEY_CLASSES_ROOT\HkVideo\shell\open\command 3)我是用golang build 了参数解析,执行命令的app,其他winform等形式都可以 4)app放到注册表的目录 总结 : 从页面链接触发自定义协议“HkVideo//”,会在注册表中寻找,如果已经注册过,则调用openIE.exe 程序,app接收到参数后处理,并附带参数执行命令行。 实践网页链接启动应用附带参数 标签:uap 内容 http 两种 prot pen open 步骤 imp 原文地址:https://www.cnblogs.com/wellma/p/14663427.html p>
a href=‘HkVideo://www.bing.com‘>查看视频监控a>
p>
button type=‘button‘ onclick=‘window.location.href = "HkVideo://http://www.baidu.com"‘>查看视频监控button>
Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\HkVideo]
@="Open HkVideo"
"URL Protocol"=""
[HKEY_CLASSES_ROOT\HkVideo\shell]
[HKEY_CLASSES_ROOT\HkVideo\shell\open]
[HKEY_CLASSES_ROOT\HkVideo\shell\open\command]
@="\"d:\\youApp.exe\" \"%1\""
package main
import (
"bytes"
"fmt"
"log"
"os"
"os/exec"
"strings"
)
const ShellToUse = "C:/Program Files/Internet Explorer/iexplore.exe"
func Shellout(command string) (error, string, string) {
var stdout bytes.Buffer
var stderr bytes.Buffer
cmd := exec.Command(ShellToUse, command)
cmd.Stdout = &stdout
cmd.Stderr = &stderr
err := cmd.Run()
return err, stdout.String(), stderr.String()
}
func main() {
fmt.Println(os.Args[1])
url := os.Args[1]
index := strings.Index(url, "//")
url = url[index+2:]
// flag.StringVar(&url, "url", "google.com", "url program")
// flag.Parse()
fmt.Println(url)
err, out, errout := Shellout(url)
if err != nil {
log.Printf("error: %v\n", err)
}
fmt.Println("--- stdout ---")
fmt.Println(out)
fmt.Println("--- stderr ---")
fmt.Println(errout)
}
上一篇:01 HTML 基础概念