在以前的贴子里看到有用汇编语言的,还有其他方法吗?

解决方案 »

  1.   

    var
     mPrintHandle:THandle;
    lRet:LongBool;                     
    Job_Info:array[0..99] of _JOB_INFO_2;
    ...
      
    begin
      lRet:=OpenPrinter(PChar(PrinterName), mPrintHandle, nil);
      if lRet=false then
      begin
        timer1.Enabled:=false;
        showmessage('打印机名错');
        exit;
      end;
      If mPrintHandle <> 0 Then
      begin
        s:=Sizeof(Job_Info);
        cbNeeded:=0;
        cReturned:=0;
        lRet:=EnumJobs(mPrintHandle,0,99,2,@Job_Info,s,cbNeeded,cReturned);
      end;
      if lRet=false then
      begin
        showmessage('错误'+inttostr(GetlastError));
        exit;
      end;
      i:=0;
      if (Job_Info[0].Status=JOB_STATUS_PRINTING)and(Job_Info[0].jobId<>Idno) then
      begin
    .....状态得到