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

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

20.11.2025, 05:27. Показов 741. Ответов 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
759 / 278 / 14
Регистрация: 21.01.2023
Сообщений: 390
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
Эксперт по электронике
6500 / 3130 / 331
Регистрация: 28.10.2011
Сообщений: 12,310
Записей в блоге: 7
12.12.2025, 20:51
Думаю с задачей справится аппаратный эмулятор клавиатуры. Это такая "коробочка", которая видна компом как USB клавиатура. Она получает команды какую клавишу нажать / отжать и выполняет это. Работает в том числе в играх и порой античиты против такого трюка оказываются бессильны, потому что неотличимо от обычной клавиатуры.
0
 Аватар для MallSerg
91 / 58 / 14
Регистрация: 16.11.2018
Сообщений: 268
13.12.2025, 01:22
Решений мильон нужно тока выбрать подходящее.

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

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

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

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru