DocumentProperties得不到正确的纸张设置

dageming 2009-12-03 12:04:28
不管我用PrinterSetupDialog设置纸张横向竖向还是A3A4,DocumentProperties出来的结果总是一样的,都是A4+竖向,即是打印机首选项的设置.程序如下:

SetLength(strPrinterName, MAX_PATH);
Printer.GetPrinter(PrinterName, Driver, Port, DevModeHandle);
strPrinterName := PrinterName;
PrinterDefaults.pDatatype := 0;
PrinterDefaults.pDevMode := 0;
PrinterDefaults.DesiredAccess := PRINTER_ACCESS_USE;
OpenPrinter(PChar(strPrinterName), phPrinter, @PrinterDefaults)
try
iRet := DocumentProperties(Handle, phPrinter, PChar(strPrinterName),
DevMode^, DevMode^, 0);
GetMem(DevMode, iRet);
try
iRet := DocumentProperties(Handle, phPrinter, PChar(strPrinterName),
DevMode^, DevMode^, DM_OUT_BUFFER);
FormID := DevMode^.dmPaperSize;
Printer.Refresh;
finally
FreeMem(DevMode);
end;
finally
ClosePrinter(phPrinter);
end;

前天发帖问了个远程打印的问题,
http://topic.csdn.net/u/20091201/22/9ac28b79-7f1e-4a5c-90b8-45a281d4670e.html
没人回答,顺便问问还有什么方式能获得打印机上的纸张类型?即A3还是A4?
...全文
107 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
gyk120 2009-12-03
  • 打赏
  • 举报
回复
http://topic.csdn.net/t/20020621/11/820370.html
楼主是按照这个帖子的方法操作的吗?
dageming 2009-12-03
  • 打赏
  • 举报
回复
自己顶啊
dageming 2009-12-03
  • 打赏
  • 举报
回复
我之所以用方式1:DocumentProperties的方法来得PDeviceMode,
而不是用方式2:
GetPrinter(Device, Driver, Port, ADevMode);
DevMode := GlobalLock(ADevMode);
的方式,是以为在远程桌面中,GlobalLock调用会话中的打印机会出错,请看我另外一个帖子
http://topic.csdn.net/u/20091201/22/9ac28b79-7f1e-4a5c-90b8-45a281d4670e.html .

很明显,方式1得不到PrinterSetupDialog设置后的信息,方式2却可以,但方式2我不能用.楼上继续指教

1,183

社区成员

发帖
与我相关
我的任务
社区描述
Delphi Windows SDK/API
社区管理员
  • Windows SDK/API社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧