BCB 6 - Include Fehler

contains all delphi packages mentioned below
madshi
Site Admin
Posts: 10753
Joined: Sun Mar 21, 2004 5:25 pm

Post by madshi »

Ich vermute, daß "(PVOID*) &Direct3DCreate8Next" so nicht ganz das ist, was BCB möchte. Setz doch bitte mal Direct3DCreate8Next vorher auf NULL und prüf, ob es nach dem Aufruf von HookAPI <> NULL ist. Wenn ja, dann müßte es eigentlich stimmen.
djdaple
Posts: 19
Joined: Thu Dec 29, 2005 6:52 am

Post by djdaple »

Also hier beept es nicht:

Code: Select all

BOOL HookDirect3D8()
{

  Direct3DCreate8Next = NULL;

  return HookAPI("d3d8.dll", "Direct3DCreate8", Direct3DCreate8Callback, (PVOID*) &Direct3DCreate8Next);

  if(Direct3DCreate8Next == NULL)
  {
  MessageBeep(0);
  }

}
Also ist ihrendwo ein fehler... aber ich habe alles genau so gemacht sprich rüberkopiert ;) die warnungen sind übrigens wieder da.
djdaple
Posts: 19
Joined: Thu Dec 29, 2005 6:52 am

Post by djdaple »

Ob
Direct3DCreate8Next < NULL

oder
Direct3DCreate8Next > NULL

oder
Direct3DCreate8Next == NULL


es beept nicht. Also hängt er sich komplett auf;)


wenn ich

HookDirect3D7();
HookDirect3D8();
HookDirect3D9();

alle drei nehme, dann kommt bei JEDER directxanwednung ein fehler.

die zu hookende anwendung nutzt dx8 also habe ich die anderen herausgenommen, der fehler entsteht durch HookDirect3D7();!
djdaple
Posts: 19
Joined: Thu Dec 29, 2005 6:52 am

Post by djdaple »

viewtopic.php?t=611&highlight=directx

dort liegt es am game!

Nur das kann hirt doch nicht sein, denn das beispiel geht ja nur in bcb kompiliert nicht mehr!"

Das aufhängen habe ich weg bekommen!

Wenn die die HookDirect3D.dll hooke geht es wunderbar alles in wireframe.

Vielleicht könntest du ja mal bitte den Jenigen Fragen, der dir beim Beispiel geholfen hat? Wäre super! Suche schon so lange nach ner möglichkeit das ganze mit BCB zu compilieren!

größe HookDirect3D.dll: 82.944
größe meine DLL: 90.624


inhalt HookDirect3D.cpp (sample):

Code: Select all

// ***************************************************************
//  HookDirect3D.dll          version:  1.0   ·  date: 2004-08-15
//  -------------------------------------------------------------
//  turns all Direct3D 7-9 games to wireframe mode   
//  -------------------------------------------------------------
//  Copyright (C) 1999 - 2004 www.madshi.net, All Rights Reserved
// ***************************************************************

// 2004-08-15 1.0  initial release

// thanks to Maciej Donotek for his help

// ***************************************************************

#include <windows.h>
#include "madCHook.h"

// ***************************************************************

#define D3DFILL_WIREFRAME 2
#define D3DFILL_SOLID     3
#define D3DRS_FILLMODE    8

const GUID IID_IDirect3D7 = { 0xf5049e77,0x4861,0x11d2, { 0xa4,0x7,0x0,0xa0,0xc9,0x6,0x29,0xa8 } };

// ***************************************************************

PVOID GetInterfaceMethod(PVOID intf, DWORD methodIndex)
{
  return *(PVOID*)(*(DWORD*)intf + methodIndex * 4);
}

// ***************************************************************
// Direct3D7

HRESULT (WINAPI *DirectDrawCreateExNext) (PVOID guid, IUnknown** directDraw, PVOID iid, PVOID unkOuter);
HRESULT (WINAPI      *CreateDevice7Next) (PVOID self, PVOID classId, PVOID surface, PVOID* device);
HRESULT (WINAPI    *SetRenderState7Next) (PVOID self, DWORD stateType, DWORD state);

HRESULT WINAPI SetRenderState7Callback(PVOID self, DWORD stateType, DWORD state)
{
  if (stateType == D3DRS_FILLMODE) {
    if (state == D3DFILL_WIREFRAME) state = D3DFILL_SOLID;
    else                            state = D3DFILL_WIREFRAME;
  }
  return SetRenderState7Next(self, stateType, state);
}

HRESULT WINAPI CreateDevice7Callback(PVOID self, PVOID classId, PVOID surface, PVOID* device)
{
  HRESULT result = CreateDevice7Next(self, classId, surface, device);
  if ( !result && device && *device && !SetRenderState7Next ) {
    HookCode(GetInterfaceMethod(*device, 20), SetRenderState7Callback, (PVOID*) &SetRenderState7Next);
    SetRenderState7Next(*device, D3DRS_FILLMODE, D3DFILL_WIREFRAME);
  }
  return result;
}

HRESULT WINAPI DirectDrawCreateExCallback(PVOID guid, IUnknown** directDraw, PVOID iid, PVOID unkOuter)
{
  HRESULT result = DirectDrawCreateExNext(guid, directDraw, iid, unkOuter);
  IUnknown* d3d7;
  if ( !result && !CreateDevice7Next && !(*directDraw)->QueryInterface(IID_IDirect3D7, (PVOID*) &d3d7) ) {
    HookCode(GetInterfaceMethod(d3d7, 4), CreateDevice7Callback, (PVOID*) &CreateDevice7Next);
    d3d7->Release();
  }
  return result;
}

BOOL HookDirect3D7()
{
  return HookAPI("ddraw.dll", "DirectDrawCreateEx", DirectDrawCreateExCallback, (PVOID*) &DirectDrawCreateExNext);
}

// ***************************************************************
// Direct3D8

PVOID   (WINAPI *Direct3DCreate8Next) (DWORD sdkVersion);
HRESULT (WINAPI   *CreateDevice8Next) (PVOID self, DWORD adapter, DWORD devType, HWND wnd, DWORD flags, PVOID params, PVOID* device);
HRESULT (WINAPI *SetRenderState8Next) (PVOID self, DWORD stateType, DWORD state);

HRESULT WINAPI SetRenderState8Callback(PVOID self, DWORD stateType, DWORD state)
{
  if (stateType == D3DRS_FILLMODE) {
    if (state == D3DFILL_WIREFRAME) state = D3DFILL_SOLID;
    else                            state = D3DFILL_WIREFRAME;
  }
  return SetRenderState8Next(self, stateType, state);
}

HRESULT WINAPI CreateDevice8Callback(PVOID self, DWORD adapter, DWORD devType, HWND wnd, DWORD flags, PVOID params, PVOID* device)
{
  HRESULT result = CreateDevice8Next(self, adapter, devType, wnd, flags, params, device);
  if ( !result && device && *device && !SetRenderState8Next ) {
    HookCode(GetInterfaceMethod(*device, 50), SetRenderState8Callback, (PVOID*) &SetRenderState8Next);
    SetRenderState8Next(*device, D3DRS_FILLMODE, D3DFILL_WIREFRAME);
  }
  return result;
}

PVOID WINAPI Direct3DCreate8Callback(DWORD sdkVersion)
{
  PVOID result = Direct3DCreate8Next(sdkVersion);
  if ( result && !CreateDevice8Next )
    HookCode(GetInterfaceMethod(result, 15), CreateDevice8Callback, (PVOID*) &CreateDevice8Next);
  return result;
}

BOOL HookDirect3D8()
{
  return HookAPI("d3d8.dll", "Direct3DCreate8", Direct3DCreate8Callback, (PVOID*) &Direct3DCreate8Next);
}

// ***************************************************************
// Direct3D9

PVOID   (WINAPI *Direct3DCreate9Next) (DWORD sdkVersion);
HRESULT (WINAPI   *CreateDevice9Next) (PVOID self, DWORD adapter, DWORD devType, HWND wnd, DWORD flags, PVOID params, PVOID* device);
HRESULT (WINAPI *SetRenderState9Next) (PVOID self, DWORD stateType, DWORD state);

HRESULT WINAPI SetRenderState9Callback(PVOID self, DWORD stateType, DWORD state)
{
  if (stateType == D3DRS_FILLMODE) {
    if (state == D3DFILL_WIREFRAME) state = D3DFILL_SOLID;
    else                            state = D3DFILL_WIREFRAME;
  }
  return SetRenderState9Next(self, stateType, state);
}

HRESULT WINAPI CreateDevice9Callback(PVOID self, DWORD adapter, DWORD devType, HWND wnd, DWORD flags, PVOID params, PVOID* device)
{
  HRESULT result = CreateDevice9Next(self, adapter, devType, wnd, flags, params, device);
  if ( !result && device && *device && !SetRenderState9Next ) {
    HookCode(GetInterfaceMethod(*device, 57), SetRenderState9Callback, (PVOID*) &SetRenderState9Next);
    SetRenderState9Next(*device, D3DRS_FILLMODE, D3DFILL_WIREFRAME);
  }
  return result;
}

PVOID WINAPI Direct3DCreate9Callback(DWORD sdkVersion)
{
  PVOID result = Direct3DCreate9Next(sdkVersion);
  if ( result && !CreateDevice9Next )
    HookCode(GetInterfaceMethod(result, 16), CreateDevice9Callback, (PVOID*) &CreateDevice9Next);
  return result;
}

BOOL HookDirect3D9()
{
  return HookAPI("d3d9.dll", "Direct3DCreate9", Direct3DCreate9Callback, (PVOID*) &Direct3DCreate9Next);
}

// ***************************************************************

BOOL WINAPI DllMain(HANDLE hModule, DWORD fdwReason, LPVOID lpReserved)
{
  if (fdwReason == DLL_PROCESS_ATTACH) {
    // InitializeMadCHook is needed only if you're using the static madCHook.lib
    InitializeMadCHook();

    HookDirect3D7();
    HookDirect3D8();
    HookDirect3D9();

  } else if (fdwReason == DLL_PROCESS_DETACH)
    // FinalizeMadCHook is needed only if you're using the static madCHook.lib
    FinalizeMadCHook();

  return true;
}
Inhalt meinedll cpp:

Code: Select all

// ***************************************************************
//  HookDirect3D.dll          version:  1.0   ·  date: 2004-08-15
//  -------------------------------------------------------------
//  turns all Direct3D 7-9 games to wireframe mode
//  -------------------------------------------------------------
//  Copyright (C) 1999 - 2004 www.madshi.net, All Rights Reserved
// ***************************************************************

// 2004-08-15 1.0  initial release

// thanks to Maciej Donotek for his help

// ***************************************************************

#include <windows.h>
#include "madCodeHook.hpp"
#pragma link "madCodeHook"
#pragma link "madRemote"
#pragma link "madTools"
#pragma link "madTypes"
#pragma link "madStrings"
#pragma link "maddisasm"

// ***************************************************************

#define D3DFILL_WIREFRAME 2
#define D3DFILL_SOLID     3
#define D3DRS_FILLMODE    8

// ***************************************************************

#define D3DFILL_WIREFRAME 2
#define D3DFILL_SOLID     3
#define D3DRS_FILLMODE    8

const GUID IID_IDirect3D7 = { 0xf5049e77,0x4861,0x11d2, { 0xa4,0x7,0x0,0xa0,0xc9,0x6,0x29,0xa8 } };

// ***************************************************************

PVOID GetInterfaceMethod(PVOID intf, DWORD methodIndex)
{
  return *(PVOID*)(*(DWORD*)intf + methodIndex * 4);
}

// ***************************************************************
// Direct3D7

HRESULT (WINAPI *DirectDrawCreateExNext) (PVOID guid, IUnknown** directDraw, PVOID iid, PVOID unkOuter);
HRESULT (WINAPI      *CreateDevice7Next) (PVOID self, PVOID classId, PVOID surface, PVOID* device);
HRESULT (WINAPI    *SetRenderState7Next) (PVOID self, DWORD stateType, DWORD state);

HRESULT WINAPI SetRenderState7Callback(PVOID self, DWORD stateType, DWORD state)
{
  if (stateType == D3DRS_FILLMODE) {
    if (state == D3DFILL_WIREFRAME) state = D3DFILL_SOLID;
    else                            state = D3DFILL_WIREFRAME;
  }
  return SetRenderState7Next(self, stateType, state);
}

HRESULT WINAPI CreateDevice7Callback(PVOID self, PVOID classId, PVOID surface, PVOID* device)
{
  HRESULT result = CreateDevice7Next(self, classId, surface, device);
  if ( !result && device && *device && !SetRenderState7Next ) {
    HookCode(GetInterfaceMethod(*device, 20), SetRenderState7Callback, (PVOID*) &SetRenderState7Next);
    SetRenderState7Next(*device, D3DRS_FILLMODE, D3DFILL_WIREFRAME);
  }
  return result;
}

HRESULT WINAPI DirectDrawCreateExCallback(PVOID guid, IUnknown** directDraw, PVOID iid, PVOID unkOuter)
{
  HRESULT result = DirectDrawCreateExNext(guid, directDraw, iid, unkOuter);
  IUnknown* d3d7;
  if ( !result && !CreateDevice7Next && !(*directDraw)->QueryInterface(IID_IDirect3D7, (PVOID*) &d3d7) ) {
    HookCode(GetInterfaceMethod(d3d7, 4), CreateDevice7Callback, (PVOID*) &CreateDevice7Next);
    d3d7->Release();
  }
  return result;
}

BOOL HookDirect3D7()
{
  return HookAPI("ddraw.dll", "DirectDrawCreateEx", DirectDrawCreateExCallback, (PVOID*) &DirectDrawCreateExNext);
}

// ***************************************************************
// Direct3D8

PVOID   (WINAPI *Direct3DCreate8Next) (DWORD sdkVersion);
HRESULT (WINAPI   *CreateDevice8Next) (PVOID self, DWORD adapter, DWORD devType, HWND wnd, DWORD flags, PVOID params, PVOID* device);
HRESULT (WINAPI *SetRenderState8Next) (PVOID self, DWORD stateType, DWORD state);

HRESULT WINAPI SetRenderState8Callback(PVOID self, DWORD stateType, DWORD state)
{
  if (stateType == D3DRS_FILLMODE) {
    if (state == D3DFILL_WIREFRAME) state = D3DFILL_SOLID;
    else                            state = D3DFILL_WIREFRAME;
  }
  return SetRenderState8Next(self, stateType, state);
}

HRESULT WINAPI CreateDevice8Callback(PVOID self, DWORD adapter, DWORD devType, HWND wnd, DWORD flags, PVOID params, PVOID* device)
{
  HRESULT result = CreateDevice8Next(self, adapter, devType, wnd, flags, params, device);
  if ( !result && device && *device && !SetRenderState8Next ) {
    HookCode(GetInterfaceMethod(*device, 50), SetRenderState8Callback, (PVOID*) &SetRenderState8Next);
    SetRenderState8Next(*device, D3DRS_FILLMODE, D3DFILL_WIREFRAME);
  }
  return result;
}

PVOID WINAPI Direct3DCreate8Callback(DWORD sdkVersion)
{
  PVOID result = Direct3DCreate8Next(sdkVersion);
  if ( result && !CreateDevice8Next )
    HookCode(GetInterfaceMethod(result, 15), CreateDevice8Callback, (PVOID*) &CreateDevice8Next);
  return result;
}

BOOL HookDirect3D8()
{
  return HookAPI("d3d8.dll", "Direct3DCreate8", Direct3DCreate8Callback, (PVOID*) &Direct3DCreate8Next);
}

// ***************************************************************
// Direct3D9

PVOID   (WINAPI *Direct3DCreate9Next) (DWORD sdkVersion);
HRESULT (WINAPI   *CreateDevice9Next) (PVOID self, DWORD adapter, DWORD devType, HWND wnd, DWORD flags, PVOID params, PVOID* device);
HRESULT (WINAPI *SetRenderState9Next) (PVOID self, DWORD stateType, DWORD state);

HRESULT WINAPI SetRenderState9Callback(PVOID self, DWORD stateType, DWORD state)
{
  if (stateType == D3DRS_FILLMODE) {
    if (state == D3DFILL_WIREFRAME) state = D3DFILL_SOLID;
    else                            state = D3DFILL_WIREFRAME;
  }
  return SetRenderState9Next(self, stateType, state);
}

HRESULT WINAPI CreateDevice9Callback(PVOID self, DWORD adapter, DWORD devType, HWND wnd, DWORD flags, PVOID params, PVOID* device)
{
  HRESULT result = CreateDevice9Next(self, adapter, devType, wnd, flags, params, device);
  if ( !result && device && *device && !SetRenderState9Next ) {
    HookCode(GetInterfaceMethod(*device, 57), SetRenderState9Callback, (PVOID*) &SetRenderState9Next);
    SetRenderState9Next(*device, D3DRS_FILLMODE, D3DFILL_WIREFRAME);
  }
  return result;
}

PVOID WINAPI Direct3DCreate9Callback(DWORD sdkVersion)
{
  PVOID result = Direct3DCreate9Next(sdkVersion);
  if ( result && !CreateDevice9Next )
    HookCode(GetInterfaceMethod(result, 16), CreateDevice9Callback, (PVOID*) &CreateDevice9Next);
  return result;
}

BOOL HookDirect3D9()
{
  return HookAPI("d3d9.dll", "Direct3DCreate9", Direct3DCreate9Callback, (PVOID*) &Direct3DCreate9Next);
}

// ***************************************************************

BOOL WINAPI DllMain(HANDLE hModule, DWORD fdwReason, LPVOID lpReserved)
{
  if (fdwReason == DLL_PROCESS_ATTACH) {
    // InitializeMadCHook is needed only if you're using the static madCHook.lib


    //HookDirect3D7(); //don't use because error on all DX apps!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
    HookDirect3D8();
    HookDirect3D9();

  } else if (fdwReason == DLL_PROCESS_DETACH)
    // FinalizeMadCHook is needed only if you're using the static madCHook.lib


  return true;
}
madshi
Site Admin
Posts: 10753
Joined: Sun Mar 21, 2004 5:25 pm

Post by madshi »

Bin jetzt etwas durcheinander. Also das Problem ist komplett gelöst, wenn Du einfach HookDirect3D7 ausklammerst? Und sonst hast Du nichts geändert? Kannst Du bitte nochmal zusammenfassen, was Du jetzt rausgekriegt hast?
djdaple
Posts: 19
Joined: Thu Dec 29, 2005 6:52 am

Post by djdaple »

Also, das Problem ist noch nicht gelöst.

Mit der im Beispiel vorhandenen DLL für DirectX 7-9 kann ich jeder beliebigen DirectX Anwendung hooken und somit dort den Wireframe-Modus aktivieren.

Mit meiner in BCB6 selbstkompiliert DLL nicht.

Diese funktioniert zwar insoweit, dass sie DirectX erkennt und einen Ton ausgibt, den Wireframe-Modus aktiviert sie allerdinks nicht.

Ausserdem möchte ich nicht den Wireframe-Modus deaktivieren, sondern Mehrere Strings und Grafiken in der DirectX-Anwendung ausgeben.

Schade, dass die Beispiel-DLL (HookDirect3D.dll), die wunderbar funktioniert als

- HookDirect3D.dpr (delphi-projekt)
und
- HookDirect3D.vcproj (vc++-projekt)

vorliegt nur halt nicht für BCB, das ist schade!

Wäre echt genial, wenn das Jemand mal übersetzen könnte! Ich kann es nicht.


Der Hook läuft, erkennt DirectX, kann jedoch nicht eingreifen.

Danke ^^
madshi
Site Admin
Posts: 10753
Joined: Sun Mar 21, 2004 5:25 pm

Post by madshi »

Guck mal hier rein:

viewtopic.php?t=462&highlight=bcb

Statt "(PVOID*) &Direct3DCreate8Next" gib mal "(PVOID) Direct3DCreate8Next" rein.
djdaple
Posts: 19
Joined: Thu Dec 29, 2005 6:52 am

Post by djdaple »

Danke danke jetzt geht es! Das war der Knackpunkt :D

(PVOID) SetRenderState8Next

(PVOID) CreateDevice8Next

(PVOID) Direct3DCreate8Next

dort musste überall das * und das & weggemacht werden ^^ Fanstastisch!

Aber wie zeichne ich jetzt auf den Bildschirm mit DirectDraw?

Ich schaue mich mal um!

Aber danke du hast mich bedeutend weiter gebracht super ! :crazy:
djdaple
Posts: 19
Joined: Thu Dec 29, 2005 6:52 am

Post by djdaple »

Mist habe nichts gefunden *g* aber ich habe auf einem Delphi Board gelsen, dass jemand deine Lib für ne Statistikanzeige in GTA Vice City benutzt.

Könntest du vielleicht mal das DirectDraw Sample Posten?

Danke ^^

Hier ist eine Liste mit Befehlen.

http://www.hi.is/~snorri/097111-97/SDK-docs/x/


#define D3DFILL_WIREFRAME 2
#define D3DRS_FILLMODE 8

D3DRS_FILLMODE (8) kann ich ja auf D3DFILL_WIREFRAME (2) setzen

aber woher weiss ich, das fillmode 8 und wireframe 2 ist? o.O
djdaple
Posts: 19
Joined: Thu Dec 29, 2005 6:52 am

Post by djdaple »

Hier schon mal was für alle die das gleiche suchen ^^
Const D3DRS_ANTIALIAS = 2 ; D3DANTIALIASMODE */
Const D3DRS_TEXTUREPERSPECTIVE = 4 ; True For perspective correction */
Const D3DRS_ZENABLE = 7 ; D3DZBUFFERTYPE (Or True/False For legacy) */
Const D3DRS_FILLMODE = 8 ; D3DFILL_MODE */
Const D3DRS_SHADEMODE = 9 ; D3DFILL_MODE */
Const D3DRS_LINEPATTERN = 10 ; D3DLINEPATTERN */
Const D3DRS_ZWRITEENABLE = 14 ; True To enable z writes */
Const D3DRS_ALPHATESTENABLE = 15 ; True To enable alpha tests */
Const D3DRS_LASTPIXEL = 16 ; True For Last-pixel on lines */
Const D3DRS_SRCBLEND = 19 ; D3DBLEND */
Const D3DRS_DESTBLEND = 20 ; D3DBLEND */
Const D3DRS_CULLMODE = 22 ; D3DCULL */
Const D3DRS_ZFUNC = 23 ; D3DCMPFUNC */
Const D3DRS_ALPHAREF = 24 ; D3DFIXED (long) */
Const D3DRS_ALPHAFUNC = 25 ; D3DCMPFUNC */
Const D3DRS_DITHERENABLE = 26 ; True To enable dithering */
Const D3DRS_ALPHABLENDENABLE = 27 ; True To enable alpha blending */
Const D3DRS_FOGENABLE = 28 ; True To enable fog blending */
Const D3DRS_SPECULARENABLE = 29 ; True To enable specular */
Const D3DRS_ZVISIBLE = 30 ; True To enable z checking */
Const D3DRS_STIPPLEDALPHA = 33 ; True To enable stippled alpha (RGB device only) */
Const D3DRS_FOGCOLOR = 34 ; D3DCOLOR */ INT (((a) << 24) Or ((r) << 16) Or ((g) << 8) Or (b)))
Const D3DRS_FOGTABLEMODE = 35 ; D3DFOGMODE */
Const D3DRS_FOGSTART = 36 ; Float Fog start (For both vertex And pixel fog)
Const D3DRS_FOGEND = 37 ; Float Fog End */
Const D3DRS_FOGDENSITY = 38 ; Fog density */
Const D3DRS_EDGEANTIALIAS = 40 ; True To enable edge antialiasing */
Const D3DRS_COLORKEYENABLE = 41 ; True To enable source colorkeyed textures */
Const D3DRS_ZBIAS = 47 ; LONG Z bias */
Const D3DRS_RANGEFOGENABLE = 48 ; Enables range-based fog */

Hier gibts noch mehr:
http://www.minfos.de/selfdxd/DirectXGra ... etype.html

was aber nicht beim zeichnen eines Strings helfen sollte ;(
madshi
Site Admin
Posts: 10753
Joined: Sun Mar 21, 2004 5:25 pm

Post by madshi »

Ich weiß auch nicht genau, wie das geht. Bin leider kein DirectX-Experte.
djdaple
Posts: 19
Joined: Thu Dec 29, 2005 6:52 am

Post by djdaple »

Also ich denke, dass ich es mit DirectDraw hooken muss, da Direct3D gar keinen Text ausgeben kann :wink:

Wie schon gesagt könntest du mir das DirectDraw Sample mal zuschicken?

djdaple@web.de ^^
madshi
Site Admin
Posts: 10753
Joined: Sun Mar 21, 2004 5:25 pm

Post by madshi »

Das hab ich glaube ich nicht mehr. Aber ich denke schon, daß man das über Direct3D hinkriegen kann. Man kann ja eine Textur ausgeben, und diese Textur kann dann den Text enthalten. So machen das die Spiele meiner Ansicht nach auch, um Text auszugeben...
djdaple
Posts: 19
Joined: Thu Dec 29, 2005 6:52 am

Post by djdaple »

Ja das stimmt schon aus einer textur schneidet sich das spiel dann die zeichen aus und setzt sie hintereinander.

Aber wie realisiere ich das mit dxhook?

Hab enoch ein Problem, sobald ich nur versuche zu hooken (ohne jetzt was am spiel zu ändern) sprich nur die device des directx8 zu erstellen flieg ich aus dem spiel raus nach dem laden. (hradba anti-cheat)

bei Fraps allerdings wird der counter immer angezeigt. Die Frapsdll ist auch nur 40 kb groß o.O

Fraps.com
madshi
Site Admin
Posts: 10753
Joined: Sun Mar 21, 2004 5:25 pm

Post by madshi »

Tja, tut mich traurig, aber da kann ich leider nicht viel zu sagen...
Post Reply