Игнорировать нажатия клавиш

smvrty

Новичок
Автор темы
29
4
В плагине считываю нажатые клавиши для ввода текста в хуке WndProc, как сделать, чтобы игра их игнорировала?

К примеру, при написании "test message" открывается чат и в него уходят остатки сообщения
 

smvrty

Новичок
Автор темы
29
4
не вызывать оригинальный wnd proc (return false, убрать оригинальный вызов)
мб я дурачок, но не работает

прописал все три клавиши для открытия: T, F6, ~

код:
LRESULT WINAPI HookWndProc(HWND hWnd, UINT msg, WPARAM wParam, UINT lParam) {

    MenuInjector(hWnd, msg, wParam, lParam);

    switch (msg) {
    case WM_KEYDOWN:
        if (currentMenu != -1) {
            if ((wParam == VK_OEM_3) || (wParam == 0x54) || (wParam == VK_F6)) {
                return false;
            }
        }

        break;
    case WM_KEYUP:
        if (currentMenu != -1) {
            if ((wParam == VK_OEM_3) || (wParam == 0x54) || (wParam == VK_F6)) {
                return false;
            }
        }

        break;
    }

    return CallWindowProc((WNDPROC)(OrigWndProc), hWnd, msg, wParam, lParam);

}
 
  • Нравится
Реакции: Ya Zaregalsya

Musaigen

abobusnik
Проверенный
1,582
1,301
мб я дурачок, но не работает

прописал все три клавиши для открытия: T, F6, ~

код:
LRESULT WINAPI HookWndProc(HWND hWnd, UINT msg, WPARAM wParam, UINT lParam) {

    MenuInjector(hWnd, msg, wParam, lParam);

    switch (msg) {
    case WM_KEYDOWN:
        if (currentMenu != -1) {
            if ((wParam == VK_OEM_3) || (wParam == 0x54) || (wParam == VK_F6)) {
                return false;
            }
        }

        break;
    case WM_KEYUP:
        if (currentMenu != -1) {
            if ((wParam == VK_OEM_3) || (wParam == 0x54) || (wParam == VK_F6)) {
                return false;
            }
        }

        break;
    }

    return CallWindowProc((WNDPROC)(OrigWndProc), hWnd, msg, wParam, lParam);

}
~ и T надо патчить.
 

sc6ut

неизвестный
Модератор
382
1,075
Можно, пожалуйста, с примером?😅
C++:
void toggleEnableChat( bool enable ) {
    DWORD oldVP;
    DWORD base = reinterpret_cast<DWORD>( GetModuleHandleA( "samp" ) );
    if ( enable ) {
        // off - set retn
        VirtualProtect( reinterpret_cast<void *>( base + 0x657E0 ), sizeof( uint8_t ), PAGE_EXECUTE_READWRITE, &oldVP );
        *reinterpret_cast<uint8_t *>( base + 0x657E0 ) = 0xC3;
        VirtualProtect( reinterpret_cast<void *>( base + 0x657E0 ), sizeof( uint8_t ), oldVP, &oldVP );
    } else {
        // on - set sub
        VirtualProtect( reinterpret_cast<void *>( base + 0x657E0 ), sizeof( uint8_t ), PAGE_EXECUTE_READWRITE, &oldVP );
        *reinterpret_cast<uint8_t *>( base + 0x657E0 ) = 0x83;
        VirtualProtect( reinterpret_cast<void *>( base + 0x657E0 ), sizeof( uint8_t ), oldVP, &oldVP );
    }
}
включает/выключает включение чата
 
Последнее редактирование:
  • Нравится
Реакции: smvrty