C ++ Builder — Установить браузер по умолчанию в C ++ Builder 5

Я использую C ++ Builder 5 и получил несколько ссылок в моей программе. Я хочу, чтобы эти ссылки открывались в системном браузере по умолчанию или в Firefox, если по умолчанию нет опции.

Я использовал:

ShellExecute(NULL, "open", "http://maps.google.nl/maps?f=q&hl=nl&q=", NULL, NULL, SW_SHOWNORMAL);

Но для некоторых ссылок это не будет работать с кодом, который уже существует.

// this is not working
case 4: if(Qry_shipment->RecordCount == 0){return;}
webaddress =    "http://maps.google.nl/maps?f=q&hl=nl&q=";

//we need the info from clicked shipment-not from overflow
if(Qry_shipment->FieldByName("tstohn")->AsString == pAuthorization[7])
{
webaddress =    webaddress
+ Qry_shipment->FieldByName("tslpla")->AsString  + ","+ Qry_shipment->FieldByName("tslzcd")->AsString  + ","+ Qry_shipment->FieldByName("lalaad")->AsString;
}
else
{
webaddress =    webaddress
+ Qry_shipment->FieldByName("tsupla")->AsString  + ","+ Qry_shipment->FieldByName("tsuzcd")->AsString  + ","+ Qry_shipment->FieldByName("lalos")->AsString;

}
break;

Может быть, есть кусок кода, чтобы я мог определить браузер по умолчанию для самой программы, так что мне не нужно редактировать все ссылки.

0

Решение

Поскольку вы используете C ++ Builder 5, я предполагаю, что основной операционной системой является Windows. Таким образом, нет необходимости заботиться о многоплатформенных проблемах.

В Windows есть команда «Пуск». В зависимости от аргумента он запустит соответствующий исполняемый файл. Так что вы можете попробовать просто:

system( "start http://maps.google.nl/" );

Пока аргумент начинается с http://Я не думаю, что у вас будут какие-либо проблемы. Вы можете переместить это, чтобы обмануть ShellExecute(), но, к сожалению, у меня нет C ++ Builder, чтобы проверить это.

Надеюсь это поможет.

0

Другие решения

Если я правильно понимаю ваш вопрос (и дополнительный комментарий), вы в настоящее время сталкиваетесь с проблемой ShellExecute, который запускает IE вместо браузера по умолчанию. Если это так, вот что вы можете попробовать.

  1. Системный браузер по умолчанию зарегистрирован в системном реестре по пути HKEY_CLASSES_ROOT\http\shell\open\command, Возможно, могут быть и другие местоположения, но вы можете начать с этого и посмотреть, работает ли он на большинстве систем. Вы должны прочитать эту запись из своего кода, и вы получите точную командную строку для запуска браузера по умолчанию.

  2. Windows поддерживает специальный тип файлов — *.url файлы (это просто текстовые файлы). Их можно использовать для открытия определенного URL-адреса с помощью браузера по умолчанию. Вы можете создать временный *.url файл со следующим содержанием:

[InternetShortcut]

URL = HTTP: //www.domain.com/path запрос

Имея такой файл, вы можете выполнить его с ShellExecuteпо-прежнему.

0

Когда вы звоните ShellExecute(), установить lpOperation параметр для NULL вместо "open", Это выполнит http:// пРОТОКОЛ правда действие по умолчанию, как "open" не всегда зарегистрированный по умолчанию глагол.

0