Я использую 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;
Может быть, есть кусок кода, чтобы я мог определить браузер по умолчанию для самой программы, так что мне не нужно редактировать все ссылки.
Поскольку вы используете C ++ Builder 5, я предполагаю, что основной операционной системой является Windows. Таким образом, нет необходимости заботиться о многоплатформенных проблемах.
В Windows есть команда «Пуск». В зависимости от аргумента он запустит соответствующий исполняемый файл. Так что вы можете попробовать просто:
system( "start http://maps.google.nl/" );
Пока аргумент начинается с http://
Я не думаю, что у вас будут какие-либо проблемы. Вы можете переместить это, чтобы обмануть ShellExecute()
, но, к сожалению, у меня нет C ++ Builder, чтобы проверить это.
Надеюсь это поможет.
Если я правильно понимаю ваш вопрос (и дополнительный комментарий), вы в настоящее время сталкиваетесь с проблемой ShellExecute
, который запускает IE вместо браузера по умолчанию. Если это так, вот что вы можете попробовать.
Системный браузер по умолчанию зарегистрирован в системном реестре по пути HKEY_CLASSES_ROOT\http\shell\open\command
, Возможно, могут быть и другие местоположения, но вы можете начать с этого и посмотреть, работает ли он на большинстве систем. Вы должны прочитать эту запись из своего кода, и вы получите точную командную строку для запуска браузера по умолчанию.
Windows поддерживает специальный тип файлов — *.url
файлы (это просто текстовые файлы). Их можно использовать для открытия определенного URL-адреса с помощью браузера по умолчанию. Вы можете создать временный *.url
файл со следующим содержанием:
[InternetShortcut]URL = HTTP: //www.domain.com/path запрос
Имея такой файл, вы можете выполнить его с ShellExecute
по-прежнему.
Когда вы звоните ShellExecute()
, установить lpOperation
параметр для NULL
вместо "open"
, Это выполнит http://
пРОТОКОЛ правда действие по умолчанию, как "open"
не всегда зарегистрированный по умолчанию глагол.