Anonymous
Как нарисовать наложение в C++?
Сообщение
Anonymous » 19 апр 2024, 13:42
Я загружаю свою dll в процесс и создаю наложение в новом потоке.
Моя идея состоит в том, чтобы использовать это наложение из основного потока 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]
1713523330
Anonymous
Я загружаю свою dll в процесс и создаю наложение в новом потоке. Моя идея состоит в том, чтобы использовать это наложение из основного потока dll. Это код maindll.cpp: [code]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]