从我的应用程序启动网页

好吧,这可能有一个非常简单的答案,但我从来没有试过这样做:如何从应用程序内启动一个网页? 你知道,“点击这里去我们的常见问题”,当他们启动他们的默认网页浏览器,并进入您的网页。 我在Windows中使用C / C ++,但是如果有更广泛的,更便携的方法,我也想知道这一点。

#include <windows.h> void main() { ShellExecute(NULL, "open", "http://yourwebpage.com", NULL, NULL, SW_SHOWNORMAL); } 

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

请仔细阅读ShellExecute的文档 。 要真正地防止你的代码,他们建议初始化COM。 看到这里的文档,并寻找“COM应该被初始化如下所示”的部分。 简短的答案是这样做的(如果你还没有启动COM):

CoInitializeEx(NULL,COINIT_APARTMENTTHREADED | COINIT_DISABLE_OLE1DDE)

为了记录(因为您要求跨平台选项),以下在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"); 

您可以使用ShellExecute函数。 示例代码:

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

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