home *** CD-ROM | disk | FTP | other *** search
/ Dan Appleman's Visual Bas…s Guide to the Win32 API / Dan.Applmans.Visual.Basic.5.0.Programmers.Guide.To.The.Win32.API.1997.Ziff-Davis.Press.CD / VB5PG32.mdf / vbpg32 / samples4 / ch06 / simkeys.bas < prev    next >
Encoding:
BASIC Source File  |  1995-08-16  |  6.2 KB  |  192 lines

  1. Attribute VB_Name = "simKeysModule"
  2. Option Explicit
  3.  
  4. Type POINTAPI
  5.         x As Long
  6.         y As Long
  7. End Type
  8.  
  9. Public Const KEYEVENTF_EXTENDEDKEY = &H1
  10. Public Const KEYEVENTF_KEYUP = &H2
  11.  
  12. Declare Sub keybd_event Lib "user32" (ByVal bVk As Byte, ByVal bScan As Byte, ByVal dwFlags As Long, ByVal dwExtraInfo As Long)
  13.  
  14. Public Const MOUSEEVENTF_MOVE = &H1 '  mouse move
  15. Public Const MOUSEEVENTF_LEFTDOWN = &H2 '  left button down
  16. Public Const MOUSEEVENTF_LEFTUP = &H4 '  left button up
  17. Public Const MOUSEEVENTF_RIGHTDOWN = &H8 '  right button down
  18. Public Const MOUSEEVENTF_RIGHTUP = &H10 '  right button up
  19. Public Const MOUSEEVENTF_MIDDLEDOWN = &H20 '  middle button down
  20. Public Const MOUSEEVENTF_MIDDLEUP = &H40 '  middle button up
  21. Public Const MOUSEEVENTF_ABSOLUTE = &H8000 '  absolute move
  22.  
  23. Declare Sub mouse_event Lib "user32" (ByVal dwFlags As Long, ByVal dx As Long, ByVal dy As Long, ByVal cButtons As Long, ByVal dwExtraInfo As Long)
  24.  
  25. Declare Function OemKeyScan Lib "user32" (ByVal wOemChar As Integer) As Long
  26. Declare Function CharToOem Lib "user32" Alias "CharToOemA" (ByVal lpszSrc As String, ByVal lpszDst As String) As Long
  27. Declare Function VkKeyScan Lib "user32" Alias "VkKeyScanA" (ByVal cChar As Byte) As Integer
  28. Declare Function MapVirtualKey Lib "user32" Alias "MapVirtualKeyA" (ByVal wCode As Long, ByVal wMapType As Long) As Long
  29. Declare Function ClientToScreen Lib "user32" (ByVal hwnd As Long, lpPoint As POINTAPI) As Long
  30. Declare Function GetSystemMetrics Lib "user32" (ByVal nIndex As Long) As Long
  31. Declare Function GetCursorPos Lib "user32" (lpPoint As POINTAPI) As Long
  32. Declare Function GetForegroundWindow Lib "user32" () As Long
  33. Declare Function SetForegroundWindow Lib "user32" (ByVal hwnd As Long) As Long
  34. Declare Function GetDesktopWindow Lib "user32" () As Long
  35.  
  36. Type OSVERSIONINFO
  37.         dwOSVersionInfoSize As Long
  38.         dwMajorVersion As Long
  39.         dwMinorVersion As Long
  40.         dwBuildNumber As Long
  41.         dwPlatformId As Long
  42.         szCSDVersion As String * 128      '  Maintenance string for PSS usage
  43. End Type
  44.  
  45. '  dwPlatformId defines:
  46. '
  47. Public Const VER_PLATFORM_WIN32s = 0
  48. Public Const VER_PLATFORM_WIN32_WINDOWS = 1
  49. Public Const VER_PLATFORM_WIN32_NT = 2
  50.  
  51. Declare Function GetVersionEx Lib "kernel32" Alias "GetVersionExA" (lpVersionInformation As OSVERSIONINFO) As Long
  52.  
  53. Public Const SM_CXSCREEN = 0
  54. Public Const SM_CYSCREEN = 1
  55.  
  56. Public Const VK_LBUTTON = &H1
  57. Public Const VK_RBUTTON = &H2
  58. Public Const VK_CANCEL = &H3
  59. Public Const VK_MBUTTON = &H4             '  NOT contiguous with L RBUTTON
  60.  
  61. Public Const VK_BACK = &H8
  62. Public Const VK_TAB = &H9
  63.  
  64. Public Const VK_CLEAR = &HC
  65. Public Const VK_RETURN = &HD
  66.  
  67. Public Const VK_SHIFT = &H10
  68. Public Const VK_CONTROL = &H11
  69. Public Const VK_MENU = &H12
  70. Public Const VK_PAUSE = &H13
  71. Public Const VK_CAPITAL = &H14
  72.  
  73. Public Const VK_ESCAPE = &H1B
  74.  
  75. Public Const VK_SPACE = &H20
  76. Public Const VK_PRIOR = &H21
  77. Public Const VK_NEXT = &H22
  78. Public Const VK_END = &H23
  79. Public Const VK_HOME = &H24
  80. Public Const VK_LEFT = &H25
  81. Public Const VK_UP = &H26
  82. Public Const VK_RIGHT = &H27
  83. Public Const VK_DOWN = &H28
  84. Public Const VK_SELECT = &H29
  85. Public Const VK_PRINT = &H2A
  86. Public Const VK_EXECUTE = &H2B
  87. Public Const VK_SNAPSHOT = &H2C
  88. Public Const VK_INSERT = &H2D
  89. Public Const VK_DELETE = &H2E
  90. Public Const VK_HELP = &H2F
  91.  
  92. ' VK_A thru VK_Z are the same as their ASCII equivalents: 'A' thru 'Z'
  93. ' VK_0 thru VK_9 are the same as their ASCII equivalents: '0' thru '9'
  94.  
  95. Public Const VK_NUMPAD0 = &H60
  96. Public Const VK_NUMPAD1 = &H61
  97. Public Const VK_NUMPAD2 = &H62
  98. Public Const VK_NUMPAD3 = &H63
  99. Public Const VK_NUMPAD4 = &H64
  100. Public Const VK_NUMPAD5 = &H65
  101. Public Const VK_NUMPAD6 = &H66
  102. Public Const VK_NUMPAD7 = &H67
  103. Public Const VK_NUMPAD8 = &H68
  104. Public Const VK_NUMPAD9 = &H69
  105. Public Const VK_MULTIPLY = &H6A
  106. Public Const VK_ADD = &H6B
  107. Public Const VK_SEPARATOR = &H6C
  108. Public Const VK_SUBTRACT = &H6D
  109. Public Const VK_DECIMAL = &H6E
  110. Public Const VK_DIVIDE = &H6F
  111. Public Const VK_F1 = &H70
  112. Public Const VK_F2 = &H71
  113. Public Const VK_F3 = &H72
  114. Public Const VK_F4 = &H73
  115. Public Const VK_F5 = &H74
  116. Public Const VK_F6 = &H75
  117. Public Const VK_F7 = &H76
  118. Public Const VK_F8 = &H77
  119. Public Const VK_F9 = &H78
  120. Public Const VK_F10 = &H79
  121. Public Const VK_F11 = &H7A
  122. Public Const VK_F12 = &H7B
  123. Public Const VK_F13 = &H7C
  124. Public Const VK_F14 = &H7D
  125. Public Const VK_F15 = &H7E
  126. Public Const VK_F16 = &H7F
  127. Public Const VK_F17 = &H80
  128. Public Const VK_F18 = &H81
  129. Public Const VK_F19 = &H82
  130. Public Const VK_F20 = &H83
  131. Public Const VK_F21 = &H84
  132. Public Const VK_F22 = &H85
  133. Public Const VK_F23 = &H86
  134. Public Const VK_F24 = &H87
  135.  
  136. Public Const VK_NUMLOCK = &H90
  137. Public Const VK_SCROLL = &H91
  138.  
  139. '
  140. '   VK_L VK_R - left and right Alt, Ctrl and Shift virtual keys.
  141. '   Used only as parameters to GetAsyncKeyState() and GetKeyState().
  142. '   No other API or message will distinguish left and right keys in this way.
  143. '  /
  144. Public Const VK_LSHIFT = &HA0
  145. Public Const VK_RSHIFT = &HA1
  146. Public Const VK_LCONTROL = &HA2
  147. Public Const VK_RCONTROL = &HA3
  148. Public Const VK_LMENU = &HA4
  149. Public Const VK_RMENU = &HA5
  150.  
  151. Public Const VK_ATTN = &HF6
  152. Public Const VK_CRSEL = &HF7
  153. Public Const VK_EXSEL = &HF8
  154. Public Const VK_EREOF = &HF9
  155. Public Const VK_PLAY = &HFA
  156. Public Const VK_ZOOM = &HFB
  157. Public Const VK_NONAME = &HFC
  158. Public Const VK_PA1 = &HFD
  159. Public Const VK_OEM_CLEAR = &HFE
  160.  
  161.  
  162. '
  163. ' Sends a single character using keybd_event
  164. '   Note that this function does not set shift state
  165. '   (By pressing down the shift key or setting the shift keys state)
  166. '   and it doesn't handle extended keys.
  167. '
  168. Public Sub SendAKey(ByVal c$)
  169.     Dim vk%
  170.     Dim scan%
  171.     Dim oemchar$
  172.     Dim dl&
  173.     ' Get the virtual key code for this character
  174.     vk% = VkKeyScan(Asc(c$)) And &HFF
  175.     oemchar$ = "  " ' 2 character buffer
  176.     ' Get the OEM character - preinitialize the buffer
  177.     CharToOem Left$(c$, 1), oemchar$
  178.     ' Get the scan code for this key
  179.     scan% = OemKeyScan(Asc(oemchar$)) And &HFF
  180.     ' Send the key down
  181.     keybd_event vk%, scan%, 0, 0
  182.     ' Send the key up
  183.     keybd_event vk%, scan%, KEYEVENTF_KEYUP, 0
  184. End Sub
  185.  
  186. Public Sub MySendKeys(ByVal c$)
  187.     Dim x&
  188.     For x& = 1 To Len(c$)
  189.         SendAKey Mid$(c$, x&)
  190.     Next x&
  191. End Sub
  192.