Форум программистов, компьютерный форум, киберфорум
Visual Basic
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
0 / 0 / 0
Регистрация: 20.11.2025
Сообщений: 2

Имитация нажатия кнопок в игре

20.11.2025, 05:27. Показов 848. Ответов 10
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте, возникла проблема. Нужно чтобы программа нажимала кнопки в игре NFS Most Wanted. Перепробовал вроде всё. Кнопку мыши и кнопку Q видит, а Enter, стрелочку в право и цифру 1 не видит. Возможно ли какое то решение?

Добавлено через 5 минут
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
Private Declare Function WinExec Lib "kernel32" (ByVal lpCmdLine As String, ByVal nCmdShow As Long) As Long
Private Declare Sub keybd_event Lib "user32" (ByVal bVk As Byte, ByVal bScan As Byte, ByVal dwFlags As Long, ByVal dwExtraInfo As Long)
Private 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)
Private Declare Function SetCursorPos Lib "user32" (ByVal X As Long, ByVal Y As Long) As Long
Private Declare Function GetWindowText Lib "user32" Alias "GetWindowTextA" (ByVal hwnd As Long, ByVal lpString As String, ByVal cch As Long) As Long
Private Declare Function GetWindowTextLength Lib "user32" Alias "GetWindowTextLengthA" (ByVal hwnd As Long) As Long
Private Declare Function GetForegroundWindow Lib "user32.dll" () As Long
 
Const MOUSEEVENTF_LEFTDOWN = &H2
Const MOUSEEVENTF_LEFTUP = &H4
Const SW_SHOWNORMAL = 1
 
Dim i, n As Integer
Dim MyStr As String
Dim FHWND, X, Y As Long
 
 Private Sub Timer1_Timer()
    AppActivate MyStr
 
i = i + 1
 
If n = 25 Then
Call keybd_event(&H51, 0, 0, 0)
Call keybd_event(&H51, 0, 2, 0)
Timer1 = False
Beep
End
End If
 
If i = 1 Then
     FHWND = GetForegroundWindow()
    MyStr = String(GetWindowTextLength(FHWND) + 1, Chr$(0))
    GetWindowText FHWND, MyStr, Len(MyStr)
    AppActivate MyStr, 2000
SendKeys "{Right 1}"
Call keybd_event(&H25, 0, 0, 0)
Call keybd_event(&H25, 0, 2, 0)
Call mouse_event(MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0)
End If
SendKeys "{ENTER 2}"
If i = 2 Then
     FHWND = GetForegroundWindow()
    MyStr = String(GetWindowTextLength(FHWND) + 1, Chr$(0))
    GetWindowText FHWND, MyStr, Len(MyStr)
    AppActivate MyStr, 2000
Call keybd_event(&HD, 0, 0, 0)
Call keybd_event(&HD, 0, 2, 0)
 
Call mouse_event(MOUSEEVENTF_LEFTUP, 0, 0, 0, 0)
End If
 
If i = 3 Then
     FHWND = GetForegroundWindow()
    MyStr = String(GetWindowTextLength(FHWND) + 1, Chr$(0))
    GetWindowText FHWND, MyStr, Len(MyStr)
    AppActivate MyStr, 2000
SendKeys "{ENTER 1}"
End If
 
If i = 4 Then
     FHWND = GetForegroundWindow()
    MyStr = String(GetWindowTextLength(FHWND) + 1, Chr$(0))
    GetWindowText FHWND, MyStr, Len(MyStr)
    AppActivate MyStr, 2000
Call keybd_event(&H27, 0, 0, 0)
Call keybd_event(&H27, 0, 2, 0)
i = 0
n = n + 1
End If
 
End Sub
 
Private Sub Form_Load()
    Call Shell("D:\Games\Need for Speed - Most Wanted\speed.exe", vbMaximizedFocus)
    'Call Shell("notepad.exe", vbMaximizedFocus)
    
    'WinExec "D:\Games\Need for Speed - Most Wanted\speed.exe", SW_SHOWNORMAL
    
    
     FHWND = GetForegroundWindow()
    MyStr = String(GetWindowTextLength(FHWND) + 1, Chr$(0))
    GetWindowText FHWND, MyStr, Len(MyStr)
    AppActivate MyStr, 2000
    
    X = 400
    Y = 300
    Call SetCursorPos(X, Y)
End Sub
Добавлено через 38 секунд
Причём в Блокноте все варианты работают
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
20.11.2025, 05:27
Ответы с готовыми решениями:

Имитация нажатия кнопок клавиатуры нажатиями кнопок в окне
Скажите,как заменить нажатие кнопок клавиатуры на нажатие кнопок в окне?

Имитация нажатия клавиши Tab в стороннем приложении (игре)
Проблемка вот в чем. Скорее всего я не до конца понимаю принцип работы функций, которые использую....

Имитация нажатия клавиш в стороннем окне
Я знаю текст заголовка окна. Как мне передать в него нажатия клавиш и в том числе специальных -...

10
 Аватар для Mikle Quits
768 / 285 / 17
Регистрация: 21.01.2023
Сообщений: 449
20.11.2025, 09:09
Шатун, NFS Most Wanted не играл. Есть ли там в настройках источник ввода клавиатуры? Типа XInput, DirectInput? Может, попробовать сменить?
1
0 / 0 / 0
Регистрация: 20.11.2025
Сообщений: 2
20.11.2025, 09:15  [ТС]
К сожалению выбора ввода нет
0
 Аватар для Morgot
336 / 129 / 18
Регистрация: 26.12.2010
Сообщений: 501
12.12.2025, 11:27
Цитата Сообщение от Шатун Посмотреть сообщение
Причём в Блокноте все варианты работают
блокнот это стандартное окно винды, а игра это директХ или еще какая-то ерунда, естественно там не будет работать все это; по миллиону причин ; может там кастомные обработчики нажатия клавиш, и т.д.
1
Эксперт по электронике
6576 / 3203 / 335
Регистрация: 28.10.2011
Сообщений: 12,495
Записей в блоге: 7
12.12.2025, 20:51
Думаю с задачей справится аппаратный эмулятор клавиатуры. Это такая "коробочка", которая видна компом как USB клавиатура. Она получает команды какую клавишу нажать / отжать и выполняет это. Работает в том числе в играх и порой античиты против такого трюка оказываются бессильны, потому что неотличимо от обычной клавиатуры.
0
 Аватар для MallSerg
91 / 58 / 14
Регистрация: 16.11.2018
Сообщений: 274
13.12.2025, 01:22
Решений мильон нужно тока выбрать подходящее.

Проблема в том что игры на базе directX используют XInput или DirectInput по факту это драйвер операционной системы и набор библиотечных методов для работы с ним. что сильно отличается от WINAPI используемых в десктоп приложениях с механикой отправки сообщений и оконной процедурой обработки этих сообщений.

Подобные задачи решают с помощью HID. Можно написать свой дравер устройства ввода или воспользоваться уже реализованными в системе.
https://learn.microsoft.com/ru... work--vhf-
0
1386 / 842 / 91
Регистрация: 08.02.2017
Сообщений: 3,585
Записей в блоге: 1
13.12.2025, 04:32
Цитата Сообщение от MallSerg Посмотреть сообщение
Можно написать свой дравер
А можно ваще свою микросхемку спаять - управляемого usb-устройства ввода и не париться, хы хы (иронично) ))
0
Эксперт по электронике
6576 / 3203 / 335
Регистрация: 28.10.2011
Сообщений: 12,495
Записей в блоге: 7
13.12.2025, 19:26
Цитата Сообщение от testuser2 Посмотреть сообщение
А можно ваще свою микросхемку спаять
Все давно придумано. Выше написал про такое устройство и оно реально работает.
0
1386 / 842 / 91
Регистрация: 08.02.2017
Сообщений: 3,585
Записей в блоге: 1
13.12.2025, 19:40
locm, а мышки такие существуют и может ли это управляться по удалёнке?
0
Эксперт по электронике
6576 / 3203 / 335
Регистрация: 28.10.2011
Сообщений: 12,495
Записей в блоге: 7
13.12.2025, 20:06
Бывают тоже.
Яндекс выдал эти ссылки по теме.
https://habr.com/ru/articles/537024/
https://market.yandex.ru/card/... 3724612415
https://usb2kbd.ru/
1
1386 / 842 / 91
Регистрация: 08.02.2017
Сообщений: 3,585
Записей в блоге: 1
14.12.2025, 11:04
Цитата Сообщение от locm Посмотреть сообщение
Бывают тоже.
Я почему спросил, у меня давно была мысль, почему не сделают такое устройство для удаленного обслуживания ПК, чтобы можно было подключить это устройство к ПК и получать полный контроль удаленно, т.е. чтобы удаленно можно было обслуживать, перезагружать, заходить в биос (для этого конечно надо еще видео-движок). Как бы конечно это довольно сложное устройство, но спрос бы я думаю был.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
14.12.2025, 11:04
Помогаю со студенческими работами здесь

Имитация нажатия Tab с помощью keybd_event
Имитирую нажатия клавиш в сторонней программе с помощью Private Declare Sub keybd_event Lib...

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

Имитация нажатия мыши в браузере на VB
Приветствую =) Вот написал я простенький браузер на VB, загрузил страничку и есть на этой...

Имитация нажатия клавиш
Здравствуйте. Пожалуйста помогите с кодом. Нужно написать программу, что бы при нажатии "Q"...

Имитация нажатия клавиши
Помогите пожалуйста, не могу придумать, как сделать так, чтобы, если я нажимаю на пример букву <а>,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru