Fonction inverse de ShellExecute ?

cs_f6dqm1 Messages postés 62 Date d'inscription lundi 8 novembre 2004 Statut Membre Dernière intervention 25 mai 2013 - 2 déc. 2005 à 14:41
WhiteHippo Messages postés 1154 Date d'inscription samedi 14 août 2004 Statut Membre Dernière intervention 5 avril 2012 - 3 déc. 2005 à 09:40
Bonjour à tous


Existe-t'il la fonction inverse de ShellExecute ?
Plus précisement : j'ai ouvert en utilisant ShellExecute une application toto externe à MonApplication.
ShellExecute(0,"open",'toto.exe',null,null,sw_shownormal).
Comment puis-je la refermer à partir de MonApplication (une fonction du genre ShellClose mais ça n'exite pas dans l'API) ?
Merci d'avance pour les idées
Gabriel

3 réponses

jlen100 Messages postés 1606 Date d'inscription samedi 10 juillet 2004 Statut Membre Dernière intervention 25 juillet 2014 13
2 déc. 2005 à 14:57
vas voir :

Tuer une application



@+

jlen
0
cs_f6dqm1 Messages postés 62 Date d'inscription lundi 8 novembre 2004 Statut Membre Dernière intervention 25 mai 2013
3 déc. 2005 à 08:48
Bonjour et merci pour la réponse.
Je suis allé sur le lien et j'ai essayé le petit bout programme Killprogram.
Après tatonnement, j'ai réussi à comprendre que la fonction FindWindow marchait avec le TITRE de la fenètre et non pas avec le nom et le chemin du fichier ouvert.
Ca ne simplifie pas le problème car le titre de le fenètre n'est pas toujours connu précisemment. Quelquefois il n'a strictement rien à voir avec le nom de l'exe, quelquefois il varie à chaque ouverture de l'exe (exemple les jeux qui affichent un numéro variable dans le titre de la fenètre), quelquefois il change en fonction de la langue. Bref, pas simple.
J'ai voulu essayé le bout de programme de ELGUEVEL (KillProcessBy Name) mais là, je merdouille car je ne trouve pas dans quelle librairie se trouve les fonctions de la TOOL HELP LIBRARY (exemple CreateToolHelp32Snapshot) sous Delphi7.
Cordialement
Gabriel
0
WhiteHippo Messages postés 1154 Date d'inscription samedi 14 août 2004 Statut Membre Dernière intervention 5 avril 2012 3
3 déc. 2005 à 09:40
var
InfoProc : TProcessInformation ;
InfoStart : TStartupInfo ;


procedure TForm1.Button1Click(Sender: TObject);
var
Resultat : Boolean ;
begin
Infostart.cb := sizeof(TStartupInfo);
Resultat := CreateProcessA
( 'project1.exe'
, 'd:\borland\delphi\projects'
, NIL
, NIL
, TRUE
, NORMAL_PRIORITY_CLASS
, NIL
, NIL
, InfoStart
, InfoProc
) ;
end;


procedure TForm1.Button2Click(Sender: TObject);
begin
TerminateProcess( InfoProc.hProcess, 0 ) ;
end;

Cordialement.



<HR>



Il existe 10 catégories de personne. Ceux qui connaissent le binaire et les autres...
0
Rejoignez-nous