Thema: ExtEscape

Einzelnen Beitrag anzeigen

Moony

Registriert seit: 29. Jul 2003
Ort: Essen
454 Beiträge
 
Delphi 2010 Professional
 
#1

ExtEscape

  Alt 5. Mär 2007, 14:38
Hallo Leute,

ich habe versucht eine Lösung zu finden, komme aber nicht dahinter. Folgendes Problem:

Ich habe eine Bibliotheksdatei (Datei.h) von einem Druckertreiber. In dieser Datei sind die möglichen Funktionen deklariert:

Delphi-Quellcode:
#define ESC_ICENCODE 11013

typedef struct
{
    DWORD hwnd;
    WORD  nID;
}
 MY_ICENCODE;

typedef MY_ICENCODE FAR * LPMY_ICENCODE;
Das habe ich in Delphi übersetzt und folgendes ist bei rum gekommen:

Delphi-Quellcode:
type
  TMY_ICENCODE = record
    hwnd : DWORD;
    nID : Word;
  end;

const
  ESC_ICENCODE = 11013;
Um eine Escape-Sequenz an den Drucker zu schicken habe ich dann folgende Routine geschrieben:

Delphi-Quellcode:
function EncodeData(hc: HDC): Boolean;
var _MYEncode : TMY_ICENCODE;
    Res : Integer;
begin
  Result := false;
  if InitPrinterDriver = 0 then Exit;

  _MYEncode.hwnd := hc;
  _MYEncode.nID := PrntID;

  Res := ExtEscape(hc, ESC_ICENCODE, SizeOf(TMY_ICENCODE), @_MYEncode, SizeOf(TMY_ICENCODE), @_MYEncode);
   if Res < 0 then
  begin
    ShowMessage('Error!');
    Result := false;
  end
  else if Res = 0 then
  begin
    ShowMessage('Function is not implemented!');
    Result := false;
  end
  else if Res > 0 then Result := true;
end;
Das HDC, das übergeben wird, ist das Handle der Treiber-DLL. Die Funktion kommt immer mit 0 zurück. Was mache ich falsch? Ich hoffe es weiß jemand eine Lösung.

Thx im Voraus.

Gruß, Moony
Ich weiß, daß ich nichts weiß! Sokrates
  Mit Zitat antworten Zitat