-1

私のアプリケーションでは、ユーザーは特定の時点で実行するコマンドを保存できます。今、誰かが「C:\Program Files\Internet Explorer\iexplore.exe http://www.google.com」を追加しました。これは、WinExec 関数を使用して呼び出されます。ここで、このコマンドを「start http://www.google.com」に変更すると、関数は ERROR_FILE_NOT_FOUND を返しますが、これはオンラインで見つけた例からは機能するはずです。

4

2 に答える 2

4

コマンドは次のようになります。

cmd.exe /c start http://www.google.com

注意WinExecを読んでください:

注 この関数は、16 ビット Windows との互換性のためにのみ提供されています。アプリケーションはCreateProcess関数を使用する必要があります。

WinExecURL を開くために使用する場合は、 instedShellExecuteに渡しopenて使用します。lpOperation

ShellExecute(NULL,
             TEXT("open"),
             TEXT("http://www.google.com"),
             NULL,
             NULL,
             SW_SHOWNORMAL);

URL は、ユーザーの既定のブラウザーで開かれます。

于 2013-08-28T11:02:34.280 に答える
4

WinExecプロセスを開始するためのものです。しかし、あなたがやろうとしていることは、どのプログラムが関連付けられているかをシェルに調べさせhttp://、その URL を表示させるのが最善の方法です。あなたがする必要があるのは、ShellExecuteまたはを呼び出すことShellExecuteExです。

例えば:

ShellExecute(0, NULL, "http://www.google.com", NULL, NULL, SW_SHOWDEFAULT);

startで動作しない理由は、実行可能ファイルWinExecではないためです。startこれは、インタープリターによって処理される組み込みコマンドcmd.exeです。したがってWinExec、渡した場合cmd.exe(またはCOMSPEC環境変数の値) を使用してcmd.exe、 を呼び出すことができますstart。しかし、それは間違ったやり方です。

于 2013-08-28T10:33:54.310 に答える