/** \brief Calls the registered CB_WINEVENTGLOBAL callbacks. \param [in,out] message the message that triggered the event. Cannot be null. \return The value the plugin told it to return. See plugin documentation for more information. */ bool pluginwineventglobal(MSG* message) { PLUG_CB_WINEVENTGLOBAL winevent; winevent.message = message; winevent.retval = false; plugincbcall(CB_WINEVENTGLOBAL, &winevent); return winevent.retval; }
/** \brief Calls the registered CB_WINEVENT callbacks. \param [in,out] message the message that triggered the event. Cannot be null. \param [out] result The result value. Cannot be null. \return The value the plugin told it to return. See plugin documentation for more information. */ bool pluginwinevent(MSG* message, long* result) { PLUG_CB_WINEVENT winevent; winevent.message = message; winevent.result = result; winevent.retval = false; plugincbcall(CB_WINEVENT, &winevent); return winevent.retval; }
static void cbDebugLoadLibBPX() { HANDLE LoadLibThread = ThreadGetHandle((DWORD)LoadLibThreadID); #ifdef _WIN64 duint LibAddr = GetContextDataEx(LoadLibThread, UE_RAX); #else duint LibAddr = GetContextDataEx(LoadLibThread, UE_EAX); #endif //_WIN64 varset("$result", LibAddr, false); backupctx.eflags &= ~0x100; SetFullContextDataEx(LoadLibThread, &backupctx); MemFreeRemote(DLLNameMem); MemFreeRemote(ASMAddr); ThreadResumeAll(); //update GUI DebugUpdateGuiSetStateAsync(GetContextDataEx(hActiveThread, UE_CIP), true); //lock lock(WAITID_RUN); dbgsetforeground(); PLUG_CB_PAUSEDEBUG pauseInfo = { nullptr }; plugincbcall(CB_PAUSEDEBUG, &pauseInfo); wait(WAITID_RUN); }