转至繁体中文版     | 网站首页 | 图文教程 | 资源下载 | 站长博客 | 图片素材 | 武汉seo | 武汉网站优化 | 
最新公告:     敏韬网|教学资源学习资料永久免费分享站!  [mintao  2008年9月2日]        
您现在的位置: 学习笔记 >> 图文教程 >> 软件开发 >> Delphi程序 >> 正文
用winspool取得本机安装的打印机的详细信息         ★★★★

用winspool取得本机安装的打印机的详细信息

作者:闵涛 文章来源:闵涛的学习笔记 点击数:1431 更新时间:2009/4/23 18:40:03

用winspool取得本机安装的打印机的详细信息

在Delphi 6 Professional version on Windows 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;
    DriverName        : 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: TObject);
    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
    RaiseLastWin32Error;
end;

function GetCurrentPrinterInformation: TPrinterInfo;
var
  hPrinter  : THandle;
  pInfo:  PPrinterInfo2;
  bytesNeeded: DWORD;
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(''''PaperLength: '''' + IntToStr(PrinterInfo.DeviceMode.dmPaperLength));
    Add(''''PaperWidth: '''' + IntToStr(PrinterInfo.DeviceMode.dmPaperWidth));
    Add(''''Scale: '''' + IntToStr(PrinterInfo.DeviceMode.dmScale));
    Add(''''Copies: '''' + IntToStr(PrinterInfo.DeviceMode.dmCopies));
    Add(''''DefaultSource: '''' + IntToStr(PrinterInfo.DeviceMode.dmDefaultSource));
    Add(''''PrintQuality: '''' + IntToStr(PrinterInfo.DeviceMode.dmPrintQuality));
    Add(''''Color: '''' + IntToStr(PrinterInfo.

[1] [2]  下一页


没有相关教程
教程录入:mintao    责任编辑:mintao 
  • 上一篇教程:

  • 下一篇教程:
  • 【字体: 】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
      注:本站部分文章源于互联网,版权归原作者所有!如有侵权,请原作者与本站联系,本站将立即删除! 本站文章除特别注明外均可转载,但需注明出处! [MinTao学以致用网]
      网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)

    同类栏目
    · C语言系列  · VB.NET程序
    · JAVA开发  · Delphi程序
    · 脚本语言
    更多内容
    热门推荐 更多内容
  • 没有教程
  • 赞助链接
    更多内容
    闵涛博文 更多关于武汉SEO的内容
    500 - 内部服务器错误。

    500 - 内部服务器错误。

    您查找的资源存在问题,因而无法显示。

    | 设为首页 |加入收藏 | 联系站长 | 友情链接 | 版权申明 | 广告服务
    MinTao学以致用网

    Copyright @ 2007-2012 敏韬网(敏而好学,文韬武略--MinTao.Net)(学习笔记) Inc All Rights Reserved.
    闵涛 投放广告、内容合作请Q我! E_mail:admin@mintao.net(欢迎提供学习资源)

    站长:MinTao ICP备案号:鄂ICP备11006601号-18

    闵涛站盟:医药大全-武穴网A打造BCD……
    咸宁网络警察报警平台