單元名
uses printers;
1、獲取控制面板中的印表機列表
printer.printers ;// 返回值型別 tstrings
2、設定印表機的列印屬性 列印方向 自定義紙張大小
//引數:lpname 表示指定印表機名字 ''表示非預設印表機
procedure setprinterinfo(lpname string) ;
var adevice, adriver, aport: pchar;
adevicemode: thandle ;
pdmode: pdevmode;
anew :boolean ;
begin
getmem(adevice,cchdevicename);
getmem(adriver,max_path);
getmem(aport,max_path);
trytrywith printer do
begin
判定印表機是否切換
if (lpname <>'') then
begin
anew := false;
if printerindex <> printer.printers.indexof(lpname ) then
anew := true ;
printerindex := printer.printers.indexof(lpname ) ;
end;
getprinter(adevice, adriver, aport,adevicemode);
/**b 針對印表機切換時使用******************************/
//例如將預設印表機切換到非預設印表機
//getnew_devicemode 自定義函式,位置unitprinterzdy單元中。
if anew then
begin
adevicemode := getnew_devicemode(adevice) ;
end;
/**e**********************************************/
if adevicemode <> 0 then
begin
pdmode := globallock(adevicemode);
if pdmode <> nil then
begin
pdmode^.dmfields:=pdmode^.dmfields or dm_orientation;
//設定列印方向橫向列印
pdmode^.dmorientation:= dmorient_landscape ;
end;
setprinter(adevice,adriver,aport, adevicemode);
globalunlock(adevicemode);
end;
/**開始列印*******/
begindoc ;
//此處列印內容
enddoc ;
/**結束列印*******/
end;
except
end;
finally
freemem(adevice,cchdevicename);
freemem(adriver,max_path);
freemem(aport,max_path);
end;
end ;
unit unitprinterzdy;
inte***ce
uses windows,winspool ;
function
getnew_devicemode
(adevice : pchar ) : thandle;
implementation
function
getnew_devicemode
(adevice : pchar ) : thandle;
var stubdevmode: tdevicemode;
fprinterhandle: thandle;
devicemode: thandle;
devmode: pdevicemode;
begin
devicemode := 0 ;
if openprinter(adevice, fprinterhandle, nil) then
begin
devicemode := globalalloc(ghnd,
documentproperties(0, fprinterhandle, adevice, stubdevmode,
stubdevmode, 0));
if devicemode <> 0
then
begin
devmode := globallock(devicemode);
if documentproperties(0, fprinterhandle, adevice, devmode^,
devmode^, dm_out_buffer) < 0
then
begin
globalunlock(devicemode);
globalfree(devicemode);
devicemode := 0;
devmode := nil;
endend;
end;
result := devicemode ;
end ;
end.
印表機案例, 辦公室裡多人使用同一印表機
印表機案例,辦公室裡多人使用同一印表機 class staff object 員工類 defuser printer self,info,pr 使用印表機的方法 param info 需要列印的資訊 param pr 印表機物件 return none pr.add task info class ...
202003 印表機安裝 網路印表機安裝 通用教程
該文源於自己的實踐總結 不一定完全正確,但可以應對大部分場景。一 對於普通印表機,通過usb連線的印表機,非網路印表機,直接找到該印表機對應的驅動,傻瓜安裝就可以啦 二 對於網路印表機 一 如果是初次安裝 先保證印表機自身接入網路,配置好ip 找到該印表機的驅動程式 未完待續 二 如果電腦裡已經安裝...
Linux配置印表機
列印流程的理解 如果印表機已經支援了ipp協議,這個協議就是基於http的。也就是說終端 pc 只要能發起http請求應該就可以列印文件。cups相當終端裝置與印表機之間的乙個橋梁,終端給cups提交文件,cpus通過ipp或者其他協議去列印這個文件。ppd檔案就是描述印表機的配置,比如印表機生產商...