VC获取默认浏览器
来源:互联网 发布:step镜头数据mmd 编辑:程序博客网 时间:2024/06/06 16:34
如何获取系统当前的默认浏览器呢?呃,如果你说,去读 HKEY_CLASSES_ROOT\http\shell\open\command 的注册表值,也不是不可以,但在WIN7 下不一定正确。那么我是怎么知道的呢?
昨天这样读了半天,发现总是不正确,我们将 Chrome 设为默认浏览器,发现 QQ 电脑管家弹出提示,然后果断打开之,发现:
我们果断得到了一个注册表项:
HKEY_CURRENT_USER\Software\Microsoft\Windows\Shell\Associations\UrlAssociations\Ftp\UserChoice[Progid]。
然后发现它的值为 ChromeHTML.FXI4CGER3K4X3DSME7GMQ74NWM。
然后我们去HKEY_CLASSES_ROOT\ChromeHTML.FXI4CGER3K4X3DSME7GMQ74NWM\shell\open\command 下,就可以读出默认值了。
如果是 IE 浏览器的话,将在 HKEY_CLASSES_ROOT\IE.FTP\shell\open\command 下获取到。所以,在WIN7 下整个获取过程如下:
void LaunchDefaultBrowser(){ HKEY hDefBrowserPos = NULL; wstring wstrDefBrowserPath = L"iexplore.exe"; WCHAR wszBuffer[MAX_PATH + 1] = {0}; DWORD dwDataSize = sizeof(wszBuffer); if (ERROR_SUCCESS == ::RegGetValueW( HKEY_CURRENT_USER, L"Software\\Microsoft\\Windows\\Shell\\Associations\\UrlAssociations\\Ftp\\UserChoice\\", L"Progid", RRF_RT_REG_SZ, 0, wszBuffer, &dwDataSize )) { wstring wstrDefBrowserPos = wszBuffer; wstrDefBrowserPos += L"\\shell\\open\\command\\"; dwDataSize = sizeof(wszBuffer); if (ERROR_SUCCESS == ::RegGetValueW( HKEY_CLASSES_ROOT, wstrDefBrowserPos.c_str(), NULL, RRF_RT_REG_SZ, 0, wszBuffer, &dwDataSize )) { // 解出 exe 路径. wstrDefBrowserPath = wszBuffer; wstring::size_type leftQuotation = wstrDefBrowserPath.find(L'"'); if (leftQuotation != wstring::npos) { wstring::size_type rightQuotation = wstrDefBrowserPath.find(L'"', leftQuotation + 1); if (rightQuotation != wstring::npos) { wstrDefBrowserPath.assign( wstrDefBrowserPath.begin() + leftQuotation + 1, wstrDefBrowserPath.begin() + rightQuotation ); } } } } ::ShellExecuteW( NULL, L"open", wstrDefBrowserPath.c_str(), NULL, NULL, SW_NORMAL );}
整个过程比较繁琐,但还是比较容易理解的。
- VC获取默认浏览器
- VC获取默认浏览器
- 注册表获取默认浏览器
- 获取默认浏览器的方法
- 获取当前默认浏览器路径
- Android获取默认浏览器信息
- vc使用默认的浏览器打开网页
- delphi获取系统安装的默认浏览器
- java获取系统默认浏览器打开链接
- MFC 通过注册表获取系统默认浏览器
- js获取浏览器默认语言设置
- vc使用默认的浏览器打开网页代码
- VC 使用IE、火狐或默认浏览器打开网页ShellExecute
- VC 使用IE、火狐或默认浏览器打开网页ShellExecute
- windows 对象获取浏览器宽度和高度及默认坐标
- window获取系统默认浏览器并打开相应的网址
- Delphi 获取浏览器路径 注册表获取默认浏览器、注册表读取IE路径 拼接IE路径
- 改变vs2005默认浏览器
- Android Activity和Intent机制学习笔记(转)
- VC6向VC9移植时常见BUG
- CAS单点登录(SSO)完整教程
- hash_map 与 hash_set 详解
- 三角形性质
- VC获取默认浏览器
- 调查显示Android和iOS设备正慢慢侵蚀PC市场
- 七点理由告诉你中国IC公司为啥成不了TI?
- ios授权其他电脑开发者身份的方法
- PPTP中的PAC 和PNS
- 一个游戏程序员的学习资料
- 设置 Oracle PL/SQL 时间显示格式 NLS_TIMESTAMP_FORMAT
- 创建与打开IPC通道的POSIX和SYSTEM V方法
- HDU 4284 Travel