unit Main;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, ComCtrls, winspool, Activex;
type
TForm1 = class(TForm)
procedure FormCreate(Sender: TObject);
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;
hprinter : Thandle;
dwneeded, dwreturned : Dword;
begin
dwneeded := 0;
dwreturned := 0;
msg.Result := 0;
if (OpenPrinter('프린터 이름', hprinter, nil) = false) then;
if (EnumJobs(hprinter, 0, $FFFFFFFF, 1, nil, 0, dwneeded,
dwreturned) = false) then
begin
if (GetLastError() <> ERROR_INSUFFICIENT_BUFFER) then
begin
closeprinter(hprinter);
end;
end;
GetMem(pjobinfo, dwNeeded);
if (pjobinfo = nil) then
begin
closeprinter(hprinter);
end;
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;
*참고....
setjob(hprinter,pjobinfo^.jobid,1,pjobinfo,1); - 프린트 일시정지
setjob(hprinter,pjobinfo^.jobid,1,pjobinfo,2); - 계속
setjob(hprinter,pjobinfo^.jobid,1,pjobinfo,3); - 취소
setjob(hprinter,pjobinfo^.jobid,1,pjobinfo,4); - 재시작
setjob(hprinter,pjobinfo^.jobid,1,pjobinfo,5); - 삭제....
프린트 스풀러를 맘대로 제어할 수 있답니다....
제가 짠 프로그램을 다 올리려다가 이부분만 남기다 보니 이대로 하면 문제가 있을겁니다... 하지만 응용하시면 많이 활용할 수 있을겁니다...
그리구 궁금한점 있으시면 게시판에 다시 올려 주세여....
그럼 수고하세여...
하시는일 잘 되시길 바랍니다