optional hotpatch support
This commit is contained in:
parent
868a4479ba
commit
d42284c4bf
12 changed files with 361 additions and 161 deletions
51
inc/hook.h
Normal file
51
inc/hook.h
Normal file
|
@ -0,0 +1,51 @@
|
|||
#ifndef HOOK_H
|
||||
#define HOOK_H
|
||||
|
||||
#include <windows.h>
|
||||
|
||||
typedef HFONT(__stdcall* CREATEFONTINDIRECTA)(CONST LOGFONT*);
|
||||
|
||||
typedef BOOL (WINAPI* GETCURSORPOSPROC)(LPPOINT);
|
||||
typedef BOOL(WINAPI* CLIPCURSORPROC)(const RECT*);
|
||||
typedef int (WINAPI* SHOWCURSORPROC)(BOOL);
|
||||
typedef HCURSOR (WINAPI* SETCURSORPROC)(HCURSOR);
|
||||
typedef BOOL (WINAPI* GETWINDOWRECTPROC)(HWND, LPRECT);
|
||||
typedef BOOL (WINAPI* GETCLIENTRECTPROC)(HWND, LPRECT);
|
||||
typedef BOOL (WINAPI* CLIENTTOSCREENPROC)(HWND, LPPOINT);
|
||||
typedef BOOL (WINAPI* SCREENTOCLIENTPROC)(HWND, LPPOINT);
|
||||
typedef BOOL (WINAPI* SETCURSORPOSPROC)(int, int);
|
||||
typedef HWND (WINAPI* WINDOWFROMPOINTPROC)(POINT);
|
||||
typedef BOOL (WINAPI* GETCLIPCURSORPROC)(LPRECT);
|
||||
typedef BOOL (WINAPI* GETCURSORINFOPROC)(PCURSORINFO);
|
||||
typedef int (WINAPI* GETSYSTEMMETRICSPROC)(int);
|
||||
typedef BOOL (WINAPI* SETWINDOWPOSPROC)(HWND, HWND, int, int, int, int, UINT);
|
||||
typedef BOOL (WINAPI* MOVEWINDOWPROC)(HWND, int, int, int, int, BOOL);
|
||||
typedef LRESULT (WINAPI* SENDMESSAGEAPROC)(HWND, UINT, WPARAM, LPARAM);
|
||||
typedef LONG (WINAPI* SETWINDOWLONGAPROC)(HWND, int, LONG);
|
||||
|
||||
extern GETCURSORPOSPROC real_GetCursorPos;
|
||||
extern CLIPCURSORPROC real_ClipCursor;
|
||||
extern SHOWCURSORPROC real_ShowCursor;
|
||||
extern SETCURSORPROC real_SetCursor;
|
||||
extern GETWINDOWRECTPROC real_GetWindowRect;
|
||||
extern GETCLIENTRECTPROC real_GetClientRect;
|
||||
extern CLIENTTOSCREENPROC real_ClientToScreen;
|
||||
extern SCREENTOCLIENTPROC real_ScreenToClient;
|
||||
extern SETCURSORPOSPROC real_SetCursorPos;
|
||||
extern WINDOWFROMPOINTPROC real_WindowFromPoint;
|
||||
extern GETCLIPCURSORPROC real_GetClipCursor;
|
||||
extern GETCURSORINFOPROC real_GetCursorInfo;
|
||||
extern GETSYSTEMMETRICSPROC real_GetSystemMetrics;
|
||||
extern SETWINDOWPOSPROC real_SetWindowPos;
|
||||
extern MOVEWINDOWPROC real_MoveWindow;
|
||||
extern SENDMESSAGEAPROC real_SendMessageA;
|
||||
extern SETWINDOWLONGAPROC real_SetWindowLongA;
|
||||
|
||||
extern BOOL Hook_Active;
|
||||
|
||||
void Hook_Init();
|
||||
void Hook_PatchIAT(HMODULE hMod, char *moduleName, char *functionName, PROC newFunction);
|
||||
PROC Hook_HotPatch(PROC function, PROC newFunction);
|
||||
void Hook_TryHotPatch(HMODULE hMod, char *moduleName, char *functionName, PROC newFunction, PROC *function);
|
||||
|
||||
#endif
|
|
@ -127,6 +127,7 @@ typedef struct IDirectDrawImpl
|
|||
BOOL accurateTimers;
|
||||
int bnetHack;
|
||||
BOOL bnetActive;
|
||||
BOOL hotPatch;
|
||||
SpeedLimiter ticksLimiter;
|
||||
SpeedLimiter flipLimiter;
|
||||
SpeedLimiter fpsLimiter;
|
||||
|
|
27
inc/mouse.h
Normal file
27
inc/mouse.h
Normal file
|
@ -0,0 +1,27 @@
|
|||
#ifndef MOUSE_H
|
||||
#define MOUSE_H
|
||||
|
||||
#include <windows.h>
|
||||
|
||||
void mouse_lock();
|
||||
void mouse_unlock();
|
||||
|
||||
BOOL WINAPI fake_GetCursorPos(LPPOINT lpPoint);
|
||||
BOOL WINAPI fake_ClipCursor(const RECT *lpRect);
|
||||
int WINAPI fake_ShowCursor(BOOL bShow);
|
||||
HCURSOR WINAPI fake_SetCursor(HCURSOR hCursor);
|
||||
BOOL WINAPI fake_GetWindowRect(HWND hWnd, LPRECT lpRect);
|
||||
BOOL WINAPI fake_GetClientRect(HWND hWnd, LPRECT lpRect);
|
||||
BOOL WINAPI fake_ClientToScreen(HWND hWnd, LPPOINT lpPoint);
|
||||
BOOL WINAPI fake_ScreenToClient(HWND hWnd, LPPOINT lpPoint);
|
||||
BOOL WINAPI fake_SetCursorPos(int X, int Y);
|
||||
HWND WINAPI fake_WindowFromPoint(POINT Point);
|
||||
BOOL WINAPI fake_GetClipCursor(LPRECT lpRect);
|
||||
BOOL WINAPI fake_GetCursorInfo(PCURSORINFO pci);
|
||||
int WINAPI fake_GetSystemMetrics(int nIndex);
|
||||
BOOL WINAPI fake_SetWindowPos(HWND hWnd, HWND hWndInsertAfter, int X, int Y, int cx, int cy, UINT uFlags);
|
||||
BOOL WINAPI fake_MoveWindow(HWND hWnd, int X, int Y, int nWidth, int nHeight, BOOL bRepaint);
|
||||
LRESULT WINAPI fake_SendMessageA(HWND hWnd, UINT Msg, WPARAM wParam, LPARAM lParam);
|
||||
LONG WINAPI fake_SetWindowLongA(HWND hWnd, int nIndex, LONG dwNewLong);
|
||||
|
||||
#endif
|
Loading…
Add table
Add a link
Reference in a new issue