0

私は C++ ビルダー 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

あなたの質問 (および追加のコメント) を正しく理解している場合、現在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 に答える
0

C++ Builder 5 を使用しているため、ホスト OS は Windows であると想定しています。したがって、マルチプラットフォームの問題を気にする必要はありません。

Windows には「開始」コマンドがあります。引数に応じて、関連する実行可能ファイルを起動します。したがって、次のようにして試すことができます。

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

で始まる引数でhttp://あれば問題ないと思います。おそらく、これをトリックに移動できますがShellExecute()、残念ながら、ここにはチェックするための C++ ビルダーがありません。

お役に立てれば。

于 2012-11-01T10:19:40.643 に答える
0

を呼び出すときは、パラメータをではなく にShellExecute()設定します。これは、常にデフォルトで登録された動詞であるとは限らないため、プロトコルの真のデフォルト アクションを実行します。lpOperationNULL"open"http://"open"

于 2012-11-01T21:58:01.627 に答える