mirror of
https://github.com/Jous99/F4MP.git
synced 2026-01-12 17:10:54 +01:00
37 lines
1.1 KiB
C++
37 lines
1.1 KiB
C++
|
|
|
||
|
|
#include "launcher.h"
|
||
|
|
#include <FunctionHook.hpp>
|
||
|
|
#include <mutex>
|
||
|
|
#include <TiltedCore/Initializer.hpp>
|
||
|
|
|
||
|
|
static std::once_flag s_initGuard;
|
||
|
|
static uint16_t(WINAPI* Real_crtGetShowWindowMode)() = nullptr;
|
||
|
|
static int(WINAPI* Real_ismbbled)(uint32_t) = nullptr;
|
||
|
|
|
||
|
|
void TP_GetStartupInfoW(LPSTARTUPINFOW apInfo) noexcept
|
||
|
|
{
|
||
|
|
std::call_once(s_initGuard, []() { launcher::InitClient(); });
|
||
|
|
GetStartupInfoW(apInfo);
|
||
|
|
}
|
||
|
|
|
||
|
|
int TP_ismbblead(uint32_t c)
|
||
|
|
{
|
||
|
|
std::call_once(s_initGuard, []() { launcher::InitClient(); });
|
||
|
|
return Real_ismbbled(c);
|
||
|
|
}
|
||
|
|
|
||
|
|
// this is more of a workaround, till we add SEH table support.
|
||
|
|
void WINAPI TP_RaiseException(DWORD dwExceptionCode, DWORD dwExceptionFlags, DWORD nNumberOfArguments, const ULONG_PTR* lpArguments)
|
||
|
|
{
|
||
|
|
if (dwExceptionCode == 0x406D1388 && !IsDebuggerPresent())
|
||
|
|
return; // thread naming
|
||
|
|
|
||
|
|
RaiseException(dwExceptionCode, dwExceptionFlags, nNumberOfArguments, lpArguments);
|
||
|
|
}
|
||
|
|
|
||
|
|
void InstallStartHook()
|
||
|
|
{
|
||
|
|
TP_HOOK_IAT2("Kernel32.dll", "GetStartupInfoW", TP_GetStartupInfoW);
|
||
|
|
TP_HOOK_IAT2("Kernel32.dll", "RaiseException", TP_RaiseException);
|
||
|
|
};
|