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

Вниз

Мониторинг сетевых принтеров.   Найти похожие ветки 

 
Максимм   (2007-07-30 11:14) [0]

Необходимо написать программу для мониторинга сетевых прнтеров. Для реализации использую следующую функцию:
EnumJobs(hPrinter, 0, Length(aJobs), 1, @aJobs, cbBuf, pcbNeeded, pcReturned); Проблемма возникла в том что она некоректно возвращает количество рачпечаннх страниц. Как это можно исправить?? Или может есть какой нибудь другой способ???


 
Сергей М. ©   (2007-07-30 11:19) [1]


> она некоректно возвращает количество рачпечаннх страниц


И в чем заключается "некорректность" ?


 
Максимм   (2007-07-30 11:21) [2]

Практически всегда возвращает 1 или 0. То же самое с количеством копий.


 
Сергей М. ©   (2007-07-30 11:25) [3]


> Практически всегда возвращает 1 или 0


А сколько на самом деле д.б. ?


 
Максимм   (2007-07-30 11:26) [4]

Что значит сколько должно быть ??? Количество страниц всегда разное ...


 
Сергей М. ©   (2007-07-30 11:29) [5]

Ну тогда показывай свой код ...


 
Максимм   (2007-07-30 11:36) [6]

type
 JOB_INFO_1_ARRAY = Array of JOB_INFO_1;

Function GetSpoolerJobs(sPrinterName : String) : JOB_INFO_1_ARRAY;
var
 i : Integer;
 hPrinter   : THandle;
 bResult    : Boolean;
 cbBuf      : DWORD;
 pcbNeeded  : DWORD;
 pcReturned : DWORD;
 aJobs      : Array[0..99] of JOB_INFO_1;
begin
   cbBuf := 256;
   OpenPrinter(PChar(sPrinterName), hPrinter, Nil);
   EnumJobs(hPrinter, 0, Length(aJobs), 1, @aJobs, cbBuf, pcbNeeded, pcReturned);
   ClosePrinter(hPrinter);

   For i := 0 to pcReturned - 1 do
     Begin
       SetLength(Result, Length(Result) + 1);
       Result[Length(Result) - 1] := aJobs[i];
     End;
End;

procedure TForm1.Timer1Timer(Sender: TObject);
Var
 i, ii, K, p : Integer;
 aJobs : JOB_INFO_1_ARRAY;
Begin
 Try
   aJobs := GetSpoolerJobs("ПРИНТЕР");
   For i := 0 To Length(aJobs) - 1 Do
     Begin
       S := IntToStr(aJobs[i].JobId) + #9 +
            TimeToStr(Time)          + #9 +
            aJobs[i].pPrinterName    + #9 +
            aJobs[i].pMachineName    + #9 +
            aJobs[i].pUserName       + #9 +
            aJobs[i].pDocument       + #9 +
            IntToStr(aJobs[i].TotalPages);
     
       // то самое значение (aJobs[i].TotalPages)

       // Массив заданий
       If Z1[aJobs[i].JobId] = 0 then
         Begin
            // записывает данные в файл
            Z1[aJobs[i].JobId] := 1;
         End;
     End;
 Except End;
End;


 
Сергей М. ©   (2007-07-30 11:57) [7]


> // то самое значение (aJobs[i].TotalPages)


Что значит "то самое" ?

Ты же задал вопрос о кол-ве распечатанных страниц, а не об полном кол-ве страниц !

И на то в структуре есть поле PagesPrinted, которое ни сном ни духом не фигурирует в твоем коде.


 
Rouse_ ©   (2007-07-30 11:57) [8]

Кол-во расчечатанных страниц вообще-то PagesPrinted...
Это раз, а во вторых нужно тщательней курить MSDN...
To determine the number of print jobs in the printer queue, call the GetPrinter function with the Level parameter set to 2


 
Максимм   (2007-07-30 12:03) [9]

я вас удивлю наверное, но значение PagesPrinted всегда равно "0" ....
не задавл бы таких вопросов если бв не попробавл .....


 
Сергей М. ©   (2007-07-30 12:07) [10]


> Максимм   (30.07.07 12:03) [9]


Что, и для Level = 2 тоже равно нулю ?!


 
Rouse_ ©   (2007-07-30 12:34) [11]


> но значение PagesPrinted всегда равно "0" ....

Исесно... я ж говрю - читай внимательней MSDN...

PagesPrinted
Specifies the number of pages that have printed. This value may be zero if the print job does not contain page delimiting information.


 
Anatoly Podgoretsky ©   (2007-07-30 19:24) [12]

При том для большинства!
Кроме того я могу задать количество копий на принтере, тогда вообще швах.



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

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

Наверх





Память: 0.47 MB
Время: 0.044 c
3-1193909601
Ega23
2007-11-01 12:33
2008.03.30
Помогите с запросом, уже всю баку сломал


15-1202826005
arreke
2008-02-12 17:20
2008.03.30
AnimationEffect


2-1204610265
wasko
2008-03-04 08:57
2008.03.30
TFileStream


2-1204281119
q1485
2008-02-29 13:31
2008.03.30
Запрос в потоке


15-1202877339
Xmen
2008-02-13 07:35
2008.03.30
Выбор книги.





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский