Запустите веб-страницу из моего приложения в Linux - PullRequest
5 голосов
/ 01 октября 2008

У меня есть приложение, которое запускает веб-страницу в «текущем» браузере, когда пользователь выбирает ее. Эта часть моего приложения прекрасно работает в версии для 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);

}

Ответы [ 4 ]

7 голосов
/ 01 октября 2008

Если вы пишете это для современных дистрибутивов, вы можете использовать xdg-open:

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

Если вы используете старую версию, вам нужно будет использовать команду для рабочего стола, такую ​​как gnome-open или exo-open.

2 голосов
/ 01 октября 2008

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».

1 голос
/ 06 октября 2008

Примечание для xdg-open: отметьте http://portland.freedesktop.org/wiki/, раздел «Использование Xdg-utils»; в нем говорится, что вы можете включить скрипт xdg-open в свое собственное приложение и использовать его в качестве запасного варианта в случае, если в целевой системе уже не установлен xdg-open.

0 голосов
/ 01 октября 2008

Если вы не хотите привлекать дополнительные приложения, просто используйте встроенные команды дистанционного управления firefox. Например:

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

Se подробное использование на http://www.mozilla.org/unix/remote.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...