我尝试编写代码片段,以便从我的VC ++应用程序代码中打开谷歌浏览器中的URL,而我系统的默认浏览器仍然只是Internet Explorer。
// Existing VC++ Code used in application to open the URL in Internet Explorer(Default browser)
ShellExecute (NULL, "open", pURLinfo->szURL, NULL, NULL, SW_SHOWNORMAL);
在参考下面的stackoverflow链接时,我到达了下面的代码更改
How to launch Chrome maximized via shell execution?
// VC++ Code change to open the URL in Google Chrome
PROCESS_INFORMATION processInformation;
STARTUPINFO startupInfo;
memset(&processInformation, 0, sizeof(processInformation));
memset(&startupInfo, 0, sizeof(startupInfo));
startupInfo.cb = sizeof(startupInfo);
startupInfo.wShowWindow = SW_SHOWMAXIMIZED;
CreateProcess("C:\Program Files\Google\Chrome\Application\chrome.exe",pURLinfo->szURL, NULL, NULL, FALSE, CREATE_NEW_CONSOLE, NULL, NULL, &startupInfo, &processInformation);
//VC++ Code change to open the URL in Google Chrome
据我所知,打开URL的要求无法通过ShellExecute()实现,因为shellExecute只会打开默认浏览器,CreateProcess()代码构建没有错误,但不会在Chrome浏览器中打开URL。单击URL的按钮,没有任何反应。任何人都可以指出我们在代码的CreateProcess部分有什么问题吗?..
提前致谢!
更新
在重写下面的CreateProcess时,Chrome浏览器会打开,但它是空白的。
CreateProcess("C:\\Program Files\\Google\\Chrome\\Application\\chrome.exe",pURLinfo->szURL, NULL, NULL, FALSE, CREATE_NEW_CONSOLE, NULL, NULL, &startupInfo, &processInformation);
有人可以了解如何在CreateProcess()中传递URL,因为现在Chrome浏览器会在执行CreateProcess()时打开。
答案 0 :(得分:1)
Chrome需要在URL前面的命令行上显示“ - ”(两个短划线字符)。你需要这样的东西:
string commandLine = "\"C:\\Program Files\\Google\\Chrome\\Application\\chrome.exe\"";
commandLine += " -- ";
commandLine += pURLinfo->szURL;
CreateProcess(commandLine.c_str(), NULL, NULL, NULL, FALSE,
CREATE_NEW_CONSOLE, NULL, NULL, &startupInfo, &processInformation);
ShellExecute
也应该有效:
string program = "C:\\Program Files\\Google\\Chrome\\Application\\chrome.exe";
string params = " -- ";
params += pURLinfo->szURL;
ShellExecute(NULL, "open", program.c_str(), params.c_str(), NULL, SW_SHOWNORMAL);