URL запуска - кроссплатформенность (C ++) - PullRequest
1 голос
/ 24 февраля 2012

Я не уверен, возможно ли это, но я пытаюсь открыть URL в браузере пользователя по умолчанию на C ++.Я бы просто использовал ShellExecute, но я пытаюсь сделать его кроссплатформенным.Кто-нибудь знает какие-либо способы, что это возможно, если это так?

Под кроссплатформенностью я имею в виду 3:

  • Linux
  • Windows
  • Mac

ИмеюБуквально гугл по поиску ооочень долго и ничего не нашел.Спасибо за любую помощь:)

1 Ответ

5 голосов
/ 24 февраля 2012

Лучше всего использовать кроссплатформенную библиотеку, например Qt или что-то в этом роде.Qt имеет хороший класс с именем QDesktopServices, который вы можете использовать для этого:

QDesktopServices::openUrl(QUrl("http://google.com", QUrl::TolerantMode));

Согласно документации:

Открывает указанный URL в соответствующем веб-браузере дляокружение рабочего стола пользователя и возвращает true в случае успеха;в противном случае возвращает false.

Обратите внимание, что это добавит зависимость от Qt для всех ваших платформ, что может быть очень тривиальной задачей.Лучше всего использовать пользовательский код для каждой платформы и устанавливать директивы компилятора, чтобы видеть, в какой операционной системе вы находитесь, и запускать код запуска браузера в соответствии с этим.

Например, если он компилируется в Windows, выможно просто скомпилировать функцию ShellExecute, если она выполняется в Linux, тогда, в зависимости от среды рабочего стола, вы можете запустить соответствующую команду.

Но, если вы действительно создаете кроссплатформенное приложение, такая зависимость, какQt не будет плохим, поскольку он поможет со многими кроссплатформенными вещами (такими как сохранение иконки в системном трее, воспроизведение мультимедиа и т. Д.).

Без библиотеки не существует стандартного способа C ++сделать это, что будет работать на всех платформах.

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