Closed Thread
Results 1 to 5 of 5

Thread: keypress == action when form isnt' active

  1. #1
    ikkeugh is offline Learning Programmer
    Join Date
    Sep 2007
    Posts
    79
    Rep Power
    0

    keypress == action when form isn't active

    I've restarted to modify one of my previous programs in vb6.0and I'm having a problem: how could you let the program know when the ctrl button is pressed down when the form isn't active
    someone told me to hook my keyboard, but what's that ?
    Last edited by ikkeugh; 11-30-2008 at 10:23 AM.

  2. CODECALL Circuit advertisement
    Join Date
    Always
    Posts
    Many

     
  3. #2
    ljy61ex is offline Newbie
    Join Date
    Dec 2008
    Posts
    3
    Rep Power
    0

    Re: keypress == action when form isnt' active

    Hello,ikkeugh!
    I can add a timer to the form and set the interval.
    Then declare the API Function:
    Code:
    Public Declare Function GetAsyncKeyState Lib "user32" Alias "GetAsyncKeyState" (ByVal vKey As Long) As Integer
    If you use GetAsyncKeyState(KeyCode) and return a negtive number, it means that you have press down the key which the virtual KeyCode maps to.
    You enter:
    Code:
    Public Function HotKey(tKey As Long) As Boolean
     HotKey = (GetAsyncKeyState(tKey) < 0)
    End Function
    And I give you the KeyCode List Module:
    Attribute VB_Name = "KeyModule"
    Code:
    Public Function RKeyName(UKeyCode As String, ReKey As Integer) As Integer
        If Len(UKeyCode) = 1 And ((Asc(UKeyCode) > 47 And Asc(UKeyCode) < 58) Or (Asc(UKeyCode) > 64 And Asc(UKeyCode) < 91)) Then
            RKeyName = Asc(UKeyCode)
        ElseIf (Len(UKeyCode) = 2 Or Len(UKeyCode) = 3) And Asc(Left$(UKeyCode, 1)) = 70 Then
            RKeyName = Asc(Right$(UKeyCode, Len(UKeyCode) - 1)) + 63
        ElseIf Len(UKeyCode) = 5 And (Asc(Right$(UKeyCode, 1)) > 47 And Asc(Right$(UKeyCode, 1)) < 58) Then
            RKeyName = Asc(Right$(UKeyCode, 1))
        Else
            Select Case UKeyCode
            Case "Enter"
             RKeyName = 13
            Case "Esc"
             RKeyName = 27
            Case "Space"
             RKeyName = 32
            Case "Caps Lock"
             RKeyName = 20
            Case "Page Up"
             RKeyName = 33
            Case "Page Down"
             RKeyName = 34
            Case "End"
             RKeyName = 35
            Case "Home"
             RKeyName = 36
            Case "←"
             RKeyName = 37
            Case "↑"
             RKeyName = 38
            Case "→"
             RKeyName = 39
            Case "↓"
             RKeyName = 40
            Case "Insert"
             RKeyName = 45
            Case "Delete"
             RKeyName = 46
            Case "Num Lock"
             RKeyName = 144
            Case "Pause Break"
             RKeyName = 19
            Case "NUM /"
             RKeyName = 111
            Case "NUM *"
             RKeyName = 106
            Case "NUM -"
             RKeyName = 109
            Case "NUM +"
             RKeyName = 107
            Case "NUM ."
             RKeyName = 110
            Case "`"
             RKeyName = 192
            Case "-"
             RKeyName = 189
            Case "="
             RKeyName = 187
            Case "Scroll Lock"
             RKeyName = 145
            Case "\"
             RKeyName = 220
            Case "Back"
             RKeyName = 8
            Case "["
             RKeyName = 219
            Case "]"
             RKeyName = 221
            Case ";"
             RKeyName = 186
            Case "'"
             RKeyName = 222
            Case ","
             RKeyName = 188
            Case "."
             RKeyName = 190
            Case "/"
             RKeyName = 191
            Case Else
             RKeyName = ReKey
            End Select
        End If
    End Function
    Public Function UKeyName(KeyCode As Integer, ReKey As String) As String
        If (KeyCode > 64 And KeyCode < 91) Or (KeyCode > 47 And KeyCode < 58) Then
            UKeyName = Chr(KeyCode)
        ElseIf KeyCode > 95 And KeyCode < 106 Then
            UKeyName = "NUM " + Chr(KeyCode - 48)
        ElseIf KeyCode > 111 And KeyCode < 124 Then
            UKeyName = "F" + Chr(KeyCode - 63)
        Else
            Select Case KeyCode
            Case 13
             UKeyName = "Enter"
            Case 27
             UKeyName = "Esc"
            Case 32
             UKeyName = "Space"
            Case 20
             UKeyName = "Caps Lock"
            Case 33
             UKeyName = "Page Up"
            Case 34
             UKeyName = "Page Down"
            Case 35
             UKeyName = "End"
            Case 36
             UKeyName = "Home"
            Case 37
             UKeyName = "←"
            Case 38
             UKeyName = "↑"
            Case 39
             UKeyName = "→"
            Case 40
             UKeyName = "↓"
            Case 45
             UKeyName = "Insert"
            Case 46
             UKeyName = "Delete"
            Case 144
             UKeyName = "Num Lock"
            Case 19
             UKeyName = "Pause Break"
            Case 111
             UKeyName = "NUM /"
            Case 106
             UKeyName = "NUM *"
            Case 109
             UKeyName = "NUM -"
            Case 107
             UKeyName = "NUM +"
            Case 110
             UKeyName = "NUM ."
            Case 192
             UKeyName = "`"
            Case 189
             UKeyName = "-"
            Case 187
             UKeyName = "="
            Case 145
             UKeyName = "Scroll Lock"
            Case 220
             UKeyName = "\"
            Case 8
             UKeyName = "Back"
            Case 219
             UKeyName = "["
            Case 221
             UKeyName = "]"
            Case 186
             UKeyName = ";"
            Case 222
             UKeyName = "'"
            Case 188
             UKeyName = ","
            Case 190
             UKeyName = "."
            Case 191
             UKeyName = "/"
            Case Else
             UKeyName = ReKey
            End Select
        End If
    End Function
    e.g.
    Ctrl + A : If HotKey(17)=True And Hotkey(65)=True Then ...

  4. #3
    ikkeugh is offline Learning Programmer
    Join Date
    Sep 2007
    Posts
    79
    Rep Power
    0

    Re: keypress == action when form isnt' active

    Thanks, could you also let it happen like this
    Code:
    Private Sub Form_KeyUp(KeyCode As Integer, Shift As Integer)
    If KeyCode = vbKeyControl Then
    Drawing = true
    when the button pressed in and when it's released, it lets an action occure.

  5. #4
    ljy61ex is offline Newbie
    Join Date
    Dec 2008
    Posts
    3
    Rep Power
    0

    Re: keypress == action when form isnt' active

    Ok, I give you a fast solution:

    Code:
    Private Declare Function GetAsyncKeyState Lib "user32" (ByVal vKey As Long) As Integer
    Dim Pressed As Boolean
    
    Private Function HotKey(tKey As Long) As Boolean
     HotKey = (GetAsyncKeyState(tKey) < 0)
    End Function
    
    Private Sub Timer1_Timer()
        If HotKey(17) = True Then Pressed = True
        If HotKey(17) = False And Pressed = True Then
            'Your Code
            Drawing = true
            Pressed = False
        End If
    End Sub
    And you can use the hook function and SendMessage function (they're members of API functions) to hook key envents. It is a little complex, however.

  6. #5
    ikkeugh is offline Learning Programmer
    Join Date
    Sep 2007
    Posts
    79
    Rep Power
    0

    Re: keypress == action when form isnt' active

    Thanks, that helped!!!
    but you don't really need the module to let is work ,isn't it ?

Closed Thread

Thread Information

Users Browsing this Thread

There are currently 1 users browsing this thread. (0 members and 1 guests)

Similar Threads

  1. form action with codeigniter
    By coder25 in forum PHP Development
    Replies: 0
    Last Post: 11-14-2010, 08:44 AM
  2. KeyPress won't trigger
    By anotheruser in forum Visual Basic Programming
    Replies: 11
    Last Post: 08-16-2010, 11:25 AM
  3. Form Action
    By ezcat in forum HTML Programming
    Replies: 2
    Last Post: 09-20-2009, 02:45 AM
  4. email style isnt working
    By amrosama in forum PHP Development
    Replies: 2
    Last Post: 09-14-2009, 11:55 PM
  5. Why this isnt working?
    By Creature in forum Java Help
    Replies: 1
    Last Post: 06-16-2006, 05:23 AM

Tags for this Thread

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts