Home
Home

--- Soumis par  Dev Ashish---

Fermer une autre application.

(Q)    Comment terminer une autre application, depuis Access?

(A)     Pour terminer une autre application, il nous faut son nom de classe Windows. Si vous ne le possédez pas, voir l'article "Find ClassName of a Running App".  Il s'agit alors de fournir ce nom à la fonction fCloseApp.

 

'************** Code Start ***************
Private Const WM_CLOSE = &H10
Private Const INFINITE = &HFFFFFFFF
Private Declare Function apiPostMessage Lib "user32" _
        Alias "PostMessageA" _
        (ByVal hwnd As Long, _
        ByVal wMsg As Long, _
        ByVal wParam As Long, _
        lParam As Any) _
        As Long
Private Declare Function apiFindWindow Lib "user32" _
        Alias "FindWindowA" _
        (ByVal lpClassName As String, _
        ByVal lpWindowName As String) _
        As Long
Private Declare Function apiWaitForSingleObject Lib "kernel32" _
        Alias "WaitForSingleObject" _
        (ByVal hHandle As Long, _
        ByVal dwMilliseconds As Long) _
        As Long
Private Declare Function apiIsWindow Lib "user32" _
        Alias "IsWindow" _
        (ByVal hwnd As Long) _
        As Long
        
Function fCloseApp(lpClassName As String) As Boolean
' Exemple d'utilisation:
'   Pour fermer "Calculator", la calculette fournie avec Windows:
'       ?fCloseApp("SciCalc")
'
Dim lngRet As Long, lnghWnd As Long, lngX As Long
    lnghWnd = apiFindWindow(lpClassName, vbNullString)
    If lnghWnd <> 0 Then
        lngRet = apiPostMessage(lnghWnd, WM_CLOSE, vbNull, vbNull)
        lngX = apiWaitForSingleObject(lnghWnd, INFINITE)
        fCloseApp = Not (apiIsWindow(lnghWnd) = 0)
    End If
End Function
'************* Code End ***************