Hallo,
ich habe folgendes geschrieben:
Delphi-Quellcode:
procedure TForm1.Button2Click(Sender: TObject);
type
TPrinterInfo=Printer_Info_2;
PPrinterInfo=^TPrinterInfo;
var hd : THandle;
str : PPrinterInfo;
byt : Cardinal;
p : array[0..255] of char;
begin
hd:=GetPrinterHandle(GetStandardPrinter);
if GetPrinterStatus(hd) <> 0
then showMessage('yippi');
end;
function TForm1.GetPrinterStatus(PHandle:THandle):integer;
type
TPrinterInfo=Printer_Info_6;
PPrinterInfo=^TPrinterInfo;
var
BytesNeeded:Cardinal;
PInfo:PPrinterInfo;
ok:boolean;
begin
result:=-1;
//Speicherbedarf lesen
GetPrinter(PHandle,6,nil,0,@BytesNeeded);
PInfo:=AllocMem(BytesNeeded);
//Daten holen
ok:=GetPrinter(PHandle,6,PInfo,BytesNeeded,@BytesNeeded);
if (ok=true) then
begin
Result:=integer(PInfo.dwStatus);
end
end;
function TForm1.GetPrinterHandle(PrinterName:string):THandle;
var
P:array[0..255]of Char;
begin
StrPCopy(P,PrinterName);
if OpenPrinter(@P, Result, nil)=FALSE then Result:=0;
end;
function TForm1.GetStandardPrinter():String;
var
s:string;
prn:TPrinter;
var
ResStr: array[0..255] of Char;
begin
s:='NA';
prn:=printer();
//Drucker installiert ?
if (prn.printers.count>0) then
begin
//Druckername holen
GetProfileString('Windows', 'device', '', ResStr, 255);
s := Trim(StrPas(ResStr));
end;
//Druckernamen formatieren
if (s='') then s:='NA';
s:=copy(s,0,Pos(',',s)-1);
Result:=trim(s);
end;
Mit diesem Code lese ich Informationen über den Druckerstatus aus. Das Problem ist, dass er bei
Delphi-Quellcode:
if GetPrinterStatus(hd) <> 0
then showMessage('yippi');
immer den Wert 0 zurückliefert. Wenn der Wert <> 0 ist, habe ich eine entsprechende Information. Weiss jemand, wo das Problem leigen könnte. Ich habe da die Vermutung, dass es nicht geht, weil der Drucker über USB angeschlossen ist.
Beste Grüße
Ulrich