参考百度云盘调用本地应用程序,在调起应用程序的同时传入一些参数,应用程序根据参数做出相应的操作。
主要思路是利用自定义URL Protocol来调用应用程序。浏览器在解析到自定义URL Protocol之后,会寻找注册表,然后通过注册表启动相应的程序,然后启动改程序,传入参数。主要实现步骤如下
- 自定义URL Protocol
Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\OCR]
"URL Protocol"="D:\\OCR\\OCR.exe"
[HKEY_CLASSES_ROOT\OCR\DefaultIcon]
@="D:\\OCR\\HLOCR.exe"
[HKEY_CLASSES_ROOT\OCR\shell]
[HKEY_CLASSES_ROOT\OCR\shell\open]
[HKEY_CLASSES_ROOT\OCR\shell\open\command]
@="\"D:\\OCRHLOCR.exe\" \"%1\" "
自定义URL Protocol的注册表信息说明:
Windows Registry Editor Version 5.00 是注册表工具的版本信息,可以自己改一改,或者自己导入任意一个注册信息,把这一行复制过来就行了;
[HKEY_CLASSES_ROOT\OCR] 中的OCR就是在HKEY_CLASSES_ROOT下面添加一个OCR树,其中OCR的名称就对应着自定义URL Protocol的名称,在web中调用的时候需要这个名称;
D:\\OCR\\OCR.exe中的"D:\\OCR\\OCR.exe"是指定应用程序的路径,注意只能是exe的程序;
[HKEY_CLASSES_ROOT\OCR\shell] 是协议的名称,可以是任意字符串,后面不会用到;
[HKEY_CLASSES_ROOT\OCR\shell\open] 表示在OCR中再加一个分支,照抄,不用管
[HKEY_CLASSES_ROOT\OCR\shell\open\command] 照抄"D:\\OCRHLOCR.exe\" \"%1\" 程序路径,其中%1表示到参数,参数可以在你的程序COR.exe中进行解析
- 保存为reg格式文件
注册时可能出现“无法导入reg:指定的文件不是注册脚本”,需要把编码格式改成Unicode,并且第一行不能为空行
-
网页调用
调用协议为超链接形式,如下所示:
<a href="OCR://123">OCR</a>
- 参数接收(QT为例),根据不同参数做出不同相应即可
QMessageBox::information(NULL,"",QString("参数个数%1").arg(argc));
for(int i = 0; i < argc; i++)
{
QMessageBox::information(NULL,"",QString("参数:%1").arg(argv[i]));
}