
25.09.2019, 00:05
|
|
Участник форума
Регистрация: 06.01.2016
Сообщений: 154
С нами:
5447649
Репутация:
28
|
|
Сообщение от twixjr12s
вообще не работает)
C++:
Код:
// 1 способ
bool
CheckPress
(
)
{
static
bool
was_pressed
=
false
;
bool
pressed
=
GetAsyncKeyState
(
key
)
&
0x8000
;
if
(
was_pressed
!=
pressed
)
{
was_pressed
=
pressed
;
if
(
pressed
)
return
true
;
}
return
false
;
}
void
CALLBACK
mainloop
(
)
{
if
(
CheckPress
(
)
)
{
// code
}
// ...
}
C++:
Код:
// 2 способ
void
CheckPressThread
(
)
{
bool
was_pressed
=
false
;
while
(
true
)
{
bool
pressed
=
GetAsyncKeyState
(
key
)
&
0x8000
;
if
(
was_pressed
!=
pressed
)
{
was_pressed
=
pressed
;
if
(
pressed
)
{
// code
}
}
Sleep
(
50
)
;
}
}
void
CALLBACK
mainloop
(
)
{
static
bool
init
=
false
;
if
(
!
init
)
{
if
(
.
.
.
)
return
;
CreateThread
(
0
,
0
,
(
LPTHREAD_START_ROUTINE
)
&
CheckPressThread
,
0
,
0
,
0
)
;
init
=
true
;
}
}
C++:
Код:
// 3 способ
#define GTA_HWND **(HWND**)0xC97C1C
static
WNDPROC g_OriginalWndProc
=
nullptr
;
LRESULT __stdcall
WndProc
(
HWND hWnd
,
UINT msg
,
LPARAM lParam
,
WPARAM wParam
)
{
switch
(
msg
)
{
case
WM_KEYDOWN
:
case
WM_SYSKEYDOWN
:
{
if
(
wParam
==
key
)
{
// code
}
}
break
;
}
return
CallWindowProc
(
g_OriginalWndProc
,
hWnd
,
msg
,
lParam
,
wParam
)
;
}
void
CALLBACK
mainloop
(
)
{
static
bool
init
=
false
;
if
(
!
init
)
{
if
(
.
.
.
)
return
;
g_OriginalWndProc
=
SetWindowLongPtrA
(
GTA_HWND
,
GWLP_WNDPROC
,
(
LONG_PTR
)
&
WndProc
)
;
init
=
true
;
}
}
|
|
|