如何得到USB接品的打印机的状态和相关的设置参数信息。help!

解决方案 »

  1.   

    Delphi中获取打印机设备名和端口名uses Printers;{$IFNDEF WIN32}
    const MAX_PATH = 144;
    {$ENDIF}procedure TForm1.Button1Click(Sender: TObject);
    var
      pDevice : pChar;
      pDriver : pChar;
      pPort   : pChar;
      hDMode : THandle;
    begin
      if PrintDialog1.Execute then begin
        GetMem(pDevice, cchDeviceName);
        GetMem(pDriver, MAX_PATH);
        GetMem(pPort, MAX_PATH);
        Printer.GetPrinter(pDevice, pDriver, pPort, hDMode);
        if lStrLen(pDriver) = 0 then begin
          GetProfileString('Devices', pDevice, '', pDriver, MAX_PATH);
          pDriver[pos(',', pDriver) - 1] := #0;
        end;
        if lStrLen(pPort) = 0 then begin
          GetProfileString('Devices', pDevice, '', pPort, MAX_PATH);
          lStrCpy(pPort,  @pPort[lStrLen(pPort)+2]);
        end;
        Memo1.Lines.Add('Device := ' + StrPas(pDevice));
        Memo1.Lines.Add('Driver := ' + StrPas(pDriver));
        Memo1.Lines.Add('Port := ' + StrPas(pPort));
        FreeMem(pDevice, cchDeviceName);
        FreeMem(pDriver, MAX_PATH);
        FreeMem(pPort, MAX_PATH);
      end;
    end;
      

  2.   

    Api函数列表                                                                               
    --与打印相关                                                                              
                                                                                              
                                                                                              
    Api函数名                     函数说明                                适用范围            
                                                                          W3.x W95 NT
    AddPrinterConnection          为当前用户建立与打印机的联系            否 是 是
    StartPagePrinter              开始打印机                              否 是 是
    StartDoc                      开始打印作业                            是 是 是
    StartDocPrinter               开始打印作业                            否 是 是
    AddPrintProvidor              加入一个打印机支持器                    否 是 是
    AddForm                       加入一个打印机窗体                      否 是 是
    AddPort                       加入一个打印机端口                      否 是 是
    AddMonitor                    加入一个打印机管理器                    否 是 是
    ShellExecute                  打开或打印指定文件                      否 是 是
    ClosePrinter                  关闭打开的打印机                        否 是 是
    WritePrinter                  向打印机输出数据                        否 是 是
    AddPrinter                    在打印机服务器上建立一个打印机          否 是 是
    SetAbortProc                  设备打印作业的放弃函数                  否 是 是
    SetPrinter                    设置打印机信息                          否 是 是
    SetPrinterData                设置打印机配置                          否 是 是
    SetJob                        设置打印作业信息                        否 是 是
    ResetPrinter                  设置打印数据类型和设备模式值            否 是 是
    DeletePrinterConnection       删除与打印机的连接                      否 是 是
    DeletePrintProcessor          删除打印机处理器                        否 是 是
    DeletePrinterDriver           删除打印机驱动程序                      否 是 是
    DeletePrinter                 删除打印机服务器上的打印机              否 是 是
    DeleteMonitor                 删除打印机监视器                        否 是 是
    DeletePrintProvidor           删除打印机提供者                        否 是 是
    DeleteForm                    删除打印机窗体层差                      否 是 是
    AbortPrinter                  删除打印机缓冲文件                      否 是 是
    DeletePort                    删除打印机端口                          否 是 是
    AddJob                        启动一个打印作业                        否 是 是
    AdvancedDocumentProperties    进行打印机高级设置                      否 是 是
    PrintDlg                      建立打印文本对话框                      否 是 是
    EnumPrintProcessors           枚举已安装的打印机处理器                否 是 是
    EnumPrinterDrivers            枚举已安装的打印机驱动程序              否 是 是
    EnumPorts                     枚举可用打印机端口                      否 是 是
    EnumPrintProcessorDatatypes   枚举打印机所支持的数据类型              否 是 是
    EnumForms                     枚举所支持的打印机窗体                  否 是 是
    AbortDoc                      终止一项打印作业                        是 是 是
    PrinterProperties             修改打印机属性                          否 是 是
    AddPrintProcessor             将打印处理器复制到打印机服务器中        否 是 是
    AddPrinterDriver              将打印机驱动程序复制到打印机服务器中    否 是 是
    PrinterMessageBox             显示打印作业出错信息                    否 是 是
    ConnectToPrinterDlg           显示浏览对话并连接网络打印机            否 是 是
    EndPagePrinter                结束打印页                              否 是 是
    EndDoc                        结束打印作业                            是 是 是
    EndDocPrinter                 结束打印作业                            否 是 是
    StartPage                     准备打印机接收数据                      是 是 是
    WaitForPrinterChange          监测打印机或打印机服务器变化            否 是 是
    GetPrintProcessorDirectory    获取打印机驱动处理器路径                否 是 是
    GetPrinterDriver              获取打印机驱动程序信息                  否 是 是
    GetPrinterDriverDirectory     获取打印机驱动程序路径                  否 是 是
    GetPrinter                    获取打印机信息                          否 是 是
    GetPrinterData                获取打印机配置信息                      否 是 是
    GetForm                       获取打印机窗口信息                      否 是 是
    EnumJobs                      获取打印作业信息                        否 是 是
    GetJob                        获取打印作业信息                        否 是 是
    OpenPrinter                   获取指定打印机的句柄                    否 是 是
    ReadPrinter                   读打印机数据                            否 是 是
    DocumentProperties            配置打印机设置                          否 是 是
    ConfigurePort                 配置打印机端口                          否 是 是
      

  3.   

    to boytomato
     谢谢你的代码.我对打印机这一块还很空白.
     我把你的代码在机子上试了一下.
     得到的端口号是却是怪怪字符.
     而实际的端口号是"USB001"
     我想了一,可能是
      LstrCpy(pPort,@pPort[LstrLen(pPort)+2]); 中的"+2"
     不知是根据什么来进行加减的呢.
     请帮忙.