i have used this code from example:
Code: Select all
var
//Original Code By madshi www.madshi.net. Credits To madshi For His Example Hooking Module
//Code Edited By Ultimation. To Include Drawing Text Example
MyDevice: IDirect3DDevice9;
PresentNext: function(const Self: IDirect3DDevice9;
const SourceRect, DestRect: PRect;
const DestWindowOverride: HWND;
DirtyRegion:
PRgnData): HResult; stdcall = nil;
CreateDeviceNext: function(const Self: pointer;
Adapter: longword;
DeviceType: TD3DDevType;
hFocusWindow: HWND;
BehaviorFlags: DWord;
pPresentationParameters: PD3DPresentParameters;
out ppReturnedDeviceInterface:
IDirect3DDevice9): HResult; stdcall = nil;
Direct3DCreate9Next: function(SDKVersion: cardinal): Pointer; stdcall;
//------------------------------------------------------------------------------
function GetInterfaceMethod(intf: IUnknown; methodIndex: dword): pointer;
begin
Result := pointer(pointer(dword(pointer(intf)^) + methodIndex * 4)^);
end;
function GetPtrMethod(ptr: pointer; methodIndex: dword): pointer;
begin
Result := pointer(pointer(dword(ptr^) + methodIndex * 4)^);
end;
//------------------------------------------------------------------------------
function PresentCallback(const Self: IDirect3DDevice9;
const SourceRect, DestRect: PRect;
const DestWindowOverride: HWND;
DirtyRegion: PRgnData): HResult; stdcall;
var
Font: D3DX9.ID3DXFont;
rec: PRect;
begin
//Your Drawing Code Here. This Function Gets Called Everytime The Surface Needs Refreshing
D3DXCreateFontA(Self, 15, 0, FW_BOLD, 1, False, DEFAULT_CHARSET,
OUT_DEFAULT_PRECIS, ANTIALIASED_QUALITY, DEFAULT_PITCH or FF_DONTCARE, 'Arial', Font);
GetMem(rec, 16);
SetRect(rec^, 200, 0, 900, 900);
Font.DrawTextA(nil, 'DirectX Drawing Text Example',
Length('DirectX Drawing Text Example'), rec, DT_LEFT, $FFFFFFFF);
Result := PresentNext(self, SourceRect, DestRect, DestWindowOverride, DirtyRegion);
end;
function CreateDeviceCallback(const Self: pointer;
Adapter: longword;
DeviceType: TD3DDevType;
hFocusWindow: HWND;
BehaviorFlags: DWord;
pPresentationParameters: PD3DPresentParameters;
out ppReturnedDeviceInterface: IDirect3DDevice9)
: HResult; stdcall;
begin
Result := CreateDeviceNext(self, Adapter, DeviceType, hFocusWindow,
BehaviorFlags, pPresentationParameters, ppReturnedDeviceInterface);
MyDevice := ppReturnedDeviceInterface;
if (Result = 0) and (@PresentNext = nil) then
HookCode(GetInterfaceMethod(ppReturnedDeviceInterface, 17),
@PresentCallback, @PresentNext);
end;
function Direct3DCreate9Callback(SDKVersion: cardinal): Pointer; stdcall;
begin
Result := Direct3DCreate9Next(SDKVersion);
if not (Result = nil) and (@CreateDeviceNext = nil) then
HookCode(GetPtrMethod(Result, 16), @CreateDeviceCallback, @CreateDeviceNext);
end;
begin
HookAPI('d3d9.dll', 'Direct3DCreate9', @Direct3DCreate9Callback, //d3d9.dll
@Direct3DCreate9Next);
end.
the game doesn't crash but theres also no rec drawn ingame
im really new to this. give me a hint please