Просмотр полной версии : Игнорировать нажатия клавиш
В плагине считываю нажатые клавиши для ввода текста в хуке WndProc, как сделать, чтобы игра их игнорировала?
К примеру, при написании "test message" открывается чат и в него уходят остатки сообщения
как сделать, чтобы игра их игнорировала?
не вызывать оригинальный wnd proc (return false, убрать оригинальный вызов)
не вызывать оригинальный 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
)
;
}
Перепроверил: F6 игнорируется, а T и тильда по-прежнему открывают чат
Ya Zaregalsya
13.05.2021, 22:27
Отпишите если найдёте решение. Писал похожий код для мыши, так он работает максимально непредсказуемо.
Musaigen
14.05.2021, 19:57
мб я дурачок, но не работает
прописал все три клавиши для открытия: 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 надо патчить.
~ и T надо патчить.
Можно, пожалуйста, с примером?😅
Можно, пожалуйста, с примером?😅
C++:
void
toggleEnableChat
(
bool
enable
)
{
DWORD oldVP
;
DWORD base
=
reinterpret_cast
(
GetModuleHandleA
(
"samp"
)
)
;
if
(
enable
)
{
// off - set retn
VirtualProtect
(
reinterpret_cast
(
base
+
0x657E0
)
,
sizeof
(
uint8_t
)
,
PAGE_EXECUTE_READWRITE
,
&
oldVP
)
;
*
reinterpret_cast
(
base
+
0x657E0
)
=
0xC3
;
VirtualProtect
(
reinterpret_cast
(
base
+
0x657E0
)
,
sizeof
(
uint8_t
)
,
oldVP
,
&
oldVP
)
;
}
else
{
// on - set sub
VirtualProtect
(
reinterpret_cast
(
base
+
0x657E0
)
,
sizeof
(
uint8_t
)
,
PAGE_EXECUTE_READWRITE
,
&
oldVP
)
;
*
reinterpret_cast
(
base
+
0x657E0
)
=
0x83
;
VirtualProtect
(
reinterpret_cast
(
base
+
0x657E0
)
,
sizeof
(
uint8_t
)
,
oldVP
,
&
oldVP
)
;
}
}
включает/выключает включение чата
Musaigen
14.05.2021, 22:32
Можно, пожалуйста, с примером?😅
Клавиша T: samp.dll + 0x5DAF4, байты: 0xC3 0x90 0x90 0x90, оригинальные байты: 0x8B 0x54 0x24 0x04 (для SA:MP 0.3.7 R1)
Насчёт тильды хз.
vBulletin® v3.8.14, Copyright ©2000-2026, vBulletin Solutions, Inc. Перевод: zCarot