Fermer une aplication

cs_Waldo2188 Messages postés 142 Date d'inscription jeudi 12 février 2004 Statut Membre Dernière intervention 20 mai 2008 - 11 févr. 2005 à 15:24
zippro4012 Messages postés 216 Date d'inscription mardi 15 juin 2004 Statut Membre Dernière intervention 26 février 2006 - 11 févr. 2005 à 16:42
Salut à tous,

Ca fait déja bien une heure que je tourne en rond, pour trouver
commment fermer Acrobat reader (Oui je sais le petite croix en haut a
droite...)

voila ce que j'ai essayer



Private Declare Function ShellExecute Lib "shell32.dll" Alias
"ShellExecuteA" (ByVal hwnd As Long, ByVal lpOperation As String, ByVal
lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As
String, ByVal nShowCmd As Long) As Long

Private Declare Function FindWindow Lib "user32" Alias "FindWindowA"
(ByVal lpClassName As String, ByVal lpWindowName As String) As Long

Private Declare Function PostMessage Lib "user32" Alias "PostMessageA"
(ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal
lParam As Long) As Long

Private Const WM_CLOSE = &H10



Private Sub Command1_Click()





Dim Retour As Long



'la fonction ShellExecute va ouvrir l'application adapté à l'extention

Retour = ShellExecute(hwnd, "open", "c:\TOTO.PDF", "", vbNullString, 0)



End Sub



Private Sub Command2_Click()



Dim lgHwnd As Long, lgRep As Long



lgHwnd = FindWindow(vbNullString, "AcroRd32.exe")



lgRep = PostMessage(lgHwnd, WM_CLOSE, vbNull, vbNull)



End Sub





j'explique le code, le premier boutont sert à ouvrir un fichier PDF, le
deuxième est sensé récupérer le handle d'adobe Acrobat Reader, mais
rien! la fonction FindWindow me retourne 0 et aucun handle.

Alors là je sais plus quoi faire!



Je vous remerci pour vos futur réponses.



Waldo

MWT

2 réponses

cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 130
11 févr. 2005 à 15:44
La fonction FindWindow se base sur le titre de la fenêtre et non le nom de l'éxécutable pour récupèrer le handle, donc :



lgHwnd = FindWindow(vbNullString, "Adobe Reader")



Mais je ne suis pas sûr que ca marche : il faut normalement lui préciser le nom de la classe de la fenêtre !



Si ca ne marche pas, va voir ma source nommée Anti-Pub, c'est un
gestionnaire de fenêtre qui permet, entre-autre, de lister les fenêtres
visibles...


DarK Sidious

Administrateur et reponsable VB/API du site www.ProgOtoP.com
0
zippro4012 Messages postés 216 Date d'inscription mardi 15 juin 2004 Statut Membre Dernière intervention 26 février 2006 1
11 févr. 2005 à 16:42
Dans FindWindow, il n'y a besoin que d'un paramètre pour que ça marche

Mais il faut simplement l'utiliser comme ça pour que ça marche :



Dim AdName as string

AdName = "Adobe Acrobat"

RetVal = FindWindow("","AdName)



Seulement voila, le titre n'est pas très fiable. Tu devrait utiliser le
nom de classe. Pour info, la classe d'Acrobat Reader est :
"AdobeAcrobat". Procède comme ceci :



Function GetAdobeHandle( ) as long

Dim ClassName as string

ClassName = "AdobeAcrobat"

GetAdobeHandle = FindWindow(ClassName,"")

End Function
0
Rejoignez-nous