IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VB.NET Discussion :

Problème de compilation VB 2010


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau candidat au Club
    Inscrit en
    Septembre 2007
    Messages
    1
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 1
    Par défaut Problème de compilation VB 2010
    Bonjour à tous.
    Je souhaite créer une DLL dont la mission est de générer un HOOK sur la molette de la souris. J'ai récupéré une version .xls de cette fonctionnalité qui fonctionne très bien à l'aide d'une macro en VBA. J'essaie actuellement de porter cette macro en VB de manière a créer cette DLL qui sera utilisée par une application écrite dans un tout autre langage. Cependant j'obtiens une erreur sur l'instruction AddressOf :

    Erreur 1 Impossible de convertir l'expression 'AddressOf' en 'Long', car 'Long' n'est pas un type délégué. D:\Class1_Laureat.vb 92 87 ClassLibrary3
    Un GRAND MERCI à toute solution a apporter à ce code.

    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
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    Public Class LaureatHook
        '-----Allows use of MouseWheel on designated ListBox/ComboBox on a form or, sheet if modified.--------
        'Option Explicit
     
        Declare Function FindWindow Lib "user32" Alias "FindWindowA" _
                                    (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
     
        Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long) As Long
     
        Declare Function GetForegroundWindow Lib "user32" () As Long
     
        Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" _
                               (ByVal Destination As Long, ByVal Source As Long, ByVal Length As Long)
     
        Declare Function SetWindowsHookEx Lib _
                                          "user32" Alias "SetWindowsHookExA" (ByVal idHook As Long, ByVal lpfn As Long, _
                                                                              ByVal hmod As Long, ByVal dwThreadId As Long) As Long
     
        Declare Function CallNextHookEx Lib "user32" (ByVal hHook As Long, _
                                                      ByVal nCode As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
     
        Declare Function UnhookWindowsHookEx Lib "user32" (ByVal hHook As Long) As Long
     
        Declare Function GetLastError Lib "kernel32" () As Long  ' Used this one to crack the problem.
     
        Public Structure POINTAPI
            Public X As Long
            Public Y As Long
        End Structure
     
     
        ' Déclaration de la structure appelée MSLLHOOKSTRUCT
     
        Public Structure MSLLHOOKSTRUCT  'Will Hold the lParam struct Data
            Public pt As POINTAPI
            Public mouseData As Long  ' Holds Forward\Bacward flag
            Public flags As Long
            Public time As Long
            Public dwExtraInfo As Long
        End Structure
     
     
        Public Const HC_ACTION = 0
        Public Const WH_MOUSE_LL = 14
        Public Const WM_MOUSEWHEEL = &H20A
     
        Public hhkLowLevelMouse, lngInitialColor As Long
        Public udtlParamStuct As MSLLHOOKSTRUCT
        Public LaFenetre As Long
        Public Const GWL_HINSTANCE = (-6)
        Public intTopIndex As Integer
     
        Function GetHookStruct(ByVal lParam As Long) As MSLLHOOKSTRUCT
     
            ' VarPtr returns address; LenB returns size in bytes.
            CopyMemory(udtlParamStuct, lParam, udtlParamStuct)
            GetHookStruct = udtlParamStuct
        End Function
     
        Function LowLevelMouseProc _
                (ByVal nCode As Long, ByVal wParam As Long, ByVal lParam As Long) As String
     
            'Avoid XL crashing if RunTime error occurs due to Mouse fast movement
            On Error Resume Next
            '    \\ Unhook & get out in case the application is deactivated
            If GetForegroundWindow <> LaFenetre Then
                UnHook_Mouse(LaFenetre)
                Return ""
            End If
            If (nCode = HC_ACTION) Then
                If wParam = WM_MOUSEWHEEL Then
                    '\\ Don't process Default WM_MOUSEWHEEL Window message
                    LowLevelMouseProc = True
                    If GetHookStruct(lParam).mouseData > 0 Then
                        'Up Scroll
                        Return "-1"
                    Else  '\\ if rolling backward decrease Top index by 1 to cause _
                        '\\Down Scroll
                        Return "1"
                    End If
     
                End If
                Return ""
            End If
            LowLevelMouseProc = CallNextHookEx(0, nCode, wParam, lParam)
        End Function
     
        Sub Hook_Mouse(ByVal wFenetre As Long)
            ' Statement to maintain the handle of the hook if clicking outside of the control.
            ' There isn't a Hinstance for Application, so used GetWindowLong to get handle.
            LaFenetre = wFenetre
            If hhkLowLevelMouse < 1 Then hhkLowLevelMouse = SetWindowsHookEx(WH_MOUSE_LL, AddressOf LowLevelMouseProc, _
                                                                                                      wFenetre, GWL_HINSTANCE)
        End Sub
     
        Sub UnHook_Mouse(ByVal wFenetre As Long)
            If hhkLowLevelMouse <> 0 Then
                UnhookWindowsHookEx(hhkLowLevelMouse)
                hhkLowLevelMouse = 0
            End If
        End Sub
     
        Private Sub CopyMemory(ByVal udtlParamStuct As MSLLHOOKSTRUCT, ByVal lParam As Long, ByVal udtlParamStuct1 As MSLLHOOKSTRUCT)
            Throw New NotImplementedException
        End Sub
     
    End Class

  2. #2
    Membre Expert Avatar de hunteshiva
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Février 2010
    Messages
    1 069
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Chef de projet en SSII
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2010
    Messages : 1 069
    Par défaut
    Bonjour,

    code tassé, essaye de l'ahérer un peut...

    ton code ne peu planter qu'a cet endroit:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    If hhkLowLevelMouse < 1 Then
        hhkLowLevelMouse = SetWindowsHookEx(WH_MOUSE_LL, AddressOf LowLevelMouseProc, wFenetre, GWL_HINSTANCE)
    Tout est dit dans l'erreur, tu met un "AdressOf" a la place d'un Long
    AddressOf LowLevelMouseProc
    Pourtant la définistion est clair, tu l'a saisi en haut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Declare Function SetWindowsHookEx Lib _
                                          "user32" Alias "SetWindowsHookExA" (ByVal idHook As Long, ByVal lpfn As Long, _
                                                                              ByVal hmod As Long, ByVal dwThreadId As Long) As Long
    J'ai vite fait entendu parlé du Hook de la souris,
    P-e que cet exemple t'aidera
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Public Sub New()
                MouseHookDelegate = New MouseProcDelegate(AddressOf MouseProc)
                MouseHook = SetWindowsHookEx(WH_MOUSE_LL, MouseHookDelegate, System.Runtime.InteropServices.Marshal.GetHINSTANCE(System.Reflection.Assembly.GetExecutingAssembly.GetModules()(0)).ToInt32, 0)
            End Sub
    PS: désolé je croyais que c'était pour le clavier

Discussions similaires

  1. Problème de compilation sous Visual Studio 2010
    Par Donovane dans le forum Visual C++
    Réponses: 1
    Dernier message: 26/04/2014, 01h29
  2. Problème de compilation sur Visual C++ 2010 Express
    Par ericb02 dans le forum VC++ .NET
    Réponses: 1
    Dernier message: 02/04/2011, 12h06
  3. Problème de compilation - Migration vers 2010
    Par Dos dans le forum Visual Studio
    Réponses: 2
    Dernier message: 09/03/2011, 14h54
  4. Problème de compilation de la DLL du XMLRad
    Par [DreaMs] dans le forum XMLRAD
    Réponses: 2
    Dernier message: 16/04/2003, 16h46
  5. Réponses: 1
    Dernier message: 27/05/2002, 01h44

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo