#include DWORD WINAPI MyThread(LPVOID); DWORD g_threadID; HMODULE g_hModule; void __stdcall CallFunction(void); INT APIENTRY DllMain(HMODULE hDLL, DWORD Reason, LPVOID Reserved) { switch(Reason) { case DLL_PROCESS_ATTACH: g_hModule = hDLL; DisableThreadLibraryCalls(hDLL); CreateThread(NULL, NULL, &MyThread, NULL, NULL, &g_threadID); break; case DLL_THREAD_ATTACH: case DLL_PROCESS_DETACH: case DLL_THREAD_DETACH: break; } return TRUE; } DWORD WINAPI MyThread(LPVOID) { while(true) { if(GetAsyncKeyState(VK_F3) & 1) //F3 as a hotkey { CallFunction(); } else if(GetAsyncKeyState(VK_F4) & 1) break; Sleep(100); } FreeLibraryAndExitThread(g_hModule, 0); return 0; } void __stdcall CallFunction(void) { typedef void (__stdcall *FuncAddress)(DWORD); FuncAddress GetUIElementByHash = (FuncAddress)(0x0093F470); //GetUIElementByHash function address GetUIElementByHash(0xA53AF1388A1C1CBA); //This is an OverlayContainer 64-bit hash }