• 0

[VB6] Detect Ctrl+Alt combination?


Question

is there any way i can detect a Ctrl+Alt+Something from anywhere in windows, not just when my application has focus? (i.e. whatpulse's Ctrl+Alt+P)

-ac

Link to comment
Share on other sites

3 answers to this question

Recommended Posts

  • 0
ah gr8, an msdn ref :s if anyone could tell me exactly how to do it, id be gr8ful.

Wish I could help, but I don't know VB. :pinch:

I did find an example, however:

Private Const MOD_ALT = &H1
Private Const MOD_CONTROL = &H2
Private Const MOD_SHIFT = &H4
Private Const PM_REMOVE = &H1
Private Const WM_HOTKEY = &H312
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 RegisterHotKey Lib "user32" (ByVal hWnd
As Long, ByVal id As Long, ByVal fsModifiers As Long, ByVal vk
As Long) As Long
Private Declare Function UnregisterHotKey Lib "user32" (ByVal
hWnd As Long, ByVal id As Long) As Long
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 Sub ProcessMessages()
 ? ?Dim Message As Msg
 ? ?'loop until bCancel is set to True
 ? ?Do While Not bCancel
 ? ? ? ?'wait for a message
 ? ? ? ?WaitMessage
 ? ? ? ?'check if it's a HOTKEY-message
 ? ? ? ?If PeekMessage(Message, Me.hWnd, WM_HOTKEY, WM_HOTKEY,
PM_REMOVE) Then
 ? ? ? ? ? ?'minimize the form
 ? ? ? ? ? ?WindowState = vbMinimized
 ? ? ? ?End If
 ? ? ? ?'let the operating system process other events
 ? ? ? ?DoEvents
 ? ?Loop
End Sub
Private Sub Form_Load()
 ? ?'KPD-Team 2000
 ? ?'URL: http://www.allapi.net/
 ? ?'E-Mail: KPDTeam@Allapi.net
 ? ?Dim ret As Long
 ? ?bCancel = False
 ? ?'register the Ctrl-F hotkey
 ? ?ret = RegisterHotKey(Me.hWnd, &HBFFF&, MOD_CONTROL, vbKeyF)
 ? ?'show some information
 ? ?Me.AutoRedraw = True
 ? ?Me.Print "Press CTRL-F to minimize this form"
 ? ?'show the form and
 ? ?Show
 ? ?'process the Hotkey messages
 ? ?ProcessMessages
End Sub
Private Sub Form_Unload(Cancel As Integer)
 ? ?bCancel = True
 ? ?'unregister hotkey
 ? ?Call UnregisterHotKey(Me.hWnd, &HBFFF&)
End Sub

Hope that helps.

Link to comment
Share on other sites

This topic is now closed to further replies.
  • Recently Browsing   0 members

    • No registered users viewing this page.