程序调用不同的浏览器,打开不同的网页

本文介绍了如何通过命令行和查找注册表路径来调用不同的浏览器,如Chrome、Firefox,来打开特定的HTML5网页。提供了相关调用方式,并附带了一个demo的下载链接。

1.命令行:

rem 火狐;

:"C:\Program Files\Mozilla Firefox\firefox.exe" www.baidu.com

start firefox www.baidu.com
pause

rem Edge;
start explorer http://www.baidu.com
pause


rem ie浏览器;
start  iexplore http://www.baidu.com
pause

rem 谷歌浏览器;
start chrome www.baidu.com
pause

2.找注册表中的路径

ChromeHTML,IE.HTTPS,FirefoxHTML,360seURL

#include <QProcess>
#include <QDebug>
#include <Windows.h>
#include <QSettings>
#include <QDesktopServices>
#include <QUrl>
#include <windows.h>


QString FindWebBrouseExeStr(const QString &strWebType)
{
    QSettings settings2(QString("HKEY_CLASSES_ROOT\\%1\\shell\\open\\command\\").arg(strWebType), QSettings::NativeFormat);
    QString FilePath = settings2.value("Default", "").toString();

    int nPos = FilePath.indexOf("\" ");
    if(nPos > 0){
        return FilePath.mid(1, nPos-1);  // " "path.exe" "%1" ";
    }else{
        return "";
    }
}

QString GetWindowsRegeditTotleName(const QString &strWebType)
{
    QSettings reg(QString("HKEY_CLASSES_ROOT\\"), QSettings::NativeFormat);

    QStringList groupsList=reg.childGroups();
    for(QString group:groupsList)
    {
        if (group.contains(strWebType, Qt::CaseSensitive))
        {
           return group;
        }
    }
    return "";
}

QString GetWebBrousePath(const QString &strWebType)
{
    if(strWebType.contains("ChromeHTML") || strWebType.contains("FirefoxHTML")){ // 这一种单独算; ChromeHTML.xxxx;

        QString strWebTypeAll = GetWindowsRegeditTotleName(strWebType);
        return FindWebBrouseExeStr(strWebTypeAll);
    }
    else if(strWebType.contains("surfBrowser", Qt::CaseInsensitive)){ // 这一种单独算; ChromeHTML.xxxx;

        QSettings settings2(QString("HKEY_LOCAL_MACHINE\\SOFTWARE\\WOW6432Node\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\SurfBrowser_is1\\"), QSettings::NativeFormat);
        QString FilePath = settings2.value("Inno Setup: App Path", "").toString();
        if(FilePath.isEmpty()){ // 64位没找到,继续找32位;
            QSettings settings21(QString("HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\SurfBrowser_is1\\"), QSettings::NativeFormat);
            FilePath = settings21.value("Inno Setup: App Path", "").toString();
        }
        FilePath += "\\surfBrowser.exe";
        return FilePath;
    }
    else{
        return FindWebBrouseExeStr(strWebType);
    }
}


bool OpenWebUrl(const QStringList &xxQlist, const QString &strUrl)
{
    qDebug()<<xxQlist<<" url"<<strUrl;
    for(QString strWebType:xxQlist){

        QString strPath = GetWebBrousePath(strWebType);
        if(!strPath.isEmpty()){
            QStringList xxQlistOpen;
            xxQlistOpen.push_back("/c");
            xxQlistOpen.push_back(strPath);
            xxQlistOpen.push_back(strUrl);

            QProcess *m_process = new QProcess;
            m_process->startDetached("cmd", xxQlistOpen);
            qDebug()<<"cmd msg: "<<xxQlistOpen;
            return true;
        }
    }

    return false;  // 返回错误时,
}


bool openWebUrl(const QString &xxQStr, const QString &strUrl)
{
    QStringList xxQlist;
    int nPos = 0, nPosEnd = 0;
    do{
        nPosEnd = xxQStr.indexOf(",", nPos);
        if(nPosEnd > 0){
            xxQlist.push_back(xxQStr.mid(nPos, nPosEnd-nPos));
        }else{
            xxQlist.push_back(xxQStr.mid(nPos));
        }

        nPos = nPosEnd+1;
    }while(nPosEnd>0);

    if(!OpenWebUrl(xxQlist, strUrl)){
        QDesktopServices::openUrl(QUrl(strUrl));
    }

    return true;
}

调用方式:

QStringList xxQlistTest;
//    xxQlistTest.push_back("ChromeHTML");  //ChromeHTML.xxxx;
    xxQlistTest.push_back("IE.HTTPS");
    xxQlistTest.push_back("FirefoxHTML");
    xxQlistTest.push_back("360seURL");
//    OpenWebUrl(xxQlistTest, "baidu.com");


 openWebUrl("IE.HTTPS,FirefoxHTML,360seURL", "baidu.com");

demo下载地址:https://download.youkuaiyun.com/download/onlyfunboy/20312604

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值