안녕하세요.
아래의 함수를 실행하면
var
PrinterHandle : THandle;
Jobinfo2 : JOB_INFO_2;
PcbNeeded : DWord;
PcReturned : DWord;
begin
OpenPrinter(PChar(PrinterName), PrinterHandle, 0);
EnumJobs(PrinterHandle, 0, 10, 2, Jobinfo2 , SizeOf(Jobinfo2), PcbNeeded, PcReturned);
end;
jobinfo2.status 의 값들은 다음값들의 조합으로 리턴되더군요
JOB_STATUS_PAUSED = $00000001;
{$EXTERNALSYM JOB_STATUS_ERROR}
JOB_STATUS_ERROR = $00000002;
{$EXTERNALSYM JOB_STATUS_DELETING}
JOB_STATUS_DELETING = $00000004;
{$EXTERNALSYM JOB_STATUS_SPOOLING}
JOB_STATUS_SPOOLING = $00000008;
{$EXTERNALSYM JOB_STATUS_PRINTING}
JOB_STATUS_PRINTING = $00000010;
{$EXTERNALSYM JOB_STATUS_OFFLINE}
JOB_STATUS_OFFLINE = $00000020;
{$EXTERNALSYM JOB_STATUS_PAPEROUT}
JOB_STATUS_PAPEROUT = $00000040;
{$EXTERNALSYM JOB_STATUS_PRINTED}
JOB_STATUS_PRINTED = $00000080;
{$EXTERNALSYM JOB_STATUS_DELETED}
JOB_STATUS_DELETED = $00000100;
{$EXTERNALSYM JOB_STATUS_BLOCKED_DEVQ}
JOB_STATUS_BLOCKED_DEVQ = $00000200;
{$EXTERNALSYM JOB_STATUS_USER_INTERVENTION}
JOB_STATUS_USER_INTERVENTION = $00000400;
{$EXTERNALSYM JOB_STATUS_RESTART}
JOB_STATUS_RESTART = $00000800;
즉, jobinfo2.status 값이 $12 값이 리턴되면 JOB_STATUS_ERROR 와 JOB_STATUS_PRINTING 의 조합인데, $12 값으로 위의 두 값을 분리하는 방법을 잘 모르겠습니다.
물론 위의 경우 이 외에 여러가지 형태로 조합해서 값이 들어오던데요...
각각의 어떤 값들이 조합되었는지 다시 분리하는 법을 알고 싶습니다.
아시는 분은 부탁드립니다.
감사합니다.
1 And 1 = 1
3 and 1 = 1
3 and 2 = 2
이런것 알고 있죠..
즉,
if
jobinfo2.status and JOB_STATUS_ERROR = JOB_STATUS_ERROR
then
begin
end;
이와 같이 하면 될거에요..