在C ++ builder 5中设置默认浏览器

时间:2012-11-01 09:28:29

标签: c++ 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;

是否有一些代码,所以我可以自定义程序的默认浏览器,所以我不必编辑所有链接。

3 个答案:

答案 0 :(得分:0)

由于您使用的是C ++ Builder 5,我认为主机操作系统是Windows。因此,没有必要关心多平台问题。

Windows有一个“启动”命令。根据参数,它将启动相关的可执行文件。所以你可以试试:

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

只要参数以http://开头,我认为你没有任何问题。您可以将其移至ShellExecute(),但遗憾的是我没有在这里查看C ++ Builder。

希望这有帮助。

答案 1 :(得分:0)

如果我正确理解了您的问题(和其他评论),您目前会遇到问题ShellExecute,它会启动IE而不是默认浏览器。如果是这样,你可以试试这里。

  1. 默认系统浏览器在路径HKEY_CLASSES_ROOT\http\shell\open\command的系统注册表中注册。可能还有其他位置,但您可以从这个位置开始,看看它是否适用于大多数系统。您应该从代码中读取此条目,然后您将获得一个确切的命令行来启动默认浏览器。

  2. Windows支持特殊类型的文件 - *.url个文件(它们只是文本文件)。它们可用于通过默认浏览器打开特定URL。您可以使用以下内容生成临时*.url文件:

  3.   

    [InternetShortcut]

         

    URL = HTTP://www.domain.com/path查询

    拥有此类文件后,您可以照常使用ShellExecute执行此操作。

答案 2 :(得分:0)

当您致电ShellExecute()时,请将lpOperation参数设置为NULL,而不是"open"。这将执行http://协议的 true 默认操作,因为"open"并非始终是默认注册的动词。