QString softwarePath;
GetChromePath(softwarePath);
qDebug() << "softwarePath: " <<softwarePath;
QStringList arguments;
//arguments<<"--chrome-frame"<<"-kiosk"<<str; // 不带浏览器的边框界面
arguments<<"--chrome-frame"<<webstr; // 带浏览器的边框界面
//pRc->startDetached(softwarePath ,arguments);//父进程kill,子进程不会
QProcess *pRc = new QProcess(this);
pRc->start(softwarePath ,arguments); // 父进程kill,子进程也会被kill
其中的webstr就是需要打开的网络地址,比如www.baidu.com
void Wide2Bytes(char* pBytes,TCHAR* pWide)
{
int nLen,i;
nLen = WideCharToMultiByte(CP_ACP,0,pWide,-1,NULL,0,NULL,NULL);
i = (int)wcslen(pWide)*sizeof(TCHAR);
WideCharToMultiByte(CP_ACP,0,pWide,-1,pBytes,nLen,NULL,NULL);
}
/* 获取chrome路径 */
void cradle::GetChromePath(QString& strPath)
{
HKEY hKey;
TCHAR SubKeyName[] = TEXT("Software\\Microsoft\\Windows\\CurrentVersion\\App Paths\\chrome.exe");
TCHAR ValueData[1024];
char Data[1024];
DWORD Buffer=1024;
if(RegOpenKeyEx(HKEY_CURRENT_USER, SubKeyName, 0, KEY_READ, &hKey)!= ERROR_SUCCESS)
{
qDebug()<<"Error: Regedit cannot be opened! ";
}
else
{
if(RegQueryValueEx(hKey, TEXT("Path"), 0, NULL, (LPBYTE)ValueData, &Buffer) == ERROR_SUCCESS)
{
Wide2Bytes(Data, ValueData);
QString strPathTemp =QString::fromStdWString(ValueData);
strPathTemp +="\\chrome.exe";
strPathTemp = strPathTemp.replace(QRegExp("\\\\"),"/");
strPath = strPathTemp;
RegCloseKey(hKey);
}
else
qDebug()<<"RegQueryValueEx failed![ValueData = %s]",ValueData;
}
if(strPath != "") // 第一种情况获取成功后直接退出
{
return;
}
if(RegOpenKeyEx(HKEY_LOCAL_MACHINE, SubKeyName, 0, KEY_READ, &hKey)!= ERROR_SUCCESS)
{
qDebug()<<"Error: Regedit cannot be opened! ";
}
else
{
if(RegQueryValueEx(hKey, TEXT("Path"), 0, NULL, (LPBYTE)ValueData, &Buffer) == ERROR_SUCCESS)
{
Wide2Bytes(Data, ValueData);
QString strPathTemp =QString::fromStdWString(ValueData);
strPathTemp +="\\chrome.exe";
strPathTemp = strPathTemp.replace(QRegExp("\\\\"),"/");
strPath = strPathTemp;
RegCloseKey(hKey);
}
else
qDebug()<<"RegQueryValueEx failed![ValueData = %s]",ValueData;
}
}