Utilisateur anonyme
-
19 août 2005 à 11:55
cs_grandvizir
Messages postés1106Date d'inscriptionsamedi 8 novembre 2003StatutMembreDernière intervention 3 septembre 2006
-
20 août 2005 à 11:56
Salut à tous
Imaginez que vous avez une FORM et deux boutons OUVRIR FERMER. Ma question est quelle est la source pour que :
*Quand on clique sur OUVRIR un programme, comme machin.exe, s'ouvre (si possible avec une taille bien définit de la fenêtre).
*Quand on clique sur FERMER le programme (et donc sa fenêtre) se ferme.
cs_grandvizir
Messages postés1106Date d'inscriptionsamedi 8 novembre 2003StatutMembreDernière intervention 3 septembre 200622 19 août 2005 à 12:26
L'application ne le fera pas ça toute seule si elle n'est pas prédisposée.
Tu lances l'appli avec ShellExecute(0,'open','fichier.exe','','',,0);
Tu recherches le handle de la fenêtre avec FindWindow. Cela nécessite de connaître titre de la fenêtre ainsi que sa classe. Pour le savoir, utilise Spy++ :
Utiliser Spy++
Tu exécutes SetWindowPos sur le handle donné par FindWindow. Aide-toi de l'aide pour bien paramétrer SetWindowPos.
Pour fermer la fenêtre, tu envoies le message WM_SYSCOMMAND avec le paramètre SC_CLOSE sur le même Handle :
SendMessage(Handle, WM_SysCommand, SC_Close, 0);
cs_Delphiprog
Messages postés4297Date d'inscriptionsamedi 19 janvier 2002StatutMembreDernière intervention 9 janvier 201332 19 août 2005 à 14:07
Petit rappel à propos de ShellExecute : "If the function succeeds, the return value is the instance handle of the application that was run, or the handle of a dynamic data exchange (DDE) server application.
If the function fails, the return value is an error value that is less than or equal to 32. " (Extrait de l'aide en ligne de "Microsoft Win32 programmer's reference")
Alors, pourquoi rechercher le handle de la fenêtre avec FindWindow ?
<HR color=#008000>
Pensez à cliquer sur Réponse acceptée lorsque la réponse vous convient.
cs_grandvizir
Messages postés1106Date d'inscriptionsamedi 8 novembre 2003StatutMembreDernière intervention 3 septembre 200622 20 août 2005 à 11:56
C'est vrai... mais j'ai toujours un doute sur la fiabilité du résultat renvoyé. En schématisant, je veux être sûr d'avoir le handle de la fenêtre principale de travail et non un numéro d'instance ou le handle de TApplication.
Je n'ai jamais eu affaire à de tels codes. Donc, je ne peux pas affirmer que l'utilisation de FindWindow est indispensable. Je dis simplement qu'on peut l'utiliser pour de telles recherches.