2008-10-01 33 views
4

我有一個應用程序在用戶選擇它時在「當前」瀏覽器中啓動一個網頁。我的應用程序的這部分在Windows版本中工作正常,但我無法弄清楚如何在Linux版本中執行此操作。從我的應用程序在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); 

} 

回答

6

如果你正在寫這對於現代的發行版,你可以使用xdg-open

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

如果您使用的是舊版本,則必須使用特定於桌面的命令,如gnome-openexo-open

+0

所以我只是將程序名稱從「/ usr/bin/firefox」更改爲「xdg-open」? – KPexEA 2008-10-01 02:33:25

2

XDG開詳細的使用是新的標準,並在可能的情況你應該使用它。但是,如果發行版已超過幾年,它可能不存在,並且其他機制包括$ 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」。

1

關於xdg-open的說明:檢查http://portland.freedesktop.org/wiki/,「使用Xdg-utils」部分;它聲明您可以在您自己的應用程序中包含xdg-open腳本,並在目標系統沒有安裝xdg-open的情況下將其用作回退。

相關問題