如何提取当前打印机的配置信息,如纸张大小!

解决方案 »

  1.   

    得到打印机纸张可以用DeviceCapabilities函数,具体用法还是建议参考msdn,一下是例子:
    ......
    var
      sPrinterName, sPort: String;           //打印机的名称,连接端口如LPT1
      lpwPapers: Pointer;      //得到纸张类型名称
      dResult: DWORD;
    begin
      dResult := DeviceCapabilities(PChar(sPrinterName),PChar(sPort),DC_PAPERNAMES, nil, nil);
      if dResult > 0 then begin
        GetMem(lpwPapers, 65);   //分配空间,msdn上注明:每个纸张名都是64个字符
        try
          if DeviceCapabilitiesA(PChar(sPrinterName),PChar(sPort),DC_PAPERNAMES,
          lpwPapers, nil) = - 1 then
            raise Exception.Create('Error');
          ShowMessage(StrPas(lpwPapers));
        finally
          FreeMem(lpwPapers, 65);
        end;
      end;
     
    end;
    ......