ANTICHAT

ANTICHAT (https://forum.antichat.xyz/index.php)
-   Общие вопросы программирования (https://forum.antichat.xyz/forumdisplay.php?f=206)
-   -   Игнорировать нажатия клавиш (https://forum.antichat.xyz/showthread.php?t=1387570)

smvrty 11.05.2021 00:37

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

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

sc6ut 11.05.2021 00:57

Цитата:

Сообщение от smvrty

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

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

smvrty 11.05.2021 01:45

Цитата:

Сообщение от SC6UT

не вызывать оригинальный 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

Цитата:

Сообщение от smvrty

мб я дурачок, но не работает

прописал все три клавиши для открытия: 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

Цитата:

Сообщение от Musaigen

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

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

sc6ut 14.05.2021 21:54

Цитата:

Сообщение от smvrty

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

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

Цитата:

Сообщение от smvrty

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

Клавиша T: samp.dll + 0x5DAF4, байты: 0xC3 0x90 0x90 0x90, оригинальные байты: 0x8B 0x54 0x24 0x04 (для SA:MP 0.3.7 R1)

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


Время: 01:13