// Hiermit kann man
feststellen, von welchem Typ der Standard-Drucker ist.
// Da sich seit dem Programmstart etwas an der Druckereinstellung geändert haben
// kann, muss eine eigene Instanz
(Aktuell)
erzeugt werden.
// Getestet mit D4 unter XP
uses winspool, printers;
function Drucker: integer;
var
Aktuell: TPrinter;
DeviceMode: THandle;
Device, Driver, Port: PChar;
begin
Aktuell := TPrinter.create;
if Aktuell.Printers.count > 0 then begin
getmem(Device, 100);
getmem(Driver, 100);
getmem(Port, 100);
Aktuell.GetPrinter(Device, Driver, Port, DeviceMode);
result := ord(DeviceCapabilities(Device, Port, DC_TRUETYPE, nil, nil)
= DCTT_BITMAP) * 2 + 1;
inc(result, ord(GetDeviceCaps(Aktuell.Handle, NUMCOLORS) <= 24));
freemem(Port);
freemem(Driver);
freemem(Device);
end else result := 0;
Aktuell.free;
end;
procedure TForm1.Button9Click(Sender: TObject);
var s: string;
begin
case Drucker of
0: s := 'Keinen Drucker gefunden.';
1: s := 'Der Standard-Drucker ist ein Farb-Laser-Drucker';
2: s := 'Der Standard-Drucker ist ein Schwarz/Weiß-Laser-Drucker';
3: s := 'Der Standard-Drucker ist ein Farb-Tinten-Drucker';
else s := 'Der Standard-Drucker ist ein Nadel- oder Schwarz/Weiß-Drucker'
end;
showmessage(s);
end;

|