无法使用VC ++中的CreateProcess()打开URL

时间:2014-04-21 09:55:21

标签: visual-c++ shellexecute createprocess

我尝试编写代码片段,以便从我的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()时打开。

1 个答案:

答案 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);