Bonjour à tous,

Ce topic ressemble fort à l'autre mais je préfère en faire 2 pour la clareté du paysage.

1) En scrutant la FAQ Système de Visual Basic,
Je n'arrive pas à bien comprendre la différence de ce lien entre son titre et la phrase en italique à la fin du sujet:

"Comment fermer un programme ouvert avec la fonction Shell ?"
http://vb.developpez.com/faq/?page=Systeme#close_exe

et

Avec ce code source vous ne pourrez donc pas, par exemple, fermer une fenêtre de l'explorateur Windows ouverte par Shell() ...
J'ouvre mon application avec la fonction Shell:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
Dim Lancement
Lancement = Shell("C:\Program Files\Application\Application.exe", 3)
2)
Et jusque là, je la fermais avec:

Déclarations:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
'déclarations à mettre dans un module séparé
Public Declare Function SendMessage Lib "user32" Alias "SendMessageA" _
    (ByVal HWnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
Public Declare Function FindWindow Lib "user32" Alias "FindWindowA" _
    (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
 
Public Const WM_CLOSE = &H10
Public Const WM_DESTROY = &H2
Public Const WM_NCDESTROY = &H82
Code:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
Dim HWnd As Long
HWnd = FindWindow(vbNullString, "Application")
If HWnd > 0 Then
    SendMessage HWnd, WM_NCDESTROY, 0, 0
End If
1) Pouvez-vous m'apporter votre lumière sur cette différence?
2) Pouvez-vous m'éclarer sur la meilleure méthode à utiliser ?
Celle d'origine (WM_NCDESTROY), ce serait gentil

Merci