网站公告列表

  没有公告

加入收藏
设为首页
联系站长
您现在的位置: 网络学院 >> 程序设计 >> Delphi编程 >> 文章正文
  如何取得LPT端口打印机支持的 最小和最大页面大小            【字体:
如何取得LPT端口打印机支持的 最小和最大页面大小
作者:佚名    文章来源:不详    点击数:    更新时间:2007-9-12    

由于工作需要,经朋友 (DS,FT)指点,先贴工作中代码,至于使用USB端口打印机,日后再说。
正在装载数据……

  TPrinterSett = record
    PrinterName: string;
    MinPaperSize: TPoint;
    MaxPaperSize: TPoint;
  end;

private
  FPrnSett: TPrinterSett;

uses
  Printers, WinSpool;

function GetMinMaxPaperSize: Boolean;
var
  R: DWORD;
  PrnName: string;
  hPrn: THandle;
  DevMode: TDeviceMode;

  pPrnInfo: PPrinterInfo2;
  dwNeeded: DWORD;
  PortName: string;
begin
  Result := False;
  if Printer.PrinterIndex < 0 then Exit;

  PrnName := Printer.Printers.Strings[Printer.PrinterIndex];
  if not OpenPrinter(PChar(PrnName), hPrn, nil) then Exit;

  try
    FPrnSett.PrinterName := PrnName;
    if not GetPrinter(hPrn, 2, nil, 0, @dwNeeded) then
    begin
      pPrnInfo := AllocMem(dwNeeded);
      try
        if GetPrinter(hPrn, 2, pPrnInfo, dwNeeded, @dwNeeded) then
        begin
          PortName := pPrnInfo.pPortName;
          if Pos('LPT', PortName) = 0 then Exit;
        end else begin
          Exit;
        end;
      finally
        FreeMem(pPrnInfo);
      end;
    end;

    R := DeviceCapabilities(
      PChar(PrnName), PChar(PortName), DC_MINEXTENT, nil, @DevMode);

    if R > 0 then
    begin
      with FPrnSett do
      begin
        MinPaperSize.x := LoWord(R);
        MinPaperSize.y := HiWord(R);
      end;
      {
      ShowMessage('Min Paper Width: ' + IntToStr(FPrnSett.MinPaperSize.x) + #13+
                  'Min Paper Length: ' + IntToStr(FPrnSett.MinPaperSize.y));
      }
    end else begin
      Exit;
    end;

    R := DeviceCapabilities(
      PChar(PrnName), PChar(PortName), DC_MAXEXTENT, nil, @DevMode);

    if R > 0 then
    begin
      with FPrnSett do
      begin
        MaxPaperSize.x := LoWord(R);
        MaxPaperSize.y := HiWord(R);
      end;
      {
      ShowMessage('Max Paper Width: ' + IntToStr(FPrnSett.MaxPaperSize.x) + #13+
                  'Max Paper Length: ' + IntToStr(FPrnSett.MaxPaperSize.y));
      }
    end else begin
      Exit;
    end;

    Result := True;
  finally
    ClosePrinter(hPrn);
  end;
end;

 




本文来源:http://blog.csdn.net/swayi21/archive/2007/08/15/1745362.aspx
站内文章搜索 高级搜索
文章录入:admin    责任编辑:admin 
  • 上一篇文章:

  • 下一篇文章:
  • 发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
    最新热点 最新推荐 相关文章
     在delphi中使用xml文档有…
     初探delphi 7 中的插件编…
     delphi 2006(dexter) & …
     获得windows的版本信息。
     “序列号输入助手”源代…
     rs232串口通讯模块
     ado方式下判断数据表是否…
  • JSP Tag Library

  • chapter one

  • boost.shared_ptr源码重列

  • 绑定HGE到AngelScript脚本系…

  • Ajax - javascript之实现…

  • 初学者,你应当如何学习C++以…

  • CString, BSTR, LPCTSTR之间…

  • 如何在C#中使用Win32和其他库…

  • 如何实现那种流行的平面按钮

  • VB,VC,Delphi,SDK笑话

  •   网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)
    网络学院©2007 www.23book.net
    为您提供web编程,vb编程,vc编程,服务器架设管理,数据库设计等方面的知识 站长:David