IE协议扩展,页面中启动程序并传参

写注册表,把协议和程序路径写入注册表
void CTestDlg::RegIEProtocol(CString strProName,CString strPath)
{
HKEY hSubKey;
DWORD lpdw;
RegCreateKeyEx(HKEY_CLASSES_ROOT,strProName.GetBuffer(0),0,NULL,REG_OPTION_NON_VOLATILE,KEY_WRITE,NULL,&hSubKey,&lpdw);//REG_OPTION_NON_VOLATILE:保存,重启还在;REG_OPTION_VOLATILE:不保存,重启不在。
CString strPname = strProName + "Protocol";
RegSetValueEx(hSubKey,"",0,REG_SZ,(LPBYTE)strPname.GetBuffer(0),strPname.GetLength());
RegSetValueEx(hSubKey,"URL Protocol",0,REG_SZ,(LPBYTE)strPath.GetBuffer(0),strPath.GetLength());
HKEY iconKey;
CString strIconStr = strPath + ",1";
RegCreateKeyEx(hSubKey,"DefaultIcon",0,NULL,REG_OPTION_NON_VOLATILE,KEY_WRITE,NULL,&iconKey,&lpdw);
RegSetValueEx(iconKey,"",0,REG_SZ,(LPBYTE)strIconStr.GetBuffer(0),strIconStr.GetLength());
RegCloseKey(iconKey);
HKEY shellKey;
RegCreateKeyEx(hSubKey,"shell",0,NULL,REG_OPTION_NON_VOLATILE,KEY_WRITE,NULL,&shellKey,&lpdw);
HKEY openKey;
RegCreateKeyEx(shellKey,"open",0,NULL,REG_OPTION_NON_VOLATILE,KEY_WRITE,NULL,&openKey,&lpdw);
HKEY commandKey;
RegCreateKeyEx(openKey,"command",0,NULL,REG_OPTION_NON_VOLATILE,KEY_WRITE,NULL,&commandKey,&lpdw);
CString str = "\"" + strPath + "\" \"%1\"";
RegSetValueEx(commandKey,"",0,REG_SZ,(LPBYTE)str.GetBuffer(0),str.GetLength());
RegCloseKey(hSubKey);
}


调用:
RegIEProtocol("test","D:\\work\\temp\\activctest\\ocxApp\\TSTCON32.EXE");


IE地址栏中输入:test://
即可启动TSTCON32.EXE
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值