Fermer un logiciel quelconque

Chris57

XLDnaute Occasionnel
Bonjour à tous,

je cherche le moyen de fermer un logiciel tournant en tâche de fond à travers une macro Excel.
En effet en ligne de commande il semble que ce soit impossible...

J'ai testé cette commande trouvée sur le forum :
Code:
Sub FermerUneApplication()
    'Nécessite d'activer la référence "Microsoft WMI Scripting Library"
    Dim objProcess As WbemScripting.SWbemObject
    Dim colProcessList As WbemScripting.SWbemObjectSet
    Dim objWMIService As WbemScripting.SWbemServices
    Dim strComputer As String
    
    strComputer = "."
    Set objWMIService = GetObject("winmgmts:" _
        & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
    Set colProcessList = objWMIService.ExecQuery _
        ("Select * from Win32_Process Where Name = 'monprog.exe'")
    
    For Each objProcess In colProcessList
        objProcess.Terminate
    Next
End Sub


elle fonctionne mais ne ferme pas normalement l'application. Elle force la fermeture et cela me fait perdre des données qui sont écrites si l'application est fermée normalement.

quelqu'un a une idée?
 

Chris57

XLDnaute Occasionnel
Re : Fermer un logiciel quelconque

bon après 5 semaines de recherches j'ai enfin trouvé :

Code:
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 Form_Load()

    Dim hWnd As Long

    hWnd = FindWindow(vbNullString, "Calculatrice")
    If hWnd <> 0 Then
        Call PostMessage(hWnd, WM_CLOSE, 0, 0)
    Else
        MsgBox "Impossible de trouver la fenêtre !", vbExclamation
    End If

End Sub
 

Discussions similaires

E
Réponses
1
Affichages
3 K
M

Statistiques des forums

Discussions
312 104
Messages
2 085 335
Membres
102 864
dernier inscrit
abderrashmaen