在Linux中从我的应用程序启动网页
Launch web page from my application in Linux
我有一个应用程序,当用户选择时,它会在"当前"浏览器中启动网页。我的应用程序的这一部分在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-open
或exo-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
- QSerialPort 在应用程序启动之前正在使用中
- C++ - 从 MFC 应用程序启动记事本,并将其默认标题从 "Untitled - Notepad" 更改为其他内容
- 在应用程序启动时停靠 QDockWidget?
- 在应用程序启动时读取文件
- osX - 如何从我的 QT 应用程序启动另一个程序
- 如何跟踪 C++14 中的控制台应用程序启动的次数?
- 调试从 Linux 中的另一个C++应用程序启动的 python 脚本
- 添加新对话框后,MFC 应用程序启动失败并"DLL Initialization Failed"
- 在应用程序启动之前做某事
- 基于CDialog的应用程序启动时,如何将我的辅助对话框窗口带到顶部
- 在Qt和C++中从另一个应用程序启动一个应用软件会产生问题
- 在 C++/STL/MFC 应用程序启动早期发生的致命异常中,是否可以信任堆栈回溯符号名称?
- 从控制台应用程序启动窗口应用程序
- 如何从另一个C++控制台应用程序启动/结束C++控制台应用程序
- 从 MFC(c++) 应用程序启动的可执行 jar 中获取返回值
- 从 MFC 应用程序启动 Java 时,在 MFC 应用程序中显示等待光标,直到它完成其进程
- 从控制台应用程序启动控制台应用程序
- Windows应用程序启动我的控制台
- 从应用程序启动 Linux 服务时避免套接字继承C++
- 如何在应用程序启动后隐藏其命令提示符