Autor Beitrag
MasterTobi
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 18



BeitragVerfasst: Do 23.07.09 14:11 
hallo,
ich habe schon im Delphi-praxis Forum gepostet, aber dort bekomm ich keine Antwort, da muss ich es jetzt nochmal hier probieren

also der Code, quelle : www.delphidev.de/for...c.php?id=497&p=2

ausblenden volle Höhe Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
77:
78:
79:
80:
81:
82:
83:
84:
85:
86:
87:
88:
89:
90:
91:
92:
93:
94:
95:
96:
97:
98:
99:
100:
101:
102:
103:
104:
105:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs,direct3d9,dxtypes,directdraw,d3dx9,madcodehook;

type
  TForm1 = class(TForm)
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;
  direct3dcreate9next : function (sdkversion                                         : dword  ) : dword; stdcall = nil;
  createdevice9next   : function (self, adapter, devtype, wnd, flags, params, device: pointer) : dword; stdcall = nil;
  presentnext         : function (self: pointer; const sourcerect, destrect : prect; const destwindowoverride : hwnd; dirtyregion : prgndata) : hresult; stdcall = nil;
  font                : id3dxfont;
  mycolor             : td3dcolor;

implementation

{$R *.dfm}
function getinterfacemethod(const intf; methodindex: dword) : pointer;
begin
  result := pointer(pointer(dword(pointer(intf)^) + methodindex * 4)^);
end;



procedure showtext(x,y: integer; s: string; col: td3dcolor);
var
  rect : Prect;
begin
  rect.top := y+100; rect.left := x+100;
  rect.bottom := y+100; rect.right := x+100;
  if @font <> nil then
    font.drawtexta(nil,pchar(s),length(s),rect,dt_noclip,mycolor);
end;

function presentcallback(self : pointer; const sourcerect, destrect : prect; const destwindowoverride : hwnd; dirtyregion : prgndata) : hresult; stdcall;
var
  test : hwnd;
begin
showtext(100,100,'test',mycolor);
result := presentnext(self,sourcerect,destrect,destwindowoverride,dirtyregion);

end;


function createdevice9callback(self, adapter, devtype, wnd, flags, params, device: pointer) : dword; stdcall;
begin
  font := nil;
  result := createdevice9next(self, adapter, devtype, wnd, flags, params, device);
  if font = nil then
  begin
    d3dxcreatefont(idirect3ddevice9(device^),
                   20,
                   20,
                   0,
                   1,
                   false,
                   ansi_charset,
                   out_default_precis,
                   default_quality,
                   default_pitch,
                   'Arial',
                   font);
    mycolor := d3dcolor_rgba(255,0,0,255);
    font.preloadcharacters(0,255);
  end;
  if result = 0 then begin
    if @presentnext = nil then
    begin
      hookcode(getinterfacemethod(device^, 17), @presentcallback, @presentnext)
    end else
      renewhook(@presentnext);
  end;
end;



function direct3dcreate9callback(sdkversion: dword) : dword; stdcall;
begin
  font := nil;
  result := direct3dcreate9next(sdkversion);
  if result <> 0 then
    if @createdevice9next = nil then
      hookcode(getinterfacemethod(result, 16), @createdevice9callback, @createdevice9next)
    else
      renewhook(@createdevice9next);
end;

function hookdirect3d9 : boolean;
begin
  result := hookapi('d3d9.dll''Direct3DCreate9', @direct3dcreate9callback, @direct3dcreate9next);
end;

begin
  hookdirect3d9;
  end.


er sagt ja der code funktioniert im dxdiag un in einem game.

nur die Frage ist wieso es nicht bei mir funktioniert, hab ich vll was vergessen ?

hat jemand vll ein quellcode der funktioniert, das wäre echt super

p.s. habe das ssdk von dx7,8,9 und madcodehook
FinnO
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1331
Erhaltene Danke: 123

Mac OSX, Arch
TypeScript (Webstorm), Kotlin, Clojure (IDEA), Golang (VSCode)
BeitragVerfasst: Do 23.07.09 23:13 
also du hast mindestens 2 ganz fiese sachen gemacht.

#1: Es funktioniert nicht ist keine 1a Fehlerbeschreibung und - wie sooft gesagt - Kristallkugeln sind teuer.

#2: Ohne Bezahlung werden hier nur in Ausnahmefällen Aufgaben erledigt. Bei einem solchen Thema aber kannst du sicher sein, dass dir keiner freiwillig funktionierenden Code schreibt. Wir können dir gerne helfen, deinen Code zu berichtigen, aber verstehen und benutzen können solltest du ihn schon.

Wenn du den Code von DelphiDev hast, warum fragst du nicht speziell die Leute da? Die kennen sich damit wohl noch am besten aus.

€: Mal ganz btw: Ich sehe nicht, dass dein Programm irgendetwas macht. Du solltest das ganze am besten über die Konsole laufen lassen. Also Datei->Neu->Konsolenanwendung