Моя идея состоит в том, чтобы использовать это наложение из основного потока dll.
Это код maindll.cpp:
Код: Выделить всё
uintptr_t mainModule = NULL;
bool visuals = false;
HWND hwndOverlay;
void DoMagic() {
uintptr_t LocalPlayer = *(uintptr_t*)(mainModule + Offsets::dwLocalPlayerPawn);
if (LocalPlayer == 0)
return;
if (GetAsyncKeyState(VK_F1) & 1)
{
visuals = !visuals;
}
if (hwndOverlay) {
HDC hdcOverlay = GetDC(hwndOverlay);
if (visuals) Visuals(mainModule, LocalPlayer, hdcOverlay);
}
Sleep(1);
}
DWORD WINAPI OverlayThread(LPVOID lpParam) {
HMODULE hModule = (HMODULE)lpParam;
hwndOverlay = CreateOverlayWindow(hModule);
if (!hwndOverlay) {
MessageBox(NULL, L"Error creating overlay window", L"Error", MB_ICONERROR);
return 1;
}
MSG msg;
while (GetMessage(&msg, nullptr, 0, 0)) {
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return 0;
}
DWORD WINAPI MainFunc(HMODULE hModule) {
AllocConsole();
FILE* f;
freopen_s(&f, "CONOUT$", "w", stdout);
CloseHandle(CreateThread(nullptr, 0, OverlayThread, hModule, 0, nullptr));
mainModule = (uintptr_t)GetModuleHandle(L"client.dll");
if (hModule)
{
while (!GetAsyncKeyState(VK_END) & 1) DoMagic();
}
else
{
std::cout
Подробнее здесь: [url]https://stackoverflow.com/questions/78273599/how-to-draw-an-overlay-in-c[/url]