HOME FORUMS MEMBERS RECENT POSTS LOG IN  
× Авторизация
Имя пользователя:
Пароль:
Нет аккаунта? Регистрация
Баннер 1   Баннер 2
НОВЫЕ ТОРГОВАЯ НОВОСТИ ЧАТ
loading...
Скрыть
Вернуться   ANTICHAT > ПРОГРАММИРОВАНИЕ > Общие вопросы программирования
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

  #1  
Старый 11.05.2021, 00:37
smvrty
Новичок
Регистрация: 10.11.2020
Сообщений: 29
С нами: 2899504

Репутация: 3
По умолчанию

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

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

  #2  
Старый 11.05.2021, 00:57
sc6ut
Постоянный
Регистрация: 03.05.2020
Сообщений: 385
С нами: 3174020

Репутация: 213
По умолчанию

Цитата:
Сообщение от smvrty  

как сделать, чтобы игра их игнорировала?
не вызывать оригинальный wnd proc (return false, убрать оригинальный вызов)
 
Ответить с цитированием

  #3  
Старый 11.05.2021, 01:45
smvrty
Новичок
Регистрация: 10.11.2020
Сообщений: 29
С нами: 2899504

Репутация: 3
По умолчанию

Цитата:
Сообщение от 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
)
;
}
 
Ответить с цитированием

  #4  
Старый 11.05.2021, 02:02
smvrty
Новичок
Регистрация: 10.11.2020
Сообщений: 29
С нами: 2899504

Репутация: 3
По умолчанию

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

  #5  
Старый 11.05.2021, 21:07
smvrty
Новичок
Регистрация: 10.11.2020
Сообщений: 29
С нами: 2899504

Репутация: 3
По умолчанию

Подниму
 
Ответить с цитированием

  #6  
Старый 13.05.2021, 22:27
Ya Zaregalsya
Постоянный
Регистрация: 29.05.2017
Сообщений: 394
С нами: 4714653

Репутация: 98
По умолчанию

Отпишите если найдёте решение. Писал похожий код для мыши, так он работает максимально непредсказуемо.
 
Ответить с цитированием

  #7  
Старый 14.05.2021, 19:57
Musaigen
Познавший АНТИЧАТ
Регистрация: 01.04.2018
Сообщений: 1,710
С нами: 4272230

Репутация: 183


По умолчанию

Цитата:
Сообщение от 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 надо патчить.
 
Ответить с цитированием

  #8  
Старый 14.05.2021, 21:17
smvrty
Новичок
Регистрация: 10.11.2020
Сообщений: 29
С нами: 2899504

Репутация: 3
По умолчанию

Цитата:
Сообщение от Musaigen  

~ и T надо патчить.
Можно, пожалуйста, с примером?😅
 
Ответить с цитированием

  #9  
Старый 14.05.2021, 21:54
sc6ut
Постоянный
Регистрация: 03.05.2020
Сообщений: 385
С нами: 3174020

Репутация: 213
По умолчанию

Цитата:
Сообщение от 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
)
;
}
}


включает/выключает включение чата
 
Ответить с цитированием

  #10  
Старый 14.05.2021, 22:32
Musaigen
Познавший АНТИЧАТ
Регистрация: 01.04.2018
Сообщений: 1,710
С нами: 4272230

Репутация: 183


По умолчанию

Цитата:
Сообщение от smvrty  

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

Насчёт тильды хз.
 
Ответить с цитированием
Ответ



Предыдущая тема Следующая тема

Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT ™ © 2001- Antichat Kft.