得到打印机的Devmode结构(100分)

  • 主题发起人 主题发起人 dj
  • 开始时间 开始时间
D

dj

Unregistered / Unconfirmed
GUEST, unregistred user!
我用Formular one进行打印时,想得到printdevmode中的dmPaperWidth
和dmPaperLength值,但是不知道怎样操做printdevmode这个OLE_Handle.
有烦各位不啬赐教,(最好给段例子)。谢谢!!
 
用api, getprinter(printer.handle,2,bufprinterinfo2,sizeof(printer_info_2),counts)
得到printer_info_2的值, 然后bufprinterinfo2^.pDevMode就是devmode.
 
TPrinter提供了方法:
procedure GetPrinter (ADevice, ADriver, APort: PChar;
var ADeviceMode: THandle);
其中的ADeviceMode就是指向devmode的指针.
 
var
ADevice,ADriver,APort:string;
ADeviceMode:THandle;
DevMode:PDeviceMode;
Page:TPoint;
begin

DevMode:=GlobalLock(ADeviceMode);
try
DevMode^.dmFields:=DevMode^.dmFields or DM_PaperSize;
DevMode^.dmPaperSize:=?;
DevMode^.dmFields:=DevMode^.dmFields or DM_PaperWidth;
DevMode^.dmPaperWidth:=2090;
DevMode^.dmFields:=DevMode^.dmFields or DM_PaperLength;
DevMode^.dmPaperLength:=?;
finally
GlobalUnlock(ADeviceMode);
end;

 
接受答案了.
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
I
回复
0
查看
2K
import
I
后退
顶部