anthonycara Posted August 11, 2004 Share Posted August 11, 2004 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 More sharing options...
0 bwx Posted August 11, 2004 Share Posted August 11, 2004 The RegisterHotKey API function can do what you need. Hope that helps. Link to comment Share on other sites More sharing options...
0 anthonycara Posted August 11, 2004 Author Share Posted August 11, 2004 ah gr8, an msdn ref :s if anyone could tell me exactly how to do it, id be gr8ful. Link to comment Share on other sites More sharing options...
0 bwx Posted August 11, 2004 Share Posted August 11, 2004 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 More sharing options...
Question
anthonycara
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