| 发表于: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 //转载请保留此信息 | | |
|