从Linux中的应用程序启动网页

时间:2008-10-01 02:00:54

标签: c++ c linux browser

我有一个应用程序,当用户选择它时,会在“当前”浏览器中启动网页。我的应用程序的这部分在Windows版本中运行良好,但我无法弄清楚如何在Linux版本中执行此操作。

现在,Linux版本在特定目录中为Firefox进行了硬编码,并且每次运行它的新实例并且不显示我传入的URL。我希望它不会每次都启动新版本但是如果它已在运行,只需在当前打开的新页面中打开一个新页面。

对于Windows我使用:

ShellExecute(NULL,"open",filename,NULL,NULL,SW_SHOWNORMAL);

对于Linux,我目前使用:

pid_t pid;
char *args[2];

char *prog=0;
char firefox[]={"/usr/bin/firefox"};

if(strstri(filename,".html"))
    prog=firefox;

if(prog)
{
    args[0]=(char *)filename;
    args[1]=0;
    pid=fork();
    if(!pid)
        execvp(prog,args);

}

4 个答案:

答案 0 :(得分:7)

如果你是为现代发行版写的,可以使用xdg-open

$ xdg-open http://google.com/

如果您使用的是旧版本,则必须使用特定于桌面的命令,例如gnome-openexo-open

答案 1 :(得分:2)

xdg-open是新标准,您应尽可能使用它。但是,如果发行版超过几年,它可能不存在,替代机制包括$ BROWSER(较旧的尝试标准),gnome-open(Gnome),kfmclient exec(KDE),exo-open(Xfce),或者自己解析mailcap(text / html处理程序可能是一个浏览器)。

话虽如此,大多数应用程序都不会为这么多工作而烦恼 - 如果它们是为特定环境构建的,那么它们就会使用该环境的启动机制。例如,Gnome有gnome_url_show,KDE有KRun,大多数终端程序(例如,mutt)解析mailcap等。硬编码浏览器并允许分发者或用户覆盖默认值也很常见。

我不建议对此进行硬编码,但如果您真的想在Firefox中打开新标签,可以使用“firefox -new-tab $ URL”。

答案 2 :(得分:1)

xdg-open的注释:check http://portland.freedesktop.org/wiki/,“使用Xdg-utils”部分;它声明您可以在自己的应用程序中包含xdg-open脚本,并在目标系统没有安装xdg-open的情况下将其用作后备。

答案 3 :(得分:0)

如果您不想涉及其他应用程序,只需使用firefox的内置远程控制命令即可。 E.g:

firefox -remote 'openurl(http://stackoverflow.com)'

详细用法http://www.mozilla.org/unix/remote.html