ShellExecute打开URL也会失败哦!解决如下

/*******************************************************************
* 函数名称: GetRegKey
* 功    能: 获取注册表中的数据
*******************************************************************/
LONG GetRegKey(HKEY hKey, LPCTSTR szSub, LPTSTR szData)
{
HKEY hSubKey = NULL;
LONG lVal = RegOpenKeyEx(hKey, szSub, 0, KEY_QUERY_VALUE, &hSubKey);
if (lVal == ERROR_SUCCESS) 
{
long lSize = MAX_PATH;
TCHAR data[MAX_PATH];
RegQueryValue(hSubKey, NULL, data, &lSize);
_tcscpy(szData, data);
RegCloseKey(hSubKey);
}
return lVal;
}


/*******************************************************************
* 函数名称: GotoURL
* 功    能: 打开URL页面
*******************************************************************/
HINSTANCE :GotoURL(LPCTSTR szURL)
{
TCHAR *verb = _T("open");
HINSTANCE result = ShellExecute(NULL, verb, szURL, NULL,NULL, SW_SHOWNORMAL);
if ((UINT)result <= HINSTANCE_ERROR) 
{
TCHAR szKey[MAX_PATH*2] = {0};
if (GetRegKey(HKEY_CLASSES_ROOT, _T(".htm"), szKey) == ERROR_SUCCESS) 
{
_tcscat(szKey, _T("\\shell\\open\\command"));


if (GetRegKey(HKEY_CLASSES_ROOT, szKey, szKey) == ERROR_SUCCESS) 
{
TCHAR * pos = _tcsstr(szKey, _T("\"%1\""));
if (pos == NULL) 
{
pos = _tcsstr(szKey, _T("%1"));
if (pos == NULL)
pos = verb + _tcslen(szKey)-1;
else
*pos = _T('\0');
}
else
{
*pos = _T('\0');
}
_tcscat(pos, _T(" "));
_tcscat(pos, szURL);
USES_CONVERSION;
result = (HINSTANCE) WinExec(T2A(szKey), SW_SHOW);
}
}
}


return result;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值