Q&A

  • ^JOB_INFO_1 -> 인식문제
프린터 스풀제어에 관하여 김영대님께서 올리신 글을 찾았습니다.

그런데 에러가 나는군요...T.T

제 생각에 uses절에 뭐가 빠진거 같은데 뭐가 빠졌는지 몰겠네요...

아시는 분 글 좀 남겨 주십시요.



unit Unit1;



interface



uses

Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,

ComCtrls, winspool, Activex, StdCtrls;



type

TForm1 = class(TForm)

Button1: TButton;

private

{ Private declarations }

procedure WM_SpoolerStatus(var Msg : TWMSPOOLERSTATUS);

message WM_SPOOLERSTATUS;

public

{ Public declarations }

end;



var

Form1: TForm1;



implementation



{$R *.DFM}



procedure TForm1.WM_SpoolerStatus(var Msg : TWMSPOOLERSTATUS);

var

i : integer;

pjobinfo : ^JOB_INFO_1; <--에러 위치(Undeclared Identifire)

hprinter : Thandle;

dwneeded, dwreturned : Dword;



begin

dwneeded := 0;

dwreturned := 0;

msg.Result := 0;



if (OpenPrinter('삼성 MyLaser ML-66H', hprinter, nil) = false) then closeprinter(hprinter);

if (EnumJobs(hprinter, 0, $FFFFFFFF, 1, nil, 0, dwneeded, dwreturned) = false) then

begin

if (GetLastError() <> ERROR_INSUFFICIENT_BUFFER) then closeprinter(hprinter);

end;



GetMem(pjobinfo, dwNeeded);



if (pjobinfo = nil) then closeprinter(hprinter);



if (EnumJobs(hprinter, 0, $FFFFFFFF, 1, pjobinfo, dwneeded, dwneeded, dwreturned) = false) then begin

closeprinter(hprinter);

FreeMem(pjobinfo);

end;



if msg.jobsleft > 1 then setjob(hprinter,pjobinfo^.jobid,1,pjobinfo,1);



end;



end.

1  COMMENTS
  • Profile
    최용일 2001.08.03 21:31
    안녕하세요. 최용일입니다.



    WinSpool유닛을 추가해주세요...



    ^^ 항상 즐코하세요...



    광란자 wrote:

    > 프린터 스풀제어에 관하여 김영대님께서 올리신 글을 찾았습니다.

    > 그런데 에러가 나는군요...T.T

    > 제 생각에 uses절에 뭐가 빠진거 같은데 뭐가 빠졌는지 몰겠네요...

    > 아시는 분 글 좀 남겨 주십시요.

    >

    > unit Unit1;

    >

    > interface

    >

    > uses

    > Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,

    > ComCtrls, winspool, Activex, StdCtrls;

    >

    > type

    > TForm1 = class(TForm)

    > Button1: TButton;

    > private

    > { Private declarations }

    > procedure WM_SpoolerStatus(var Msg : TWMSPOOLERSTATUS);

    > message WM_SPOOLERSTATUS;

    > public

    > { Public declarations }

    > end;

    >

    > var

    > Form1: TForm1;

    >

    > implementation

    >

    > {$R *.DFM}

    >

    > procedure TForm1.WM_SpoolerStatus(var Msg : TWMSPOOLERSTATUS);

    > var

    > i : integer;

    > pjobinfo : ^JOB_INFO_1; <--에러 위치(Undeclared Identifire)

    > hprinter : Thandle;

    > dwneeded, dwreturned : Dword;

    >

    > begin

    > dwneeded := 0;

    > dwreturned := 0;

    > msg.Result := 0;

    >

    > if (OpenPrinter('삼성 MyLaser ML-66H', hprinter, nil) = false) then closeprinter(hprinter);

    > if (EnumJobs(hprinter, 0, $FFFFFFFF, 1, nil, 0, dwneeded, dwreturned) = false) then

    > begin

    > if (GetLastError() <> ERROR_INSUFFICIENT_BUFFER) then closeprinter(hprinter);

    > end;

    >

    > GetMem(pjobinfo, dwNeeded);

    >

    > if (pjobinfo = nil) then closeprinter(hprinter);

    >

    > if (EnumJobs(hprinter, 0, $FFFFFFFF, 1, pjobinfo, dwneeded, dwneeded, dwreturned) = false) then begin

    > closeprinter(hprinter);

    > FreeMem(pjobinfo);

    > end;

    >

    > if msg.jobsleft > 1 then setjob(hprinter,pjobinfo^.jobid,1,pjobinfo,1);

    >

    > end;

    >

    > end.