uses WinSpool;
procedure TForm1.FormCreate(Sender: TObject);
begin
comboPrinters.Items.Assign( Printer.Printers );
end;
procedure TForm1.Button1Click(Sender: TObject);
var
hPrinter: THandle;
PrtName: String;
DriverInfo: PDriverInfo2;
dwNeeded: DWord;
begin
PrtName := comboPrinters.Text;
OpenPrinter( PChar( PrtName ) , hPrinter , nil );
GetPrinterDriver( hPrinter, nil, 2, DriverInfo, 0, dwNeeded );
GetMem( DriverInfo, dwNeeded );
if GetPrinterDriver( hPrinter, nil, 2, DriverInfo, dwNeeded, dwNeeded )
then
begin
Memo1.Lines.Add( IntToStr( DriverInfo.cVersion ) ); // The driver
version
Memo1.Lines.Add( StrPas( DriverInfo.pName ) );
Memo1.Lines.Add( StrPas( DriverInfo.pEnvironment ) );
Memo1.Lines.Add( StrPas( DriverInfo.pDriverPath ) );
Memo1.Lines.Add( StrPas( DriverInfo.pDataFile ) );
Memo1.Lines.Add( StrPas( DriverInfo.pConfigFile ) );
end
else
Memo1.Lines.Add( 'No Info needed = ' + IntToStr( dwNeeded ) );
ClosePrinter( hPrinter );
FreeMem( DriverInfo );
end;