MFC 用默认浏览器打开网页

本文介绍如何使用MFC在C++中通过注册表配置默认浏览器打开网页,如果找不到默认浏览器则默认使用IE打开。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

//MFC  
//用默认浏览器打开网页
//如果找不到默认浏览器,则默认用IE打开

void OpenURL(const CString & openUrl)
{
    if(openUrl == "")
        return;
    HKEY  hkRoot, hSubKey;   //注册表根关键字及子关键字
    CString ValueName;
    unsigned char DataValue[MAX_PATH];
    unsigned long cbValueNAME = MAX_PATH;
    unsigned long cbDataNAME = MAX_PATH;    
<pre name="code" class="cpp"><pre name="code" class="cpp">    CString ShellChar;//定义命令行
    DWORD  dwType;
    //打开注册表根关键字
    if(RegOpenKey(HKEY_CLASSES_ROOT,NULL,&hkRoot) == ERROR_SUCCESS)
    {
        //打开子关键字
        if(RegOpenKeyEx(hkRoot,L"htmlfile\\Shell\\open\\command",
           0, KEY_ALL_ACCESS, &hSubKey) == ERROR_SUCCESS)
        {
.            RegEnumValue(hSubKey, 0, (LPWSTR)ValueName.GetBuffer(MAX_PATH), &cbValueName, NULL,
                           &dwType, DataValue, &cbDataValue);
             ValueName.ReleaseBuffer();
             //调用参数赋值
             ShellChar = (char *)DataValue;
             if(ShellChar == "\"")
             {
                 ShellExecute(NULL, L"open",(LPWSTR)openUrl.GetBuffer(MAX_PATH), NULL, NULL, SW_SHOWNORMAL);
                 openUrl.ReleaseBuffer();
             }
             else
             {
                 ShellChar = ShellChar + openUrl;
                 WinExec((LPCSTR)ShellChar.GetBuffer(MAX_PATH),SW_SHOW);
                 ShellChar.ReleaseBuffer();
             }
        }
        else
        {
             RegCloseKey(hSubKey);
             RegCloseKey(hRoot);             <pre name="code" class="cpp"><pre name="code" class="cpp">             ShellExecute(NULL, L"open",(LPWSTR)openUrl.GetBuffer(MAX_PATH), NULL, NULL, SW_SHOWNORMAL);
<pre name="code" class="cpp"><pre name="code" class="cpp"><pre name="code" class="cpp">             openUrl.ReleaseBuffer();
 
 
 
 } 

}
 
 


}
 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值