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

Вниз

Работа с принтером (не только локальным, но и сетевым)   Найти похожие ветки 

 
Igor_thief   (2005-06-28 00:35) [0]

Насколько сложно получить такую инфу программно:
1. кол. напечатаных страниц
2. имя машины, с которой прислали задание на печать
3. имя напечтаного документа
4. дата/время когда он был напечатан
5. имя принтера, на котором производилась печать
6. ид задания


 
Vlad Oshin ©   (2005-06-29 08:53) [1]

не сложно

Способ 1. !!!!!
Правильно настроить аудит

2. набросок

function GetEnumeratedPrinterPorts: String;
label 1;
var
Buffer, PrinterInfo: PChar;
Flags, Count, NumInfo: DWORD;
I,j: Integer;

PrinterHandle:tHandle;
ZadachiPrintera : array [0..20] of TJobInfo2;
ByteRez,StructCount : DWORD;
Stroka : String;

procedure PriemZadanie;
var
 f:textfile;
begin
 form1.CZad:=SystemTimeToDateTime(ZadachiPrintera[j].Submitted);
 stroka:="";
 Stroka:=Stroka+" Mashine: "+ZadachiPrintera[j].pMachineName;
 Stroka:=Stroka+" User: " +ZadachiPrintera[j].pUserName;
 Stroka:=Stroka+" Driver: " +ZadachiPrintera[j].pDriverName;
 Stroka:=Stroka+" Total pages: " +IntToStr(ZadachiPrintera[j].TotalPages+ZadachiPrintera[j].PagesPrinted);
 Stroka:=Stroka+" Document: " +ZadachiPrintera[j].pDocument;
 Stroka:=Stroka+" God: " +IntToStr(ZadachiPrintera[j].Submitted.wYear);
 Stroka:=Stroka+" Mesyac: " +IntToStr(ZadachiPrintera[j].Submitted.wMonth);
 Stroka:=Stroka+" Day: " +IntToStr(ZadachiPrintera[j].Submitted.wDay);
 Stroka:=Stroka+" Hour: " +IntToStr(ZadachiPrintera[j].Submitted.wHour);
 Stroka:=Stroka+" Minute: " +IntToStr(ZadachiPrintera[j].Submitted.wMinute);
 Stroka:=Stroka+" Second: " +IntToStr(ZadachiPrintera[j].Submitted.wSecond);
 Stroka:=Stroka+" Milliseconds: " +IntToStr(ZadachiPrintera[j].Submitted.wMilliseconds);
 assignfile(f,"prnlog.txt");
 //reset(f);
 append(f);
 writeln(f,stroka);
 closefile(f);
end;

begin
Result := "";
Flags := PRINTER_ENUM_LOCAL;
Count := 0;
EnumPrinters(Flags, nil, 2, nil, 0, Count, NumInfo);
if Count = 0 then Exit;
GetMem(Buffer, Count);
try
  if not EnumPrinters(Flags, nil, 2, PByte(Buffer), Count, Count, NumInfo) then
      Exit;
  PrinterInfo := Buffer;
  stroka:="";
  try
    for I := 0 to NumInfo - 1 do
      with PPrinterInfo2(PrinterInfo)^ do
      begin
        OpenPrinter(pPrinterName,PrinterHandle,nil);
        if EnumJobs(PrinterHandle,
                    0,
                    cJobs,
                    2,
                    @ZadachiPrintera,
                    SizeOf(ZadachiPrintera),
                    ByteRez,
                    StructCount)
         then if StructCount>0
               then for j := 0 to StructCount-1 do  begin
       //???????????????????

         if (SystemTimeToDateTime(ZadachiPrintera[j].Submitted)>form1.CZad)
            then PriemZadanie;
                                                     end;

        Inc(PrinterInfo, sizeof(TPrinterInfo2));
      end;
    Result := Stroka;
  finally
      //!!!!!!!!
  end;
finally
  FreeMem(Buffer, Count);
end;
end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
timer1.Enabled:=false;
Application.PROCESSMessages;
GetEnumeratedPrinterPorts;
timer1.Enabled:=true;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  CZad:=0;
end;

end.

{
procedure Delay(ms : longint);
var
  TheTime : LongInt;
begin
  TheTime := GetTickCount + ms;

  while GetTickCount < TheTime do begin
                     SleepEX(10);
                     Applica



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

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

Наверх




Память: 0.46 MB
Время: 0.053 c
14-1122448141
nk
2005-07-27 11:09
2005.08.21
Восстановление инфы с убитых/форматированных винтов


14-1122546006
BrenD
2005-07-28 14:20
2005.08.21
Вычислить сумму


3-1121256077
CasperR
2005-07-13 16:01
2005.08.21
Интерфейсы ADO


1-1122974812
kyn66
2005-08-02 13:26
2005.08.21
Listbox с разными картинками из TImageList


14-1122619281
vidiv
2005-07-29 10:41
2005.08.21
Для чего можно использовать этот код?





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