Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.08.21;
Скачать: CL | DM;

Вниз

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

 
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 вся ветка

Текущий архив: 2005.08.21;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.05 c
4-1119763511
Гость2
2005-06-26 09:25
2005.08.21
Как недоаустить повторного открытия моего приложения?


8-1107270985
SFproG
2005-02-01 18:16
2005.08.21
программный MIDI синтезатор


6-1115955780
Delphi forever
2005-05-13 07:43
2005.08.21
Прием и отправка почты (с прикрепленными файлами)


1-1122983493
DeVid
2005-08-02 15:51
2005.08.21
Как отловить событие нажатия Ctrl+Alt+<буква>?


3-1120865175
igorek2003
2005-07-09 03:26
2005.08.21
Справочник и Jpeg