#include <Windows.h>
#include "detours.h"
#include <d3d9.h>
#include <iostream>
#pragma comment (lib, "d3d9.lib")#include "imgui/imgui.h"
#include "imgui/imgui_impl_dx9.h"
#include "imgui/imgui_impl_win32.h"
#define HOOK(func,addy)
o##func = (t##func)DetourFunction((PBYTE)addy,(PBYTE)hk##func)
#define ES
0typedef HRESULT(WINAPI* tEndScene)(LPDIRECT3DDEVICE9 pDevice);
LRESULT CALLBACK MsgProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam) { return DefWindowProc(hwnd, uMsg, wParam, lParam); }
tEndScene oEndScene;
LPCSTR windowName = "Counter-Strike: Global Offensive";
WNDPROC oWndProc;
extern LRESULT ImGui_ImplWin32_WndProcHandler(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam);
HRESULT WINAPI hkEndScene(LPDIRECT3DDEVICE9 pDevice)
{
/* Ekranda biþey çizdirmek istediðimiz de bu fonksiyon altýna yazmamýz gerekiyor. :D*/
/*D3DRECT BarRect = { 100, 100, 200, 200 };
pDevice->Clear(1, &BarRect, D3DCLEAR_TARGET, D3DCOLOR_ARGB(1, 1, 1, 1), 0.0f, 0); // was black because its upp to 255 and not 0 to 1 :')*/
static bool init = true;
if (init)
{
init = false;
ImGui::CreateContext();
ImGuiIO& io = ImGui::GetIO();
ImGui_ImplWin32_Init(FindWindowA(NULL, windowName));
ImGui_ImplDX9_Init(pDevice);
}
ImGui_ImplDX9_NewFrame();
ImGui_ImplWin32_NewFrame();
ImGui::NewFrame();
//
/*imgui kullanma alaný*/
ImGui::ShowDemoWindow();
//mebu son
ImGui::EndFrame();
ImGui::Render();
ImGui_ImplDX9_RenderDrawData(ImGui::GetDrawData());
return oEndScene(pDevice);
}
void DX_Init(DWORD* table)
{
WNDCLASSEX wc = { sizeof(WNDCLASSEX),CS_CLASSDC,MsgProc,0L,0L,GetModuleHandle(NULL),NULL,NULL,NULL,NULL,"DX",NULL };
RegisterClassEx(&wc);
HWND hWnd = CreateWindow("DX", NULL, WS_OVERLAPPEDWINDOW, 100, 100, 300, 300, GetDesktopWindow(), NULL, wc.hInstance, NULL);
LPDIRECT3D9 pD3D = Direct3DCreate9(D3D_SDK_VERSION);
D3DPRESENT_PARAMETERS d3dpp;
ZeroMemory(&d3dpp, sizeof(d3dpp));
d3dpp.Windowed = TRUE;
d3dpp.SwapEffect = D3DSWAPEFFECT_DISCARD;
d3dpp.BackBufferFormat = D3DFMT_UNKNOWN;
LPDIRECT3DDEVICE9 pd3dDevice;
pD3D->CreateDevice(D3DADAPTER_DEFAULT, D3DDEVTYPE_HAL, hWnd, D3DCREATE_SOFTWARE_VERTEXPROCESSING, &d3dpp, &pd3dDevice);
DWORD* pVTable = (DWORD*)pd3dDevice;
pVTable = (DWORD*)pVTable[0];
table[ES] = pVTable[42];
DestroyWindow(hWnd);
}
LRESULT __stdcall WndProc(const HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam) {
if (true && ImGui_ImplWin32_WndProcHandler(hWnd, uMsg, wParam, lParam))
return true;
return CallWindowProc(oWndProc, hWnd, uMsg, wParam, lParam);
}
DWORD WINAPI MyThread(LPVOID)
{
HWND window = FindWindowA(NULL, windowName);
oWndProc = (WNDPROC)SetWindowLongPtr(window, GWL_WNDPROC, (LONG_PTR)WndProc);
DWORD VTable[3] = { 0 };
while (GetModuleHandle("d3d9.dll") == NULL) {
Sleep(250);
}
DX_Init(VTable);
HOOK(EndScene, VTable[ES]);
return 0;
}
BOOL WINAPI DllMain(HMODULE hModule, DWORD dwReason, LPVOID lpvReserved)
{
if (dwReason == DLL_PROCESS_ATTACH) {
CreateThread(0, 0, MyThread, 0, 0, 0);
}
return TRUE;
}
We use cookies and similar technologies for the following purposes:
Do you accept cookies and these technologies?
We use cookies and similar technologies for the following purposes:
Do you accept cookies and these technologies?