Форум программистов, компьютерный форум, киберфорум
C/C++: WinAPI
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.50/6: Рейтинг темы: голосов - 6, средняя оценка - 4.50
11 / 10 / 2
Регистрация: 19.02.2018
Сообщений: 393

Заблокировать ввод в игре

01.12.2022, 10:22. Показов 1256. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Решил заблокировать ввод в игре. Нашел способ, которым поделился один человек https://www.unknowncheats.me/f... input.html.

Для этого необходимо отловить все события от мыши через процедуру GWL_WNDPROC.

У меня она не вызывается? Подскажите, пожалуйста, как можно решить эту проблему.

C++
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
bool show = true;
WNDPROC wndProc_Old;
LRESULT CALLBACK newWndProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam) {
 
    printf(" ok!\n\n");
    if (show) {
        switch (uMsg) {
 
        case WM_MBUTTONDOWN:
        case WM_MBUTTONUP:
 
            return 1L;
        }
    }
    return CallWindowProc(wndProc_Old, hwnd, uMsg, wParam, lParam);
}
int GetProcessByName(char* process_name) { 
 
    window_handle = GetForegroundWindow();
    window_handle = FindWindow(0, "SeriousSam_old.exe");
 
     wndProc_Old = (WNDPROC)SetWindowLongPtr(window_handle, GWL_WNDPROC, (LONG)(LONG_PTR)newWndProc);
 
    MSG msg;
    while (GetMessage(&msg, NULL, 0, 0))
    {
        TranslateMessage(&msg);
        DispatchMessage(&msg);
    }
    return 0;
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
01.12.2022, 10:22
Ответы с готовыми решениями:

Заблокировать ввод чисел до 60 в Edit и букв
Надо заблокировать ввод чисел до 60 в Edit и букв. Вот черчеж-> if((Key>='0')&&(Key<='9'))return; else if(Key==VK_BACK)return; else...

Как в Windows 7 заблокировать доступ игре в интернет?
Народ обьяснити как в вин 7 заблокировать доступ игре в интернет?

Как заблокировать появление кнопок телефона в игре unity?
Как заблокировать появление кнопок телефона в игре (Android). Запуская игру боковая кнопка для флика проводя по ней особенно низко вызывает...

4
COM‐пропагандист
 Аватар для Замабувараев
936 / 785 / 149
Регистрация: 18.12.2014
Сообщений: 2,256
Записей в блоге: 4
01.12.2022, 10:34
Цитата Сообщение от Егор Щербанов Посмотреть сообщение
case WM_MBUTTONDOWN:
        case WM_MBUTTONUP:
Это не все события мыши. Ещё есть:
https://learn.microsoft.com/en... ifications
0
11 / 10 / 2
Регистрация: 19.02.2018
Сообщений: 393
01.12.2022, 11:55  [ТС]
Замабувараев, спасибо большое за ваше участие, но почему не происходит вызов ?
0
COM‐пропагандист
 Аватар для Замабувараев
936 / 785 / 149
Регистрация: 18.12.2014
Сообщений: 2,256
Записей в блоге: 4
01.12.2022, 16:01
Цитата Сообщение от Егор Щербанов Посмотреть сообщение
window_handle = GetForegroundWindow();
    window_handle = FindWindow(0, "SeriousSam_old.exe");
Зачем получать window_handle чтобы его тут же перезаписывать другим значением? Бессмысленный первый вызов.
Цитата Сообщение от Егор Щербанов Посмотреть сообщение
(LONG)(LONG_PTR)
Потеря данных.

Рекомендую проверять что возвращают FindWindow() SetWindowLongPtr() и смотреть код ошибки через GetLastError();.

Добавлено через 1 минуту
Цитата Сообщение от Егор Щербанов Посмотреть сообщение
char* process_name
Ну и это — неиспользуемый параметр. при -Wall -Werror -Wextra вообще не скомпилируется.
0
11 / 10 / 2
Регистрация: 19.02.2018
Сообщений: 393
01.12.2022, 21:26  [ТС]
Замабувараев, спасибо вам большое за ваш ответ. действительно не всегда находил окно с игрой.
Теперь находит.
C++
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
BOOL __stdcall EnumWindowsCallback(HWND hwnd, LPARAM lParam) {// найти идентификатор окна.
    DWORD process;  GetWindowThreadProcessId(hwnd, &process);
    if (process == lParam) {    window_handle = hwnd;   return FALSE;   }
    return TRUE;
};
 
void GetWindowHandle(LPARAM processID) {EnumWindows(EnumWindowsCallback, processID);};
 
bool show = true;
WNDPROC wndProc_Old;
LRESULT __stdcall  newWndProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam) {
 
    printf(" ok!\n\n");
    if (show) {
        switch (uMsg) {
 
        case WM_MBUTTONDOWN:
        case WM_MBUTTONUP:
 
            return 1L;
        }
    }
    return CallWindowProc(wndProc_Old, hwnd, uMsg, wParam, lParam);
}
int GetProcessByName() { 
char process_name[128]= "SeriousSam_old.exe";
    DWORD proc_id = 0;  PROCESSENTRY32 process;
 
    HANDLE snapshot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
    if (Process32First(snapshot, &process)) {// получить идентификатор процесса.
        while (Process32Next(snapshot, &process)) { //  cout << proc_id << endl;        cout << process.szExeFile << endl;
            if (_stricmp(process.szExeFile, process_name) == 0) {
                proc_id = process.th32ProcessID;//Идентификатор процесса.
                GetWindowHandle(proc_id); //SetForegroundWindow(window_handle);
                break;
            }
        }
    }
if (window_handle == NULL )
{
    printf(" error!\n\n");
    return -1;
}
HANDLE proc_handle = OpenProcess(PROCESS_ALL_ACCESS, TRUE, proc_id);
     wndProc_Old = (WNDPROC)SetWindowLongPtr(window_handle, GWL_WNDPROC, (LONG)newWndProc);
     
     cout << GetLastError() << endl;//Код ошибки 5 - ERROR_ACCESS_DENIED
    MSG msg;
    while (GetMessage(&msg, NULL, 0, 0))
    {
        TranslateMessage(&msg);
        DispatchMessage(&msg);
    }
    return 0;
    
};
сейчас появилась новая ошибка ERROR_ACCESS_DENIED. делаю как в посте, там человек смог отловить все нажатия кнопок в игре.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
01.12.2022, 21:26
Помогаю со студенческими работами здесь

Заблокировать ввод букв в TextBox
есть текст бокс как заблокировать ввод букв в текстбоксе на асп. в простом виндовс приложениии есть онкейпрес, тут всё ясно в асп нет...

Заблокировать ввод ненужных значений
Как можно заблокировать ввод значений?Например, нам нужно ввести только цифры, и если вести букву, то она даже не высветится? Заранее...

Как заблокировать ввод клавиши?
Как можно заблокировать ввод клавиши в Windows XP, Например я набираю текст и не должна набираться клавиша r.

Рекурсивная функция с возможностью заблокировать ввод некоторых параметров
Здравствуйте. Нужно что-то типа этого сделать: def my_range(start, stop, step=1, _now = None, _result = ): if step == 0: ...

Как в richTextBox оставить активным scroll, но заблокировать ввод символов?
идея следующая, есть richTextBox.Enable = false в этот textbox пишется инфа, когда место заканчивается автоматически создается scroll, но...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Отправка уведомления на почту при изменении наименования справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере изменения наименования справочника "Склады" в конфигурации БП3. Перед реализацией необходимо выполнить настройку системной учетной записи. . .
модель ЗдравоСохранения 5. Меньше увольнений- больше дохода!
anaschu 24.03.2026
Теперь система здравосохранения уменьшает количество увольнений. 9TO2GP2bpX4 a42b81fb172ffc12ca589c7898261ccb/ https:/ / rutube. ru/ video/ a42b81fb172ffc12ca589c7898261ccb/ Слева синяя линия -. . .
Midnight Chicago Blues
kumehtar 24.03.2026
Такой Midnight Chicago Blues, знаешь?. . Когда вечерние улицы становятся ночными, а ты не можешь уснуть. Ты идёшь в любимый старый бар, и бармен наливает тебе виски. Ты смотришь на пролетающие. . .
Контроль уникальности заводского номера - вариант №2
Maks 24.03.2026
В отличие от предыдущего варианта добавлено прерывание циклов, также добавлены новые переменные для сохранения контекста ошибки перед прерыванием цикла: Процедура ПередЗаписью(Отказ, РежимЗаписи,. . .
SDL3 для Desktop (MinGW): Вывод текста со шрифтом TTF с помощью библиотеки SDL3_ttf на Си и C++
8Observer8 24.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-text-sdl3-c. zip finish-text-sdl3-cpp. zip
Жизнь в неопределённости
kumehtar 23.03.2026
Жизнь — это постоянное существование в неопределённости. Например, даже если у тебя есть список дел, невозможно дойти до точки, где всё окончательно завершено и больше ничего не осталось. В принципе,. . .
Модель здравоСохранения: работники работают быстрее после её введения.
anaschu 23.03.2026
geJalZw1fLo Корпорация до введения программа здравоохранения имела много невыполненных работниками заданий, после введения программы количество заданий выросло. Но на выплатах по больничным это. . .
Контроль уникальности заводского номера - вариант №1
Maks 23.03.2026
Алгоритм контроля уникальности заводского (или серийного) номера на примере документа выдачи шин для спецтехники с табличной частью в конфигурации КА2. Данные берутся из регистра сведений, по. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru