Toon posts:

[VB6] SetWindowsHookEx (voor multimediakey) werkt tijdelijk

Pagina: 1
Acties:

Verwijderd

Topicstarter
Momenteel ben ik bezig aan een programma'tje dat de multimediaknopjes van een toetsenbord af moet vangen. Eerst hook ik gewoon een procedure:

code:
1
hHook = SetWindowsHookEx(WH_SHELL, AddressOf KeyboardProc, App.hInstance, 0)


waarbij de thread op 0 staat voor globale afvanging. Vervolgens heb ik:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Public Function KeyboardProc(ByVal idHook As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
    If idHook = HSHELL_APPCOMMAND Then
    
        Select Case (lParam And &HFFF0000) / &H10000
        
            Case APPCOMMAND_MEDIA_PLAY_PAUSE:
                Form1.Print "raak gedrukt"
                KeyboardProc = 1
                Exit Function
            
        End Select
        
    End If
        
    'call the next hook
    KeyboardProc = CallNextHookEx(hHook, ByVal idHook, ByVal wParam, ByVal lParam)
    'End If
End Function


Afijn, ipv form1.print doet ie dan een sendmessage naar winamp. Het werkt, maar het vreemde is, als ik dan bij het hooken de threadid op het nummer van de app (App.ThreadID) zet, werkt het vlekkeloos. Maar zodra ik die op 0 zet, zodat het ook overal werkt, doet ie het maar tijdelijk. Soms na een paar keer op knopje drukken, soms na 10 keer, soms na een tijdje niks doen, in ieder geval blijft het niet werken. Wat kan hier nou eigenlijk fout zijn? Als ik em afvang, geef ik als return waarde 1, en zoniet doe ik CallNextHookEx. Ook kwam ik met de search erachter dat callbacks ophouden als een nieuwe callback komt terwijl de oude nog bezig is, maar dat is hier ook niet het geval want het is heel weinig code.

  • riezebosch
  • Registratie: Oktober 2001
  • Laatst online: 04-05 13:09
Je moet sowieso CallNextHookEx doen. Volgens mij heb jij nCode idHook genoemd, dat is verder niet echt boeiend maar kan voor verwarring zorgen. Maar is RegisterHotKey niet veel meer wat voor jou?

[ Voor 54% gewijzigd door riezebosch op 09-05-2005 16:31 ]

Canon EOS 400D + 18-55mm F3.5-5.6 + 50mm F1.8 II + 24-105 F4L + 430EX Speedlite + Crumpler Pretty Boy Back Pack


Verwijderd

Topicstarter
werkt dat met ook multimedia keys dan?

als ik eruit haal dat ie return 1 doet, en dus gewoon callnexthookex doet, doet ie nog steeds hetzelfde

[ Voor 59% gewijzigd door Verwijderd op 09-05-2005 16:43 ]


  • farlane
  • Registratie: Maart 2000
  • Laatst online: 07-05 10:04
Global keyboard hook mag alleen in een dll.

Somniferous whisperings of scarlet fields. Sleep calling me and in my dreams i wander. My reality is abandoned (I traverse afar). Not a care if I never everwake.