Foro de elhacker.net

Programación => Programación Visual Basic => Mensaje iniciado por: LeandroA en 11 Enero 2009, 23:59 pm



Título: PeekMessage, WaitMessage (Ejemplo)
Publicado por: LeandroA en 11 Enero 2009, 23:59 pm
Hola estas son dos apis algo desconocidas, al menos para mi , y me llamaron mucho la atencion

nos evitan de utilizar un sublcass, ya que usa un bucle interceptando el msg buscado. ademas este bucle no consume el CPU.

pongo un ejemplito bien basico para interceptar la rueda del raton.


Código:
Option Explicit

Private Const PM_REMOVE = &H1

Private Type POINTAPI
        x As Long
        y As Long
End Type

Private Type Msg
    hwnd As Long
    Message As Long
    wParam As Long
    lParam As Long
    time As Long
    pt As POINTAPI
End Type

Private Declare Function PeekMessage Lib "user32" Alias "PeekMessageA" (lpMsg As Msg, ByVal hwnd As Long, ByVal wMsgFilterMin As Long, ByVal wMsgFilterMax As Long, ByVal wRemoveMsg As Long) As Long
Private Declare Function WaitMessage Lib "user32" () As Long
Private bCancel As Boolean

Private Const WM_MOUSEWHEEL = 522

Private Sub ProcessMessages()
Dim Message As Msg
Do While bCancel = False
    WaitMessage
    If PeekMessage(Message, Me.hwnd, WM_MOUSEWHEEL, WM_MOUSEWHEEL, PM_REMOVE) Then
         If Message.wParam < 0 Then
            Debug.Print "Scroll Down"
        Else
            Debug.Print "Scroll Up"
        End If
    End If
    DoEvents
    Loop
End Sub

Private Sub Form_Load()
Me.Show
ProcessMessages
End Sub

Private Sub Form_Unload(Cancel As Integer)
    bCancel = True
End Sub


Título: Re: PeekMessage, WaitMessage (Ejemplo)
Publicado por: aaronduran2 en 12 Enero 2009, 00:09 am
Muy interesante, la verdad.

Saludos  ;)


Título: Re: PeekMessage, WaitMessage (Ejemplo)
Publicado por: Dessa en 12 Enero 2009, 00:13 am
Son buenas, no las conocía.

saludos


Título: Re: PeekMessage, WaitMessage (Ejemplo)
Publicado por: cassiani en 12 Enero 2009, 00:22 am
see esta muy bien Leandro  ;)