簡體   English   中英

從Linux中的應用程序啟動網頁

[英]Launch web page from my application in Linux

我有一個應用程序,當用戶選擇它時,在“當前”瀏覽器中啟動一個網頁。 我的這部分應用程序在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);

}

如果你是為現代發行版寫這個,你可以使用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_show,KDE有KRun,大多數終端程序(例如,mutt)解析mailcap等。硬編碼瀏覽器並允許分發者或用戶覆蓋默認值也很常見。

我不建議硬編碼,但如果你真的想在Firefox中打開一個新標簽,你可以使用“firefox -new-tab $ URL”。

xdg-open的注釋:查看http://portland.freedesktop.org/wiki/ ,“使用Xdg-utils”部分; 它表示您可以在自己的應用程序中包含xdg-open腳本,並在目標系統未安裝xdg-open的情況下將其用作回退。

如果您不想涉及其他應用程序,只需使用firefox的內置遠程控制命令即可。 例如:

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

有關詳細用法, 請訪問http://www.mozilla.org/unix/remote.html

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM