我能用这个来等待打印消息吗 
就是当有打印发生时,通知我  
用FindFirstPrinterChangeNotification(hPrinter,PRINTER_CHANGE_JOB,0,@pno)
FindNextPrinterChangeNotification(hResult,pdwChange,@pno,Pointer(pinfo));
方法

解决方案 »

  1.   

    FFinder := FindFirstPrinterChangeNotification(.........)if WaitForSingleObject(FFinder, 50) = WAIT_OBJECT_0 then 
    begin 
      if FindNextPrinterChangeNotification(FFinder, FFlags, nil, Pointer(FNotifyInfo)) then 
      begin 
        ...............
      end; 
    end;
      

  2.   

    参考
    http://delphi.ktop.com.tw/board.php?cid=168&fid=917&tid=39028
      

  3.   

    这个我也写过,不过到WaitForSingleObject(FFinder, 50) 他也不等待啊 ,
      

  4.   

    然后 FindNextPrinterChangeNotification(FFinder, FFlags, nil, Pointer(FNotifyInfo)) 后,怎么才能取到这次打印的值啊 ???
      

  5.   

    WaitForSingleObject(FFinder, 50)??等50毫秒而已,很快的呢~
      

  6.   

    改成WaitForSingleObject(chgObject,INFINITE);了,这次在这等了 
    不过有打印发生时,我可以走到FindNextPrinterChangeNotification(FFinder, FFlags, nil, Pointer(FNotifyInfo)) ,但是我怎么能得到我这次的打印信息啊
      

  7.   

    FindNextPrinterChangeNotification(FFinder,  FFlags,  nil,  Pointer(FNotifyInfo)) 
    后 ,如何获取打印的相关信息 ?
      

  8.   

    这个可以取到吗?>
    typedef struct _PRINTER_NOTIFY_INFO {  
        DWORD  Version; 
        DWORD  Flags; 
        DWORD  Count; 
        PRINTER_NOTIFY_INFO_DATA  aData[1]; 
    } PRINTER_NOTIFY_INFO; typedef struct _PRINTER_NOTIFY_INFO_DATA {  
        WORD   Type; 
        WORD   Field; 
        DWORD  Reserved; 
        DWORD  Id; 
        union { 
            DWORD  adwData[2]; 
            struct { 
                DWORD  cbBuf; 
                LPVOID pBuf; 
            } Data; 
        } NotifyData; 
    } PRINTER_NOTIFY_INFO_DATA; 
      

  9.   

    WaitForSingleObject(FFinder, INFINITE);