私のアプリケーションでは、ユーザーは特定の時点で実行するコマンドを保存できます。今、誰かが「C:\Program Files\Internet Explorer\iexplore.exe http://www.google.com」を追加しました。これは、WinExec 関数を使用して呼び出されます。ここで、このコマンドを「start http://www.google.com」に変更すると、関数は ERROR_FILE_NOT_FOUND を返しますが、これはオンラインで見つけた例からは機能するはずです。
3591 次
2 に答える
4
コマンドは次のようになります。
cmd.exe /c start http://www.google.com
注意WinExec
を読んでください:
注 この関数は、16 ビット Windows との互換性のためにのみ提供されています。アプリケーションは
CreateProcess
関数を使用する必要があります。
WinExec
URL を開くために使用する場合は、 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 に答える