_Vine_
Активный
- 154
- 57
вообще не работает)
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;
}
}
Последнее редактирование: