Shellexec vs Exec vs Shellexec mon fichier de commandes

Je ne trouve pas dans l'aide d'une explication exhaustive de la différence entre Shellexec et Exec. Est le

Shellexec('','program.exe',params,'',SW_HIDE,ewWaitUntilTerminated,ResultCode) 

équivalent à

Exec('program.exe',params,'',SW_HIDE,ewWaitUntilTerminated,ResultCode) 

lorsque vous travaillez avec des fichiers exe? Bien sûr, quand je veux exécuter un fichier différent de exe ou lot de fabrication, à l'utilisation Shellexec.

Parfois, cependant, je ne peux pas obtenir mon istruction pour fonctionner correctement ni par Shellexec ni Exec. La seule solution qui a toujours le travail consiste à écrire un fichier de commandes et de l'exécuter via shellexec. Personnellement je n'aime pas cette solution car je suis confronté à un fichier temporaire et je n'ai pas confiance en la resultcode obtenus.
Maintenant, je vais devoir revenir pour le fichier de commandes de la solution, car je ne sais pas comment obtenir ce travail d'instruction: (l'erreur est qu'il soulève l'instruction échoue si le fichier de destination n'est pas déjà présent, alors que dans l'invite de commande de l'instruction fonctionne même le fichier de destination n'existe pas).

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);

Je travaille sur Windows 7 64 bits, le programme (une Inno Setup installer) est exécutée avec les droits d'administration

Certainement utiliser le {pf32} constante au lieu de C:\Program Files (x86). Il vous renvoie le chemin d'accès correct pour le 32 bits répertoire program files. Je pense que ça pourrait être la cause de votre problème, mais difficile à dire. Vous pouvez aussi vérifier si le fichier existe avec le FileExists fonction avant d'essayer de l'exécuter.

OriginalL'auteur lib | 2012-04-29