1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33:
| procedure GetPrinterInfos; VAR pcbNeed:DWord; Buffer: Pointer; hPrinter:THandle; Device : array[0..255] of char; Driver : array[0..255] of char; Port : array[0..255] of char; hDeviceMode: THandle; Begin With WordPrinterForm do Begin Printer.PrinterIndex:=Combobox1.ItemIndex; Printer.GetPrinter(Device, Driver, Port, hDeviceMode); if WinSpool.OpenPrinter(@Device, hPrinter, nil) then Begin GetPrinter(hPrinter, 2, nil,0,@pcbNeed); // return false, Don't Care GetMem(Buffer, pcbNeed); if GetPrinter(hPrinter, 2, Buffer, pcbNeed, @pcbNeed) then Begin Status:=TPrinterInfo2A(Buffer^).Status; if TPrinterInfo2A(Buffer^).pDriverName <> nil then DriverName:=TPrinterInfo2A(Buffer^).pDriverName; if TPrinterInfo2A(Buffer^).pLocation <> nil then Location:=TPrinterInfo2A(Buffer^).pLocation; if (TPrinterInfo2A(Buffer^).pPortName <> nil) then Portname:=TPrinterInfo2A(Buffer^).pPortName; if TPrinterInfo2A(Buffer^).pComment <> nil then Comment:=TPrinterInfo2A(Buffer^).pComment End; FreeMem(Buffer, pcbNeed); End; End; End; |