Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Problem mit CreateDC Hook (https://www.delphipraxis.net/161002-problem-mit-createdc-hook.html)

gORDon_vdLg 11. Jun 2011 17:50

Problem mit CreateDC Hook
 
Guten Tag, ich habe folgendes Problem. Und zwar habe ich ein Programm vor mir welches sich den Bildschirm abfilmen und per Netzwerk übertragen kann. Es holt sich per CreateDC ein DC vom Desktop um einen Screenshot zu machen, ich habe mir also eine DLL gebastelt die CreateDCW Hookt und das DC von einem aus einer Datei geladenen Bitmap zurückgeben soll. Soweit so gut, es funktioniert nicht ganz... Bei der Software die ich da modifiziere sehe ich nur noch ein schwarzes Bild anstelle des geladenen Bitmaps. Ich zeige euch mal meinen Code, da wird sicher jemand meinen Denkfehler finden.

Danke im Vorraus!

Delphi-Quellcode:
library sigeye;

uses
  SysUtils,
  Classes,
  Windows,
  Graphics,
  detour in 'detour.pas';

{$R *.res}

var
  hFakeDC:Cardinal;
  pOriCreateDCW:Pointer;
  FakeBMP:TBitmap;

function OriCreateDCW(Driver, Device:PWideChar; Output, InitData:Pointer):Cardinal; stdcall;
asm
  jmp pOriCreateDCW
end;

function MyCreateDCW(Driver, Device:PWideChar; Output, InitData:Pointer):Cardinal; stdcall;
begin
  if (Driver = 'DISPLAY') then begin
    Result := hFakeDC;
  end else begin
    Result := OriCreateDCW(Driver, Device, Output, InitData);
  end;
end;

procedure StartProc; stdcall;
begin
  FakeBMP := TBitmap.Create;
  FakeBMP.LoadFromFile('c:\fakescreen.bmp');
  hFakeDC := FakeBMP.Canvas.Handle;

  DetourHook('gdi32.dll', 'CreateDCW', @MyCreateDCW, pOriCreateDCW);
end;

begin
  StartProc;
end.


Alle Zeitangaben in WEZ +1. Es ist jetzt 08:26 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz