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