2010-01-11 5 views
3

대상 프린터에서 대기열을 가져 와서 작업 목록을 살펴 봅니다. 작업이 IsSpooling이 아닌 경우 인쇄 작업을보기 위해 JobStream을 읽으려고합니다.PrintSystemJobInfo.JobStream이 손상 되었습니까?

지금까지 JobStream은 항상 null입니다. 제 인쇄물은 DOS 응용 프로그램에서 나오며 순수 텍스트 여야합니다. 열대 우림을 안전하게 프린터를 일시 중지했지만 여전히 스풀 된 데이터를 가져올 수 있어야합니다. 맞습니까?

뭔가가 누락되었거나 PrintSystemJobInfo.JobStream이 손상 되었습니까?

+0

해결 방법을 찾지 못했지만 게시 할 때 게시합니다. – rozon

답변

2

이 값은 거의 항상 null입니다. 이 포럼 게시물을 참조하십시오 : http://www.vbforums.com/showthread.php?t=549634

실제 이진 JobStream을 가장 좋은 방법은 "C : \ Windows \ System32 \ spool \ PRINTERS"디렉토리에서 스풀 파일 (.SPL)을 읽는 것입니다. 인쇄하기 전에 작업을 일시 중지하거나 링크 된 포럼 게시물에 언급 된대로 "인쇄 작업 유지"설정을 지정할 수 있습니다. 이 데이터는 스풀 파일을 작성하는 드라이버와 인쇄를 시작하는 응용 프로그램에 따라 다양한 형식으로 제공됩니다. 이 스트림에서 데이터를 추출하는 것은 프린터 드라이버에서 프린터 드라이버로 변경되므로 사소한 작업이 아닙니다. 하나의 알려진 단일 프린터로 작업하는 경우 성공할 수 있습니다.

+0

Win32 API로 인쇄 작업을 읽을 때도'JobStream'이 null 인 것처럼 보입니다 (프린터가 양방향이거나 스풀러의 대기열에 아직 전송되지 않았기 때문에). 그것을 읽으려면 ['OpenPrinter ("PrinterName, Job JobID")'] (http://msdn.microsoft.com/en-us/library/windows/desktop/dd162751(v=vs.85).aspx)를 사용하십시오. , 그런 다음 [ReadPrinter'] (http://msdn.microsoft.com/en-us/library/windows/desktop/dd162895 (v = vs.85) .aspx)를 클릭하십시오. – GSerg

관련 문제