Bonjour,

Je cherche à fermer une application préalablement ouverte par la fonction shell.
Pour cela, j'ai trouvé dans la FAQ VB6 le code premettant de la faire :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
Private Declare Function EnumWindows Lib "user32" (ByVal lpEnumFunc As Long, ByVal lParam As Long) As Long
    Private Declare Function GetWindowThreadProcessId Lib "user32" (ByVal hwnd As Long, _
       ByVal lpdwprocessid As Long) 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 Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hwnd As Long, _
       ByVal nIndex As Long) As Long
    Private Const WM_CLOSE = &H10
    Private Const GWL_STYLE = (-16)
    Private Const WS_SYSMENU = &H80000

    Private Function CloseWindow(ByVal hwnd As Long, ByVal hInstance As Long) As Long

        Dim idproc As Long

        idproc = 0

        'reçoit dans idproc l'id du processus lié à cette fenêtre
        GetWindowThreadProcessId(hwnd, idproc)
        If (idproc = hInstance) And ((GetWindowLong(hwnd, GWL_STYLE) And WS_SYSMENU) = WS_SYSMENU) Then
            PostMessage(hwnd, WM_CLOSE, 0, 0)
        End If

        'obligatoire pour qu'EnumWindows continue l'énumération
        CloseWindow = True

    End Function

    Public Sub KillApp(ByVal hInstance As Long)

        EnumWindows(AddressOf CloseWindow, hInstance)

    End Sub
Cependant, sous VB express 2010, le message d'erreur suivant apparait dans la liste des erreurs empechant la compilation (correspondant à la ligne en rouge ci-dessus):

Impossible de convertir l'expression 'AddressOf' en 'Long', car 'Long' n'est pas un type délégué.
Pouvez-vous m'aider à résoudre cette erreur ?

Merci d'avance