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

Launch web page from my application in Linux

本文关键字:应用程序 启动 网页 我的 Linux      更新时间:2023-10-16

我有一个应用程序,当用户选择时,它会在"当前"浏览器中启动网页。我的应用程序的这一部分在Windows版本中运行良好,但我不知道如何在Linux构建中做到这一点。

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

对于我使用的窗口:

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);
}

如果你是为现代发行版写这篇文章,你可以使用xdg-open:

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

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

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

话虽如此,大多数应用程序都不需要那么多工作——如果它们是为特定环境构建的,它们会使用该环境的启动机制。例如,Gnome有Gnome_;url_;显示,KDE有KRun,大多数终端程序(例如,mutt)解析mailcap等。对浏览器进行硬编码并允许分发服务器或用户覆盖默认值也很常见。

我不建议硬编码,但如果你真的想在Firefox中打开一个新的选项卡,你可以使用"Firefox-new-tab$URL"。

打开xdg的注意事项:checkhttp://portland.freedesktop.org/wiki/,"使用Xdg-utils"一节;它指出,您可以在自己的应用程序中包含xdg-open脚本,并在目标系统尚未安装xdg-open的情况下将其用作回退。

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

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

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