1. 添加注册表项:
command项只要1个参数,因为IE会把整个URL都当成1个参数传进来
Windows Registry Editor Version 5.00 [HKEY_CLASSES_ROOTmyapp] @="URL:myapp Protocol" "URL Protocol"="" [HKEY_CLASSES_ROOTmyappDefaultIcon] @="C:\PyInstaller\UrlProtocol\dist\UrlProtocol.exe" [HKEY_CLASSES_ROOTmyappshell] [HKEY_CLASSES_ROOTmyappshellopen] [HKEY_CLASSES_ROOTmyappshellopencommand] @="C:\PyInstaller\UrlProtocol\dist\UrlProtocol.exe "%1""
2. 参数传入之后,需要我们自行解析参数,并用来启动程序(需要把python编译成exe)。
#!/usr/bin/python3 # -*- coding: utf-8 -*- import re import os import sys if __name__ == '__main__': if len(sys.argv) != 2: print("Wrong parameters, exit") assert False cmd_argvs = sys.argv[1] #cmd_argvs = "myapp:///mcstd C:\Users\qiujin\AppData\LocalLow\MyApp" pattern = re.compile('^myapp://(/mcstd)s+(.+)$') match_results = pattern.match(cmd_argvs) if match_results: argv1 = match_results.group(1) argv2 = match_results.group(2) print("argv1: %s " % argv1) print("argv2: %s " % argv2) else: print("Wrong argv : %s " % cmd_argvs) assert False cqmgr = "C:\ProgramData\MyApp\cqmgr.exe" cqmgr_cmd = cqmgr + “ ” + argv1 + “ ” + argv2 print("cqmgr cmd: %s" % atmgr_cmd) os.system(cqmgr_cmd)
3. 在IE中输入:myapp:///mcstd C:UsersqiujinAppDataLocalLowMyApp