Comment ouvrir et fermer un fichier.exe

cs_garat Messages postés 32 Date d'inscription dimanche 1 août 2004 Statut Membre Dernière intervention 19 janvier 2011 - 1 nov. 2004 à 16:35
cs_garat Messages postés 32 Date d'inscription dimanche 1 août 2004 Statut Membre Dernière intervention 19 janvier 2011 - 2 nov. 2004 à 22:33
Bonjour à tous,

Je souhaite ouvrir et fermer la calculatrice (ou un autre éxécutable) depuis une macro Excel.

Pour l'ouvrir j'ai :

Shell("C:\WINDOWS\system32\CALC.exe", 1)

Je n'arrive pas à la fermer.

Merci pour votre aide

8 réponses

cs_CanisLupus Messages postés 3757 Date d'inscription mardi 23 septembre 2003 Statut Membre Dernière intervention 13 mars 2006 21
1 nov. 2004 à 17:10
Salut,

D'abord, tu mets dans le général
public ReturnValue

Puis, à la place de :
Shell("C:\WINDOWS\system32\CALC.exe", 1)
tu mets
ReturnValue = Shell("C:\WINDOWS\system32\CALC.exe", 1)
Ainsi, tu récupère le Handle de l'appli "Calculatrice"

Ensuite, dans un bouton ou dans l'évènement de ton choix, tu colles :

AppActivate ReturnValue 'tu actives l'appli Calculatrice
SendKeys "%{F4}", True ' et tu lui envoies l'ordre de fermeture

Cordialement, CanisLupus
0
cs_garat Messages postés 32 Date d'inscription dimanche 1 août 2004 Statut Membre Dernière intervention 19 janvier 2011
1 nov. 2004 à 18:36
Merci CanisLupus pour ce coup de pouce.

Cette réponse fonctionne trés bien pour une application qui autorise son focus comme la calculatrice.

Mais dans le cas d'une application qui se lance en tâche de fond dans la barre de tâche et qui demande un clic droit et "Exit" pour se fermer ?

Merci

Garat
0
Saros Messages postés 921 Date d'inscription vendredi 20 décembre 2002 Statut Membre Dernière intervention 23 septembre 2010
1 nov. 2004 à 19:42
TerminateProcess

Bouriiiin...

Saros
0
cs_garat Messages postés 32 Date d'inscription dimanche 1 août 2004 Statut Membre Dernière intervention 19 janvier 2011
1 nov. 2004 à 20:12
Merci Saros pour cette réponse lapidaire.

Mais pourrais-tu développer ?

Merci
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Saros Messages postés 921 Date d'inscription vendredi 20 décembre 2002 Statut Membre Dernière intervention 23 septembre 2010
2 nov. 2004 à 08:45
Si on peut déclarer des APIs en VBA, il est possible de forcer une appilcation à quitter grâce à TerminateProcess :

Public Declare Function TerminateProcess Lib "kernel32" Alias "TerminateProcess" (ByVal hProcess As Long, ByVal uExitCode As Long) As Long


hProcess c'est le Handle, l'autre je ne sais pas trop à quoi il sert...

Je crois qu'il est également possible d'envoyer un message de sortie genre WM_EXIT à une application pour simuler une fermeture, avec l'API SendMessage.

Saros
0
cs_garat Messages postés 32 Date d'inscription dimanche 1 août 2004 Statut Membre Dernière intervention 19 janvier 2011
2 nov. 2004 à 19:45
Merci Saros,

Cette fois-ci s'est plus limpide.

Mais j'ai rajouté cette ligne dans mon code VBA et cela ne ferme pas l'application concernée.

A+
0
Saros Messages postés 921 Date d'inscription vendredi 20 décembre 2002 Statut Membre Dernière intervention 23 septembre 2010
2 nov. 2004 à 22:30
http://longre.free.fr/pages/api/terminaison.htm

Sous VBA, avec Excel et utilisant l'API TerminateProcess ^^
Qui dit mieux...

Saros
0
cs_garat Messages postés 32 Date d'inscription dimanche 1 août 2004 Statut Membre Dernière intervention 19 janvier 2011
2 nov. 2004 à 22:33
Une seule chose à dire :

TROP FORT !

8-)
0
Rejoignez-nous