Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
кол-во заданий в очереди принтера
|
|||
|---|---|---|---|
|
#18+
Печатаю очень много, очередь переполняется в сетевом принтере, зависает. приходится перезапускать заново. Устанавливать таймер после, например, 20 отчетов на минуту не ризонно потому что я не знаю загруженность сети (особенно во время всеобщей выдачи отчетов). Как узнать из фокса (или присоединить к нему что-то) количество заданий в очереди сетевого принтера? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.09.2003, 12:10 |
|
||
|
кол-во заданий в очереди принтера
|
|||
|---|---|---|---|
|
#18+
Имхо нужно копать и юзать winspool.dll. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.09.2003, 13:57 |
|
||
|
кол-во заданий в очереди принтера
|
|||
|---|---|---|---|
|
#18+
Используется API-функция GetPrinter с соответствующими параметрами. Подробный пример по ссылке ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.09.2003, 18:26 |
|
||
|
кол-во заданий в очереди принтера
|
|||
|---|---|---|---|
|
#18+
LOCAL hPrn,needed,numitems,PrintInfo hPrn = 0 needed=0 numitems=0 *ON ERROR ?"error",ERROR(),MESSAGE(),MESSAGE(1) ON ERROR #DEFINE JOB_STATUS_READY 0x0000 #DEFINE JOB_STATUS_PAUSED 0x0001 #DEFINE JOB_STATUS_ERROR 0x0002 #DEFINE JOB_STATUS_DELETING 0x0004 #DEFINE JOB_STATUS_SPOOLING 0x0008 #DEFINE JOB_STATUS_PRINTING 0x0010 #DEFINE JOB_STATUS_OFFLINE 0x0020 #DEFINE JOB_STATUS_PAPEROUT 0x0040 #DEFINE JOB_STATUS_PRINTED 0x0080 #DEFINE JOB_STATUS_DELETED 0x0100 #DEFINE JOB_STATUS_BLOCKED_DEVQ 0x0200 #DEFINE JOB_STATUS_USER_INTERVENTION 0x0400 #DEFINE DEF_PRIORITY 1 #DEFINE MIN_PRIORITY 1 #DEFINE MAX_PRIORITY 99 #DEFINE OFF_SET 64 DECLARE OpenPrinter IN winspool.drv ; STRING PrintName,; LONG @ hPrinter,; STRING PrintDefault DECLARE INTEGER CloseHandle IN kernel32; INTEGER hObject DECLARE RtlMoveMemory IN kernel32 AS CopyMemory; STRING @ Destination,; INTEGER SOURCE,; INTEGER nLength DECLARE INTEGER GetProcessHeap IN kernel32 DECLARE INTEGER HeapFree IN kernel32; INTEGER hHeap,; INTEGER dwFlags,; INTEGER lpMem DECLARE INTEGER HeapAlloc IN kernel32; INTEGER hHeap,; INTEGER dwFlags,; INTEGER dwBytes DECLARE INTEGER lstrlen IN kernel32.DLL; STRING lpString DECLARE INTEGER EnumPrinters IN winspool.drv; INTEGER Flags,; INTEGER NAME,; INTEGER LEVEL,; STRING @ pPrinterEnum,; INTEGER cbBuf,; INTEGER @ pcbNeeded,; INTEGER @ pcReturned DECLARE INTEGER EnumJobs IN winspool.drv; INTEGER hPrinter,; INTEGER FirstJob,; INTEGER NoJobs,; INTEGER Lvl,; INTEGER pJob,; INTEGER cbBuf,; INTEGER @ pcbNeeded,; INTEGER @ pcReturned DECLARE INTEGER GetLastError IN kernel32 lcPrnName = GETPRINTER() retval=OpenPrinter(lcPrnName , @hPrn, NULL) IF !retval IF retval=0 ?"Can not open printer", GetLastError() RETURN ENDIF ENDIF needed=0 numitems = 0 retval = EnumJobs (hPrn, 0, 100, 1, PrintInfo, 0, @needed, @numitems) IF needed=0 ? "Queue is empty" RETURN ENDIF SET TEXTMERGE TO c:\printqueue.txt SET TEXTMERGE ON NOSHOW TempBuff=HeapAlloc(GetProcessHeap(),0,needed) lnNeeded=needed retval=EnumJobs(hPrn,0,127,1,TempBuff,needed,@needed,@numitems) \print jobs <<numitems>> \------------------------------------------- lpResult = REPLI (CHR(0), lnNeeded) retval= CopyMemory (@lpResult, TempBuff, lnNeeded) FOR i=0 TO numitems-1 \Job id <<buf2dword (SUBSTR(lpResult,i*OFF_SET+ 1,4))>> \Printer name <<getStr (buf2dword (SUBSTR(lpResult, i*OFF_SET+5,4)))>> \Print Server name <<getStr (buf2dword (SUBSTR(lpResult, i*OFF_SET+9,4)))>> \User name <<getStr (buf2dword (SUBSTR(lpResult, i*OFF_SET+13,4)))>> \Document <<getStr (buf2dword (SUBSTR(lpResult, i*OFF_SET+17,4)))>> \Data type <<getStr (buf2dword (SUBSTR(lpResult, i*OFF_SET+21,4)))>> \Job status <<getStr (buf2dword (SUBSTR(lpResult, i*OFF_SET+25,4)))>> \Status <<buf2dword (SUBSTR(lpResult, i*OFF_SET+29,4))>> \Priority <<buf2dword (SUBSTR(lpResult, i*OFF_SET+33,4))>> \Position job in queue<<buf2dword (SUBSTR(lpResult, i*OFF_SET+37,4))>> \Total pages <<buf2dword (SUBSTR(lpResult, i*OFF_SET+41,4))>> \Pagfs printed <<buf2dword (SUBSTR(lpResult, i*OFF_SET+45,4))>> \Date <<DATE(buf2word(SUBSTR(lpResult,i*OFF_SET+49,2)),buf2word(SUBSTR(lpResult,i*OFF_SET+51,2)),buf2word(SUBSTR(lpResult,i*OFF_SET+55,2)))>> \day of week <<buf2word(SUBSTR(lpResult,i*OFF_SET+53,2))>> \time <<buf2word(SUBSTR(lpResult,i*OFF_SET+57,2))>>: \\<<buf2word(SUBSTR(lpResult,i*OFF_SET+59,2))>>: \\<<buf2word(SUBSTR(lpResult,i*OFF_SET+61,2))>>: \\<<buf2word(SUBSTR(lpResult,i*OFF_SET+63,2))>> \------------------------------------------- NEXT =FCLOSE(_TEXT) =CloseHandle(hPrn) MODIFY FILE c:\printqueue.txt RETURN FUNCTION buf2dword (lcBuffer) RETURN ASC(SUBSTR(lcBuffer, 1,1)) + ; BITLSHIFT(ASC(SUBSTR(lcBuffer, 2,1)), 8) +; BITLSHIFT(ASC(SUBSTR(lcBuffer, 3,1)), 16) +; BITLSHIFT(ASC(SUBSTR(lcBuffer, 4,1)), 24) FUNCTION num2dword (lnValue) #DEFINE m0 256 #DEFINE m1 65536 #DEFINE m2 16777216 LOCAL b0, b1, b2, b3 b3 = INT(lnValue/m2) b2 = INT((lnValue - b3*m2)/m1) b1 = INT((lnValue - b3*m2 - b2*m1)/m0) b0 = MOD(lnValue, m0) RETURN CHR(b0)+CHR(b1)+CHR(b2)+CHR(b3) FUNCTION buf2word (lcBuffer) RETURN ASC(SUBSTR(lcBuffer, 1,1)) + ; ASC(SUBSTR(lcBuffer, 2,1)) * 256 FUNCTION getStr (lnAddr) LOCAL lcBuffer lcBuffer = REPLI(CHR(0), 128) = CopyMemory (@lcBuffer, lnAddr, LEN(lcBuffer)) IF AT(CHR(0), lcBuffer) <> 0 lcBuffer = SUBSTR(lcBuffer, 1, AT(CHR(0), lcBuffer)-1) ENDIF RETURN lcBuffer FUNCTION _systemtime (lcBuffer) wYear = buf2word (SUBSTR(lcBuffer, 1, 2)) wMonth = buf2word (SUBSTR(lcBuffer, 3, 2)) wDay = buf2word (SUBSTR(lcBuffer, 7, 2)) wHour = buf2word (SUBSTR(lcBuffer, 9, 2)) wMinute = buf2word (SUBSTR(lcBuffer, 11, 2)) wSecond = buf2word (SUBSTR(lcBuffer, 13, 2)) lcStoredSet = SET ("DATE") SET DATE TO MDY lcDate = STRTRAN (STR(wMonth,2) + "/" + STR(wDay,2) +; "/" + STR(wYear,4), " ","0") lcTime = STRTRAN (STR(wHour,2) + ":" + STR(wMinute,2) +; ":" + STR(wSecond,2), " ","0") ltResult = CTOT (lcDate + " " + lcTime) SET DATE TO &lcStoredSet RETURN ltResult ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.09.2003, 23:26 |
|
||
|
|

start [/forum/topic.php?fid=41&fpage=413&tid=1597911]: |
0ms |
get settings: |
8ms |
get forum list: |
17ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
25ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
40ms |
get tp. blocked users: |
1ms |
| others: | 254ms |
| total: | 360ms |

| 0 / 0 |
