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 / samples5 / ch06 / simkeys.bas < prev    next >
Encoding:
BASIC Source File  |  1997-02-16  |  6.3 KB  |  193 lines

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