0

我使用 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;

是否有一段代码,所以我可以为它自己的程序定义默认浏览器,这样我就不必编辑所有链接。

4

3 回答 3

0

由于您使用的是 C++ Builder 5,我假设主机操作系统是 Windows。因此,无需关心多平台问题。

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

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

只要参数以 开头http://,我认为您不会有任何问题。您可能可以将其移至 trick ShellExecute(),但不幸的是,我没有 C++ Builder 来检查它。

希望这可以帮助。

于 2012-11-01T10:19:40.643 回答
0

调用时ShellExecute(),将lpOperation参数设置为,NULL而不是"open"。这将执行http://协议的真正默认操作,因为"open"并不总是默认注册动词。

于 2012-11-01T21:58:01.627 回答
0

如果我正确理解了您的问题(和附加评论),您当前会遇到问题ShellExecute,它会启动 IE 而不是默认浏览器。如果是这样,您可以尝试以下方法。

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

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

[互联网快捷方式]

URL=http://www.domain.com/path?query

拥有这样一个文件,您可以ShellExecute像往常一样执行它。

于 2012-11-01T12:40:26.037 回答