Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Система";
Текущий архив: 2002.06.27;
Скачать: [xml.tar.bz2];

Вниз

Учёт количества напечатанных страниц.   Найти похожие ветки 

 
Gurban   (2002-03-25 08:23) [0]

Приветствую всех!
Возник такой вопрос. Есть лазерный принтер, есть работники которые хотят много печатать и нет программы которая будет считать кто же потратил весь тонер в картридже. Помогите пожалуйста как можно осуществить учёт напечатанных страниц.
Откуда можно выдернуть данные о заданиях посланных на печать?
Заранее благодарю.


 
alexadvanser   (2002-03-25 09:39) [1]

На сайте freeware.ru есть такая прога.
Только не помню как называется, поищи в поиске, что-то типа учет печати, страниц, принтер...


 
Gurban   (2002-03-25 10:19) [2]

Хотелось бы самому, интересен сам процесс работы таких программ.


 
Wizard   (2002-03-25 11:04) [3]

Если я не ошибаюсь, то это можно сделать с помощью перехватчика IShellExecuteHook, но я могу и ошибаться....


 
Dzmitry   (2002-03-25 14:52) [4]

сам занимаюсь этим делом
знаю что надо искать гдето в
FindFirstPrinterChangeNotification, FindNextPrinterChangeNotification, EnumJobs.
через EnumJobs можно узнать что послано на спулер,
но вот не могу разобраться с изменением состояния принтера, если кто может дать пример перехвата состояния, буду благодарен...


 
Gurban   (2002-03-25 15:58) [5]

Но эти функции работают только под NT. А надо бы под всеми виндами.


 
Dzmitry   (2002-03-25 18:15) [6]

всё, понял почему ничего не работает,
буду искать дальше...


 
dzmitry   (2002-03-28 17:59) [7]

кто ищет тот всегда найдёт...
почти три дня поисков привели меня к одному результату...
оказалось достаточно отловить мессагу WM_SPOOLERSTATUS, которая появляется при добавлении и убирания заданий в очередь, затем апи-функцию EnumJobs узнаём что в спулере...
информация выужена из хелпа по апи под вижуал-бейсик 1997 года...
странно то что этот вопрос периодически появляется и абсолютно никто конкретно не ответил...


 
Gurban   (2002-03-30 11:37) [8]

Поздравляю с находкой.
Если не сложно не мог бы ты выслать отрывок кода, где идёт перехват сообщения и вытаскиваются данные из спулера.
Заранее благодарен.


 
Teapot   (2002-03-31 17:08) [9]

dzmitry © (28.03.02 17:59)
Меня также очень интересует эта проблема.
Буду весьма признателен, если и мне вышлешь фрагмент кода.
Спасибо!


 
dzmitry   (2002-04-01 18:21) [10]

//ушло в нетмейл
//Gurban c (30.03.02 11:37)
//Teapot c (31.03.02 17:08)

// я уже думал это никого более не заинтересует...
// в Win32.hlp это есть, но попробуй найти то, не зная какими словами
// это выразить

// вот мой тестовый кусок кода

[skip]
uses [skip]
{!} WinSpool, Printers {!};
type
TForm1 = class(TForm)
[skip]
private
{!}procedure WMSpooler(var Msg: TMsg); message WM_SPOOLERSTATUS;{!}
end;
[skip]
procedure TForm1.WMSpooler(var Msg: TMsg);
var
Handle: THandle;
pcbNeeded, pcReturned: DWORD;
JobInfo: array[0..9] of _JOB_INFO_1;
i: integer;
F: TextFile;
s: string;
begin
if Msg.wParam<>1 then Exit;
// что это сообщение вызвало Msg.wParam
// 0 - удаление из очереди
// 1 - добавить в очередь
// узнать какие принтеры есть Printer.GetPrinters и убрать оттуда порт
// я пока у себя жестко принтер прописал...
OpenPrinter("Oki ML 321 Elite (dzmitry_)",Handle,nil);
if EnumJobs(Handle,0,succ(High(JobInfo)),1,@JobInfo,SizeOf(JobInfo),pcbNeeded,pcReturned) then
for i:=0 to pred(pcReturned) do
begin
AssignFile(F,"printer.log"); Append(F);
with JobInfo[i] do
WriteLn(F,pPrinterName,"[skip]document:",pDocument,"[skip] pages:",{!}TotalPages{!},"[skip]");
CloseFile(F);
end;
ClosePrinter(Handle);
end;
end.

// по вопросу данной дискуссии надо смотреть JobInfo[i].TotalPages
// если есть пару ошибок извините... код пока не прилизан...
// и проверте как работает в NT, на одной тачке пошло,
// на другой нет



Страницы: 1 вся ветка

Форум: "Система";
Текущий архив: 2002.06.27;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.011 c
14-88990
Lord Warlock
2002-05-24 15:03
2002.06.27
Интерфейс и девушка!


3-88704
Slym
2002-06-03 07:11
2002.06.27
Имеются 3 связанные по цепочке по MasterSource таблицы


1-88792
TRUP
2002-06-16 13:31
2002.06.27
Как скрыть курсор?


3-88764
Ulugbek
2002-06-05 08:51
2002.06.27
Не могу понять где ощибка


3-88776
qqqq
2002-06-05 14:33
2002.06.27
transaction log





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский