从我的应用程序启动网页

时间:2008-09-30 13:37:46

标签: c++ c windows browser

好吧,这可能有一个非常简单的答案,但我以前从未尝试过这样做:如何从应用程序中启动网页?您知道,“点击此处转到我们的常见问题解答”,当他们这样做时,启动他们的默认Web浏览器并转到您的页面。我在Windows中使用C / C ++,但如果有更广泛,更便携的方式,我也想知道。

6 个答案:

答案 0 :(得分:18)

#include <windows.h>

void main()
{
   ShellExecute(NULL, "open", "http://yourwebpage.com",
            NULL, NULL, SW_SHOWNORMAL);
}

答案 1 :(得分:4)

我相信你想使用ShellExecute()函数,它应该尊重用户对默认浏览器的选择。

答案 2 :(得分:4)

请仔细阅读ShellExecute的docs。为了真正防范代码,他们建议初始化COM。请参阅此处的文档,并查找“COM应该如此处所示进行初始化”的部分。简短的回答是这样做(如果你还没有初始化COM):

CoInitializeEx(NULL,COINIT_APARTMENTTHREADED | COINIT_DISABLE_OLE1DDE)

答案 3 :(得分:4)

对于记录(因为您要求跨平台选项),以下在Linux中运行良好:

#include <unistd.h>
#include <stdlib.h>

void launch(const std::string &url)
{
  std::string browser = getenv("BROWSER");
  if(browser == "") return;

  char *args[3];
  args[0] = (char*)browser.c_str();
  args[1] = (char*)url.c_str();
  args[2] = 0;

  pid_t pid = fork();
  if(!pid)
    execvp(browser.c_str(), args);
}

用作:

launch("http://example.com");

答案 4 :(得分:3)

您可以使用ShellExecute功能。 示例代码:

ShellExecute( NULL, "open", "http://stackoverflow.com", "", ".", SW_SHOWDEFAULT );

答案 5 :(得分:1)

出于某种原因,如果应用程序即将在调用后立即终止,则ShellExecute有时不起作用。我们在ShellExecute之后添加了Sleep(5000),它有所帮助。