您的位置:首页 > 其它

window获取系统默认浏览器并打开相应的网址

2015-09-07 20:20 183 查看
方法:通过读取注册表找到对应的浏览器地址,解析地址,然后调用系统方法打开对应的网址

//参数说明:key是对应的注册表键,path是后面的路径,keyname是对应的具体的项,默认项的话keyname为""即可
//返回值:返回系统注册表中的地址值,为空则返回错误。
wstring GetDefaultExplore(HKEY key, wstring strKeyPath, wstring strKeyName)
{
wstring strKeyVal;
HKEY hKey;
LONG lReturn;
bool bRet = false;
lReturn = ::RegOpenKeyEx(key, strKeyPath.c_str(),0, KEY_READ, &hKey);
if (lReturn == ERROR_SUCCESS)
{
DWORD dwType;
wchar_t szPath[MAX_PATH];
DWORD cbData = sizeof(szPath);
lReturn = RegQueryValueEx(hKey, strKeyName.c_str(), NULL, &dwType, (LPBYTE)szPath, &cbData);
if (lReturn == ERROR_SUCCESS && REG_SZ == dwType)
{
strKeyVal = szPath;
}
RegCloseKey(hKey);
}
return strKeyVal;
}


上面方法中用到的RegOpenKeyEx及后面几个方法都是注册表操作相关函数:

参考msdn: https://msdn.microsoft.com/zh-cn/library/windows/desktop/ms724897(v=vs.85).aspx
其中HKEY对应如下几个枚举:

HKEY_CLASSES_ROOT
HKEY_CURRENT_CONFIG
HKEY_CURRENT_USER
HKEY_LOCAL_MACHINE
HKEY_USERS

对得到的地址进行解析获取到对应的.exe
然后调用系统方法即可用浏览器打开相应的网址

例如:

ShellExecute(NULL, L"open", L"chrome.exe", L"baidu.com", NULL, SW_SHOW);
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: