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

Ладно, у этого ответа, возможно, очень простой ответ, но я никогда не пытался сделать это раньше: как запустить веб-страницу из приложения? Вы знаете, «нажмите здесь, чтобы перейти к нашим часто задаваемым вопросам», и когда они это сделают, он запускает веб-браузер по умолчанию и переходит на вашу страницу. Я работаю на C / C ++ в Windows, но если есть более широкий и более портативный способ сделать это, я бы тоже хотел это знать.

Ответы [ 6 ]

18 голосов
/ 30 сентября 2008
#include <windows.h>

void main()
{
   ShellExecute(NULL, "open", "http://yourwebpage.com",
            NULL, NULL, SW_SHOWNORMAL);
}
4 голосов
/ 01 июля 2011

Для записи (поскольку вы запросили кроссплатформенный вариант), в Linux хорошо работает следующее:

#include <unistd.h>
#include <stdlib.h>

void launch(const std::string &url)
{
  std::string browser = getenv("BROWSER");
  if(browser == "") return;

  char *args[3];
  args[0] = (char*)browser.c_str();
  args[1] = (char*)url.c_str();
  args[2] = 0;

  pid_t pid = fork();
  if(!pid)
    execvp(browser.c_str(), args);
}

Использовать как:

launch("http://example.com");
4 голосов
/ 30 сентября 2008

Пожалуйста, внимательно прочитайте документы для ShellExecute. Чтобы действительно пуленепробиваемый ваш код, они рекомендуют инициализировать COM. Посмотрите документы здесь и найдите часть, которая говорит: «COM должен быть инициализирован, как показано здесь». Краткий ответ - сделать это (если вы еще не установили COM):

CoInitializeEx (NULL, COINIT_APARTMENTTHREADED | COINIT_DISABLE_OLE1DDE)

4 голосов
/ 30 сентября 2008

Полагаю, вы хотите использовать функцию ShellExecute (), которая должна учитывать выбор пользователя по умолчанию в браузере.

3 голосов
/ 30 сентября 2008

Вы можете использовать функцию ShellExecute. Пример кода:

ShellExecute( NULL, "open", "http://stackoverflow.com", "", ".", SW_SHOWDEFAULT );
1 голос
/ 19 мая 2015

По какой-то причине ShellExecute иногда не работает, если приложение собирается завершить работу сразу после вызова. Мы добавили Sleep (5000) после ShellExecute, и это помогает.

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