Q&A

  • 인쇄전에 레이져프린터에 용지가 있는가를 검사?
업무 특성상 인쇄하기 전에

실제 프린터에 용지가 있는가를 검사하고 싶습니다.

프린터는 레이져 프린터입니다.



한국HP에 문의해도 방법이 없다네요.

없는 것은 아니고 모른다나..

메뉴얼을 뒤져봐도 그런 코드는 나오질 않고요...



방법이 없나요?

2  COMMENTS
  • Profile
    정지호 2000.08.23 19:37
    아래처럼 해보세요

    var

    device :array [0..cchdevicename -1 ] of char;

    driver :array [0..(max_path)] of char;

    port :array [0..32] of char;

    handle:Thandle;

    hmode:Thandle;

    CByteNeeded :integer;

    CByteUsed:integer;

    pPrinterInfo: ^Tprinterinfo2;



    begin

    handle:=-1;



    printer.printerindex:= -1;

    printer.GetPrinter(device, driver, port,hmode);



    if openprinter(device,handle,nil) = false then

    exit;



    //cByteNeeded 가져오기

    if Getprinter( Handle, 2, nil, 0, addr(CByteNeeded)) = false then

    if getlasterror() <> ERROR_INSUFFICIENT_BUFFER then

    exit;



    Getmem( pPrinterInfo,CByteneeded);

    //프린터의 정보가져오기

    if Getprinter( handle, 2, pPrinterInfo,cByteNeeded,addr(CByteUsed)) = false then

    if getlasterror() <> ERROR_INSUFFICIENT_BUFFER then

    begin

    Freemem(pPrinterInfo);

    exit;

    end;



    //pPrinterInfo 에 현재 프린터의 상태가 넘어옵니다.

    //pPrinterInfo.status에 현재 프린터의 상태값이 옵니다.

    //status값은 아래값들을 참조하시고요

    // 더자세한 사항은 win32.hlp에서 printer_info2를 참고하시면

    //될겁니다.



    //이부분에 pPrinterInfo.status를 check하는 부분이 들어가면 되겠지요

    Freemem(pPrinterInfo);

    end;





    더 간단히 구하는 방법도 있긴 있을것 같은데

    제가 아는건 여기까지네요...

    도움이 되셨기를 바랍니다.



    PRINTER_STATUS_BUSY

    PRINTER_STATUS_DOOR_OPEN

    PRINTER_STATUS_ERROR

    PRINTER_STATUS_INITIALIZING

    PRINTER_STATUS_IO_ACTIVE

    PRINTER_STATUS_MANUAL_FEED

    PRINTER_STATUS_NO_TONER

    PRINTER_STATUS_NOT_AVAILABLE

    PRINTER_STATUS_OFFLINE

    PRINTER_STATUS_OUT_OF_MEMORY

    PRINTER_STATUS_OUTPUT_BIN_FULL

    PRINTER_STATUS_PAGE_PUNT

    PRINTER_STATUS_PAPER_JAM

    PRINTER_STATUS_PAPER_OUT

    PRINTER_STATUS_PAPER_PROBLEM

    PRINTER_STATUS_PAUSED

    PRINTER_STATUS_PENDING_DELETION

    PRINTER_STATUS_PRINTING

    PRINTER_STATUS_PROCESSING

    PRINTER_STATUS_TONER_LOW

    PRINTER_STATUS_UNAVAILABLE

    PRINTER_STATUS_USER_INTERVENTION

    PRINTER_STATUS_WAITING

    PRINTER_STATUS_WARMING_UP



  • Profile
    강호규 2000.08.24 19:46
    조언 주신 내용 감사합니다.



    소스대로 해봤더니 상태값이 항상 0 이네요.

    네트웍 프린터, 로컬 프린터 모두요.

    어떤 이유에서 인지 상태 체크가 정상적으로

    되질 않고 있습니다.



    pServerName=

    pPrinterName=HP LaserJet 2100 Series PCL 6

    pShareName=

    pPortName=ADMINHPLaserJ.2

    pComment=

    pLocation=

    pSepFile=

    Status=0 <----- 정상적인 반환값이 아님(정의되지 않은 값)

    cJobs=0



    어쩌다 한번씩 "USER INTERVENTION"라고도 반환하네요.



    참고로 저는 HP LaserJet2000, HP LaserJet4050에서

    테스트 하였습니다.

    OS :win98, 2000

    델파이 5.0