我正在使用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 :(得分:0)
由于您使用的是C ++ Builder 5,我认为主机操作系统是Windows。因此,没有必要关心多平台问题。
Windows有一个“启动”命令。根据参数,它将启动相关的可执行文件。所以你可以试试:
system( "start http://maps.google.nl/" );
只要参数以http://
开头,我认为你没有任何问题。您可以将其移至ShellExecute()
,但遗憾的是我没有在这里查看C ++ Builder。
希望这有帮助。
答案 1 :(得分:0)
如果我正确理解了您的问题(和其他评论),您目前会遇到问题ShellExecute
,它会启动IE而不是默认浏览器。如果是这样,你可以试试这里。
默认系统浏览器在路径HKEY_CLASSES_ROOT\http\shell\open\command
的系统注册表中注册。可能还有其他位置,但您可以从这个位置开始,看看它是否适用于大多数系统。您应该从代码中读取此条目,然后您将获得一个确切的命令行来启动默认浏览器。
Windows支持特殊类型的文件 - *.url
个文件(它们只是文本文件)。它们可用于通过默认浏览器打开特定URL。您可以使用以下内容生成临时*.url
文件:
[InternetShortcut]
URL = HTTP://www.domain.com/path查询
拥有此类文件后,您可以照常使用ShellExecute
执行此操作。
答案 2 :(得分:0)
当您致电ShellExecute()
时,请将lpOperation
参数设置为NULL
,而不是"open"
。这将执行http://
协议的 true 默认操作,因为"open"
并非始终是默认注册的动词。