Главная страница
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.056 c
4-1119610541
DelphiN!
2005-06-24 14:55
2005.08.21
Вызов процедуры основного модуля из потока


3-1120566360
DelphiN!
2005-07-05 16:26
2005.08.21
Вывод оригинальных значений столбца в таблицах


3-1121170750
Максим
2005-07-12 16:19
2005.08.21
Работа с IBUpdateSQL !


6-1115968072
Valera
2005-05-13 11:07
2005.08.21
ICMP CLIENT


14-1122893696
Andreyy
2005-08-01 14:54
2005.08.21
Посоветуйте книгу по D7 пожалуйста