您的位置:程序门 -> delphi -> windows sdk/api



我想获取现在正在使用的打印机的任务数,不知道怎样实现!望高手解惑,谢谢!


[收藏此页] [打印本页]选择字色:背景色:字体:[][][]


我想获取现在正在使用的打印机的任务数,不知道怎样实现!望高手解惑,谢谢![已结贴,结贴人:leedeqing]
发表于:2007-11-23 15:58:20 楼主
一台电脑接2台打印机,想获取2台打印机的任务数,以便设置默认打印机进行切换
发表于:2007-11-23 21:52:491楼 得分:100
这是我在网上看到的一篇文章,应该对你有用
用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.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
//转载请保留此信息

发表于:2007-11-23 21:58:162楼 得分:0
帮你顶一下
发表于:2007-11-24 12:49:013楼 得分:0
学习
发表于:2007-11-24 16:47:384楼 得分:0
不错,以上楼主的贴非常不错。
发表于:2007-11-29 09:48:395楼 得分:0
谢谢


快速检索

最新资讯
热门点击