Имитация нажатия клавиш в приложении - VB

Узнай цену своей работы

Формулировка задачи:

в игре нужно постоянно нажимать пробел! подскажите как сделать чтобы это было автоматически?

Решение задачи: «Имитация нажатия клавиш в приложении»

textual
Листинг программы
  1. Option Explicit
  2.  
  3. Private Type MODULEENTRY32
  4.   dwSize As Long
  5.   th32ModuleID As Long
  6.   th32ProcessID As Long
  7.   GlblcntUsage As Long
  8.   ProccntUsage As Long
  9.   modBaseAddr As Long
  10.   modBaseSize As Long
  11.   hModule As Long
  12.   szModule As String * 256
  13.   szExePath As String * 260
  14. End Type
  15.  
  16. Private Type POINTAPI
  17.         x As Long
  18.         y As Long
  19. End Type
  20.  
  21. Private Declare Function GetWindowThreadProcessId Lib "user32" (ByVal hwnd As Long, lpdwProcessId As Long) As Long
  22. Private Declare Function CreateToolhelp32Snapshot Lib "kernel32" (ByVal lFlags As Long, ByVal lProcessID As Long) As Long
  23. Private Declare Function Module32First Lib "kernel32" (ByVal hSnapshot As Long, uProcess As MODULEENTRY32) As Long
  24. Private Declare Function GetCursorPos Lib "user32" (lpPoint As POINTAPI) As Long
  25. Private Declare Function WindowFromPoint Lib "user32" (ByVal xPoint As Long, ByVal yPoint As Long) As Long
  26.  
  27. Private Declare Sub keybd_event Lib "user32" (ByVal bVk As Byte, ByVal bScan As Byte, ByVal dwFlags As Long, ByVal dwExtraInfo As Long)
  28. Const KEYEVENTF_KEYUP = &H2 'событие отпускания клавиши
  29. Const VK_LWIN = &H5B 'левая клавиша, эмулирующая нажатие кнопки ПУСК
  30. Const VK_RWIN = &H5B 'левая клавиша, эмулирующая нажатие кнопки ПУСК
  31.  
  32. Dim CursorPos As POINTAPI
  33. Dim hWin As Long
  34.  
  35. Private Sub Timer1_Timer()
  36.   Dim pid As Long
  37.   Dim hSnapshot As Long
  38.   Dim uProcess As MODULEENTRY32
  39.  
  40.   GetCursorPos CursorPos
  41.   hWin = WindowFromPoint(CursorPos.x, CursorPos.y)
  42.   Call GetWindowThreadProcessId(hWin, pid)
  43.   hSnapshot = CreateToolhelp32Snapshot(8, pid)
  44.   uProcess.dwSize = Len(uProcess)
  45.   Call Module32First(hSnapshot, uProcess)
  46.  
  47.   Label1.Caption = Left(uProcess.szExePath, InStr(uProcess.szExePath, Chr(0)) - 1)
  48.  
  49.     If Label1.Caption = "C:\Program Files\Mozilla Firefox\firefox.exe" Then
  50.         Call keybd_event(VK_LWIN, 0, 0, 0) 'Hажимаем
  51.        Call keybd_event(VK_LWIN, 0, KEYEVENTF_KEYUP, 0) 'Отпускаем
  52.        
  53.     Else
  54.    
  55.     End If
  56.  
  57. End Sub
  58.  
  59. Private Sub Form_Load()
  60.    
  61.   With Timer1
  62.     .Interval = 50
  63.     .Enabled = True
  64.   End With
  65.    
  66. End Sub

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

13   голосов , оценка 3.923 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы