ヘルプには、Shellexec と Exec の違いに関する徹底的な説明はありません。それは
Shellexec('','program.exe',params,'',SW_HIDE,ewWaitUntilTerminated,ResultCode)
に相当
Exec('program.exe',params,'',SW_HIDE,ewWaitUntilTerminated,ResultCode)
exeファイルを扱うときは?もちろん、exeやバッチとは別のファイルを実行したい場合はShellexecを使います。
ただし、Shellexec でも Exec でも、自分の命令を正しく動作させることができない場合があります。常に機能する唯一の解決策は、バッチ ファイルを作成し、それを shellexec で実行することです。個人的には、一時ファイルを処理する必要があり、取得した結果コードを信頼できないため、このソリューションは好きではありません。この命令を機能させる方法がわからないため、バッチファイルソリューションに戻る必要があります: (コマンドプロンプトで宛先ファイルがまだ存在しない場合、命令が失敗するというエラーが発生します命令は宛先ファイルが存在しなくても機能します)。
mysqldump := 'C:\Program Files (x86)\MySQL\MySQL Server 5.0\bin\mysqldump.exe';
params := '-uroot -ppassword myschema>C:\myappdir\backup\newbackup.sql';
//the destination folder exists, the file newbackup.sql does not exist
Shellexec('',mysqldump,params,'',SW_HIDE,ewWaitUntilTerminated,ResultCode);
私は Windows 7 64 ビットで作業しています。プログラム (Inno Setup インストーラー) は管理者権限で実行されます。