PDA

Просмотр полной версии : Игнорировать нажатия клавиш


smvrty
11.05.2021, 00:37
В плагине считываю нажатые клавиши для ввода текста в хуке WndProc, как сделать, чтобы игра их игнорировала?

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

sc6ut
11.05.2021, 00:57
как сделать, чтобы игра их игнорировала?


не вызывать оригинальный wnd proc (return false, убрать оригинальный вызов)

smvrty
11.05.2021, 01:45
не вызывать оригинальный 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
)
;
}

smvrty
11.05.2021, 02:02
Перепроверил: F6 игнорируется, а T и тильда по-прежнему открывают чат

smvrty
11.05.2021, 21:07
Подниму

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 надо патчить.

smvrty
14.05.2021, 21:17
~ и T надо патчить.


Можно, пожалуйста, с примером?😅

sc6ut
14.05.2021, 21:54
Можно, пожалуйста, с примером?😅



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)

Насчёт тильды хз.