Probleme de ShellExecute tordu ! [Résolu]

Signaler
Messages postés
449
Date d'inscription
lundi 19 avril 2004
Statut
Membre
Dernière intervention
8 avril 2009
-
Messages postés
2226
Date d'inscription
dimanche 5 octobre 2003
Statut
Modérateur
Dernière intervention
18 novembre 2010
-
Hello World :)

Petit problème avec le lancement d'une appli externe (mais un peu + tordu, quand meme )

J'ai donc un bout de code sous Delphi7 qui me lance une appli externe :

ShellExecute(Application.Handle,nil,'D:\Program Files\Mapsonic\mapstore.exe',nil,nil,SW_SHOWDEFAULT);

qui marche tres bien. Là ou le bat blesse, c'est que l'executable là a la facheuse manie de mettre la balance audio tout à gauche, et c'est pas solutionnable.

Or donc, dans le petit monde du carmedia, qqun a fait un minitruc en VB qui lance mapstore, attend, n milliseconde, et remet la balance au centre. Ce prog, balance.exe n'a aucune interface, aucune fenetre.

Je peux exécuter balance.exe depuis zindoz en doublecliquant dessus, depuis une fenetre dos aussi. Mais si dans mon prog Delphi je mets

ShellExecute(Application.Handle,nil,'D:\Program Files\Mapsonic\balance.exe',nil,nil,SW_SHOWDEFAULT);

Pouf, je recoit en retour une jolie fenetre Erreur53, fichier introuvable, alors que le nom et le chemin du dit fichier sont corrects.

Et là, à force de ramer, j'attaque la falaise....

gnhelp :)

7 réponses

Messages postés
374
Date d'inscription
vendredi 20 octobre 2000
Statut
Modérateur
Dernière intervention
30 novembre 2020

Essaye avec :

Uses SysUtils;
var F:String;

F:='D:\Program Files\Mapsonic\balance.exe';

ShellExecute(Application.Handle,'open',Pchar(F),nil,Pchar(ExtractFilePath(s)),
SW_SHOWDEFAULT);

Bon Coding ....

ManChesTer.
Messages postés
374
Date d'inscription
vendredi 20 octobre 2000
Statut
Modérateur
Dernière intervention
30 novembre 2020

oupps...

ExtractFilePath(F) et pas s, lol

Bon Coding ....

ManChesTer.
Messages postés
449
Date d'inscription
lundi 19 avril 2004
Statut
Membre
Dernière intervention
8 avril 2009
2
Cool. Il fallait donc lui préciser le repertoire de travail, bizarre... m'enfin ca roole :)

Merci bôcoo :D

gnh !
Messages postés
449
Date d'inscription
lundi 19 avril 2004
Statut
Membre
Dernière intervention
8 avril 2009
2
Autre problème, a la fermeture maintenant, grmblblblblbbl

je ferme mapstore avec :

Hndl:=FindWindow(nil,'ViaMichelin Mapstore 2.32');
SendMessage(Hndl,WM_CLOSE,0,0); // 0,0 ou 1,1, pareil

Et là systématiquement j'ai droit a la pitie fenetre du programme qui a planté :
"Ce programme va être arreté car il a effectué une opération non conforme, gnagnaganag, Fermer, Debuguer, Détails>>"

Y aurait il un moyen de fermer un prog de manière propre ?
Messages postés
4297
Date d'inscription
samedi 19 janvier 2002
Statut
Modérateur
Dernière intervention
9 janvier 2013
29
Une petite précaution s'impose avant de femer une fenêtre qui n'aurait pas été trouvée :

  Hndl:=FindWindow(nil,'ViaMichelin Mapstore 2.32');
  if Hndl <> 0 then
    SendMessage(Hndl,WM_CLOSE,0,0);


Es-tu sur à 100% que 'ViaMichelin Mapstore 2.32' est bien le titre qui apparait en haut de la fenêtre de l'application à fermer ?

Pensez à cliquer sur Réponse acceptée lorsque la réponse vous convient.
http://www.croix-rouge.fr/index/partner_campagne.html
Messages postés
449
Date d'inscription
lundi 19 avril 2004
Statut
Membre
Dernière intervention
8 avril 2009
2
Vivi, sur a 100% je viens de checker. D'ailleurs mapstore se ferme bien, mais j'ai ce warning....

gnh !
Messages postés
2226
Date d'inscription
dimanche 5 octobre 2003
Statut
Modérateur
Dernière intervention
18 novembre 2010
13
attention de ne pas poster 2 questions differentes dans le meme post !
mieux vaut faire 2 questions surtout si il y a une "reponse acceptée" :/

deltafx : ton probleme viens d'ailleurs je pense.