Главная страница
    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.135 c
2-1204363054
makz
2008-03-01 12:17
2008.03.30
Запрос


15-1203476951
Slider007
2008-02-20 06:09
2008.03.30
С днем рождения ! 20 февраля 2008 среда


2-1204119039
kiberg
2008-02-27 16:30
2008.03.30
количество элементов в перечислении


2-1204321453
alexnmsk
2008-03-01 00:44
2008.03.30
Компонент на основе TActionList


2-1204322758
ajsek
2008-03-01 01:05
2008.03.30
webbrowser открывался на новых вкладках





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