用winspool取得本機安裝的印表機的詳細資訊 (轉)
用winspool取得本機的印表機的詳細資訊
在 6 Professional version on 2000 Professional環境下測試過
窗體的名字為"FPrint",有TMemo 和 TCombobox 兩個
unit unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls, ComCtrls, TabEdit, Printers, Buttons, WinSpool;
type
TPrinterInfo = record
SeverName : PChar;
PrinterName : PChar;
ShareName : PChar;
PortName : PChar;
Name : PChar;
Comment : PChar;
Location : PChar;
DeviceMode : PDeviceModeA;
SepFile : PChar;
PrintProcessor : PChar;
DataType : PChar;
Parameters : PChar;
SecurityDescriptor: PSecurityDescriptor;
Attributes : Cardinal;
DefaultPriority : Cardinal;
StartTime : Cardinal;
UntilTime : Cardinal;
Status : Cardinal;
Jobs : Cardinal;
AveragePPM : Cardinal;
end;
TFPrint = class(TForm)
Memo1: TMemo;
ComboBox1: TComboBox;
procedure FormShow(Sender: T);
procedure ComboBox1Change(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
function GetCurrentPrinterInformation: TPrinterInfo;
function GetCurrentPrinterHandle: THandle;
var
FPrint: TFPrint;
implementation
{$R *.dfm}
function GetCurrentPrinterHandle: THandle;
var
Device, Driver, Port : array[0..255] of char;
hDeviceMode: THandle;
begin
Printer.GetPrinter(Device, Driver, Port, hDeviceMode);
if not OpenPrinter(@Device, Result, nil) then
RaiseLastError;
end;
function GetCurrentPrinterInformation: TPrinterInfo;
var
hPrinter : THandle;
pInfo: PPrinterInfo2;
bytesNeeded: D;
begin
hprinter := GetCurrentPrinterHandle;
try
Winspool.GetPrinter( hPrinter, 2, Nil, 0, @bytesNeeded );
pInfo := AllocMem( bytesNeeded );
try
Winspool.GetPrinter( hPrinter, 2, pInfo, bytesNeeded, @bytesNeeded );
Result.SeverName := pInfo^.pServerName;
Result.PrinterName := pInfo^.pPrinterName;
Result.ShareName := pInfo^.pShareName;
Result.PortName := pInfo^.pPortName;
Result.DriverName := pInfo^.pDriverName;
Result.Comment := pInfo^.pComment;
Result.Location := pInfo^.pLocation;
Result.DeviceMode := pInfo^.pDevMode;
Result.SepFile := pInfo^.pSepFile;
Result.PrintProcessor := pInfo^.pPrintProcessor;
Result.DataType := pInfo^.pDatatype;
Result.Parameters := pInfo^.pParameters;
Result.SecurityDescriptor := pInfo^.pSecurityDescriptor;
Result.Attributes := pInfo^.Attributes;
Result.DefaultPriority := pInfo^.DefaultPriority;
Result.StartTime := pInfo^.StartTime;
Result.UntilTime := pInfo^.UntilTime;
Result.Status := pInfo^.Status;
Result.Jobs := pInfo^.cJobs;
Result.AveragePPM := pInfo^.AveragePPM;
finally
FreeMem( pInfo );
end;
finally
ClosePrinter( hPrinter );
end;
end;
procedure TFPrint.FormShow(Sender: TObject);
begin
ComboBox1.Items.Assign(Printer.Printers);
ComboBox1.ItemIndex := 0;
ComboBox1.OnChange(nil);
end;
procedure TFPrint.ComboBox1Change(Sender: TObject);
var
PrinterInfo: TPrinterInfo;
begin
PrinterInfo := GetCurrentPrinterInformation;
memo1.Clear;
with memo1.Lines do
begin
Add('GENERAL INFORMATION');
Add('');
Add('ServerName: ' + PrinterInfo.SeverName);
Add('PrinterName: ' + PrinterInfo.PrinterName);
Add('ShareName: ' + PrinterInfo.ShareName);
Add('PortName: ' + PrinterInfo.PortName);
Add('DriverName: ' + PrinterInfo.DriverName);
Add('Comment: ' + PrinterInfo.Comment);
Add('Location: ' + PrinterInfo.Location);
Add('SepFile: ' + PrinterInfo.SepFile);
Add('PrintProcessor: ' + PrinterInfo.PrintProcessor);
Add('DataType: ' + PrinterInfo.DataType);
Add('Parameters: ' + PrinterInfo.Parameters);
Add('Attributes: ' + IntToStr(PrinterInfo.Attributes));
Add('DefaultPriority: ' + IntToStr(PrinterInfo.DefaultPriority));
Add('StartTime: ' + IntToStr(PrinterInfo.StartTime));
Add('UntilTime: ' + IntToStr(PrinterInfo.UntilTime));
Add('Status: ' + IntToStr(PrinterInfo.Status));
Add('Jobs: ' + IntToStr(PrinterInfo.Jobs));
Add('AveragePPM: ' + IntToStr(PrinterInfo.AveragePPM));
Add('');
Add('DEVICEMODE INFORMATION');
Add('');
Add('DeviceName: ' + PrinterInfo.DeviceMode.dmDeviceName);
Add('SpecVersion: ' + IntToStr(PrinterInfo.DeviceMode.dmSpecVersion));
Add('DriverVersion: ' + IntToStr(PrinterInfo.DeviceMode.dmDriverVersion));
Add('Size: ' + IntToStr(PrinterInfo.DeviceMode.dmSize));
Add('DriverExtra: ' + IntToStr(PrinterInfo.DeviceMode.dmDriverExtra));
Add('Fields: ' + IntToStr(PrinterInfo.DeviceMode.dmFields));
Add('Orientation: ' + IntToStr(PrinterInfo.DeviceMode.dmOrientation));
Add('PaperSize: ' + IntToStr(PrinterInfo.DeviceMode.dmPaperSize));
Add('Paength: ' + IntToStr(PrinterInfo.DeviceMode.dmPaperLength));
Add('PaperWidth: ' + IntToStr(PrinterInfo.DeviceMode.dmPaperWidth));
Add('Scale: ' + IntToStr(PrinterInfo.DeviceMode.dmScale));
Add('Copies: ' + IntToStr(PrinterInfo.DeviceMode.dmCopies));
Add('Default: ' + IntToStr(PrinterInfo.DeviceMode.dmDefaultSource));
Add('PrintQuality: ' + IntToStr(PrinterInfo.DeviceMode.dmPrintQuality));
Add('Color: ' + IntToStr(PrinterInfo.DeviceMode.dmColor));
Add('Duplex: ' + IntToStr(PrinterInfo.DeviceMode.dmDuplex));
Add('YResolution: ' + IntToStr(PrinterInfo.DeviceMode.dmYResolution));
Add('TTOption: ' + IntToStr(PrinterInfo.DeviceMode.dmTTOption));
Add('Collate: ' + IntToStr(PrinterInfo.DeviceMode.dmCollate));
Add('LogPixels: ' + IntToStr(PrinterInfo.DeviceMode.dmLogPixels));
Add('BitsPerPel: ' + IntToStr(PrinterInfo.DeviceMode.dmBitsPerPel));
Add('PelsWidth: ' + IntToStr(PrinterInfo.DeviceMode.dmPelsWidth));
Add('PelsHeight: ' + IntToStr(PrinterInfo.DeviceMode.dmPelsHeight));
Add('DisplayFlags: ' + IntToStr(PrinterInfo.DeviceMode.dmDisplayFlags));
Add('DisplayFrequency: ' + IntToStr(PrinterInfo.DeviceMode.dmDisplayFrequency));
Add('ICMMethod: ' + IntToStr(PrinterInfo.DeviceMode.dmICMMethod));
Add('ICMintent: ' + IntToStr(PrinterInfo.DeviceMode.dmICMIntent));
Add('MediaType: ' + IntToStr(PrinterInfo.DeviceMode.dmMediaType));
Add('DitherType: ' + IntToStr(PrinterInfo.DeviceMode.dmDitherType));
Add('ICCManufacturer: ' + IntToStr(PrinterInfo.DeviceMode.dmICCManufacturer));
Add('ICCModel: ' + IntToStr(PrinterInfo.DeviceMode.dmICCModel));
Add('PanningWidth: ' + IntToStr(PrinterInfo.DeviceMode.dmPanningWidth));
Add('PanningHeight: ' + IntToStr(PrinterInfo.DeviceMode.dmPanningHeight));
end;
end;
end.
//rock
//轉載請保留此資訊
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10748419/viewspace-1003093/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 如何安裝pdf印表機 安裝pdf印表機的方法
- 惠普印表機怎麼安裝?惠普印表機安裝使用教程
- 如何安裝印表機驅動 印表機驅動安裝步驟
- 取得ie詳細版本資訊.及其它版本資訊的兩種方法. (轉)
- 虛擬印表機怎麼安裝 win10虛擬印表機安裝的方法Win10
- Ubuntu18.10安裝HP網路印表機詳細步驟Ubuntu
- 惠普印表機驅動怎麼安裝 惠普印表機驅動安裝教程
- 如何把印表機驅動解除安裝乾淨 印表機驅動解除安裝乾淨的教程
- 筆記本怎麼連印表機 筆記本與印表機連線的教程筆記
- 惠普6078印表機怎麼樣?惠普6078印表機詳細評測
- 360驅動大師怎麼安裝印表機驅動 360驅動安裝印表機的步驟
- tcpdump的本機安裝和使用TCP
- Win10系統怎麼安裝網路印表機_win10安裝網路印表機的方法Win10
- win10怎麼解除安裝印表機驅動 win10解除安裝印表機驅動的方法Win10
- jpackage安裝Java原生本機應用的新工具PackageJava
- 電腦怎麼安裝印表機驅動程式 電腦印表機安裝驅動教程
- fujixerox印表機驅動安裝方法
- 用程式取得CPU資訊 (轉)
- Hadoop詳細安裝步驟,附帶安裝完的虛擬機器。Hadoop虛擬機
- windows10怎麼安裝印表機_win10電腦安裝印表機步驟圖解WindowsWin10圖解
- m1136印表機驅動如何安裝 m1136印表機驅動安裝教程
- 佳能lbp2900印表機怎麼安裝驅動 佳能lbp2900印表機安裝步驟
- Linux 虛擬機器詳細安裝MySQLLinux虛擬機MySql
- Win10電腦印表機提示無法列印似乎未安裝印表機的解決方法Win10
- iOS 獲取本機的裝置資訊UIDeviceiOSUIIDEdev
- Linux上JDK的 安裝和解除安裝 詳細 (轉)LinuxJDK
- 印表機驅動怎麼解除安裝刪除 win10印表機驅動解除安裝不乾淨Win10
- 怎麼樣安裝HP1005印表機驅動程式 惠普1005印表機安裝驅動
- 愛普生615kii印表機怎麼安裝驅動 lq-615kii印表機驅動安裝
- 在Oracle817上安裝java虛擬機器詳細步驟(轉)OracleJava虛擬機
- macOS 移除頑固印表機資訊Mac
- win10系統解除安裝印表機驅動的方法Win10
- 印表機不列印是怎麼回事 印表機不印表機的解決方法
- VMware 虛擬機器安裝CentOS映象詳細步驟虛擬機CentOS
- 怎樣用程式取得CPU資訊 (轉)
- win10系統印表機提示“無法列印,似乎未安裝印表機”怎麼辦Win10
- solaris8安裝詳細的中文文件(轉)
- Mac怎麼解除安裝印表機驅動程式Mac