// 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; 
 



Zugriffe seit 6.9.2001 auf Delphi-Ecke