Es wäre vielleicht auch mal nicht schlecht, wenn du mit einbeziehst, ob eventuell die Funktionen garkein Ergebnis (oder halt ein Falsches) zurückliefern.
Delphi-Quellcode:
Bits := GetDeviceCaps(Printer.Handle, BITSPIXEL);
Planes := GetDeviceCaps(Printer.Handle, PLANES);
If (Planes = 1) and (Bits = 1) Then Result := Monocrome
Else If (Planes = 1) and (Bits > 1) Then Result := GrayScale
Else If (Planes > 1) and (Bits > 1) Then Result := Color
Else Result := Error;
Delphi-Quellcode:
Colors := GetDeviceCaps(Printer.Handle, NUMCOLORS);
If Colors > 2 Then Result := ColorOrGrayScale
Else If Colors = 2 Then Result := Monocrome
Else Colors < 2 Then Result := Error;
Zu den Schweizern, ich weiß nicht was das mit dem >1 bei .dmColor auf sich hat, aber dort gibt es keine "Farbanzahl" ... nur DMCOLOR_COLOR, oder DMCOLOR_MONOCHROME.
DocumentProperties >
http://msdn.microsoft.com/library/de...tspol_7k1f.asp
Laut
MSDN sähe es dann also so aus
Delphi-Quellcode:
Var DM: PDeviceMode;
Begin
GetMem(DM, DocumentProperties(0, Printer.Handle, nil, nil, nil, 0));
Try
DocumentProperties(0, Printer.Handle, nil, DM, nil, DM_OUT_BUFFER);
If DM1^.dmColor = DMCOLOR_COLOR Then Result := Color
Else Result := Monocrome;
Finally
FreeMem(DM);
End;
End;