当我的系统运行后,发现此时打印机没有开,就去开打印机,
但是此时还是不能打印。
就是说,每次打印之前都去检查打印机才能满足要求。
怎么检查??

解决方案 »

  1.   

    //试试这个
    //功能:检测打印机是否可用
    function TFBillPreview.CheckPrinterConnect: Boolean;
      function GetCurrentPrinterHandle: THandle;
      var
        Device, Driver, Port : array[0..215] of char;
        hDeviceMode: THandle;
      begin
        Printer.GetPrinter(Device, Driver, Port, hDeviceMode);
        OpenPrinter(@Device, Result, nil);
      end;
    type
      TJobs = Array [0..1000] of JOB_INFO_1;
      PJobs = ^TJobs;
    var
      hPrinter : THandle;
      bytesNeeded, numJobs: Cardinal;
      pJ: PJobs;
    begin
      CheckPrinterConnect := False;
      hPrinter:= GetCurrentPrinterHandle;
      try
        EnumJobs( hPrinter, 0, 1000, 1, nil, 0, bytesNeeded, numJobs );
        pJ := AllocMem( bytesNeeded );
        If EnumJobs( hPrinter, 0, 1000, 1, pJ, bytesNeeded, bytesNeeded, numJobs ) then
          CheckPrinterConnect := True;
      finally
        ClosePrinter( hPrinter );
      end;
    end;
      

  2.   

    可能和你的printer的建立有关系
      

  3.   

    delphi有这个缺点:系统运行后,再去开打印机,此时是不能打印,要重新运行系统后才可以。
    怎么做到不用再重新运行系统就可以打印呢?就是每次打印之前都去检查打印机,并且得到当前的打印。