Модераторы: Poseidon, Snowy, bems, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Не ловится message 
:(
    Опции темы
Rodman
Дата 22.1.2008, 19:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


CIO
****


Профиль
Группа: Участник
Сообщений: 6144
Регистрация: 7.5.2006
Где: Ukraine ⇛ Kyiv ci ty

Репутация: 7
Всего: 122



Дароф

Мне необходимо, чтобы при добавлении задания в спулер печати срабатывала моя процедура, которая собирает о нем (задании) информацию. Процедура готова, нашел код с использованием message, подогнал под себя, но он не работает. Подскажите, как сделать так, чтобы процедура срабатывала при сообщении от спулера принтера. Прилагаю исходник. Заранее спасибо.
P.S. Есть способ сохранить распечатываемый файл (печатает винда)?
Код

function GetSpoolerJobs(PrinterName:string;hPrinter:THandle;bResult:boolean): JOB_INFO_1_ARRAY;
var                                              //процедура, собирающая информацию о задании в спулере печати
  i: Integer;
  cbBuf: DWORD;
  pcbNeeded: DWORD;                              
  pcReturned: DWORD;
  aJobs: array[0..99] of JOB_INFO_1;
  f:textfile;
begin
  cbBuf := 1000;
  bResult := EnumJobs(hPrinter, 0, Length(aJobs), 1, @aJobs, cbBuf, pcbNeeded,pcReturned);
  if bResult then
  begin
    for i := 0 to pcReturned - 1 do
    begin
      if aJobs[i].pDocument <> nil then
      begin
        SetLength(Result, Length(Result) + 1);
        Result[Length(Result) - 1] := aJobs[i];
      end;
    end;
  end;
 end;

procedure MyClass.FindJobs(var msg:TWMSPOOLERSTATUS;); //процедура, которая должна сработать 
var f,t:textfile;                                                                           //на message от спулера печати
    aJobs:JOB_INFO_1_array;
    PrinterName:string;
    Result: Boolean;
begin
  AssignFile(print,'printer.dat');
  reset(print);
  readln(f,PrinterName);
  aJobs := GetSpoolerJobs(PrinterName,hPrinter,Result);
  AssignFile(t,{aJobs[1].pDocument}'1.TXT');
  rewrite(t);
  write(t,'Çàäàíèå îòïðàâëåíî ñ ìàøèíû ',aJobs[1].pMachineName,' ïîëüçîâåòåëåì',aJobs[1].pUserName);
  writeln(t,'Òèï äàííûõ - ',aJobs[1].pDatatype);
  writeln(t,aJobs[1].TotalPages,' âñåãî ñòðàíèö â ýòîì äîêóìåíòå');
  closefile(t);
end;


Сенкс

Это сообщение отредактировал(а) Rodman - 22.1.2008, 19:09
PM MAIL WWW Skype GTalk YIM MSN   Вверх
MetalFan
Дата 22.1.2008, 19:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Аццкий Сотона
****


Профиль
Группа: Комодератор
Сообщений: 3815
Регистрация: 2.10.2006
Где: Moscow

Репутация: 62
Всего: 128



Цитата(Rodman @  22.1.2008,  19:08 Найти цитируемый пост)
//процедура, которая должна сработать 
//на message от спулера печати

с чего бы это?
класс - наследник от TWinControl?

а вообще - ошибка в 17 строке.




--------------------
There are always someone smarter than you...
PM MAIL   Вверх
Rodman
Дата 25.1.2008, 19:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


CIO
****


Профиль
Группа: Участник
Сообщений: 6144
Регистрация: 7.5.2006
Где: Ukraine ⇛ Kyiv ci ty

Репутация: 7
Всего: 122



Я не дописал часть кода
Код

  MyClass = class
  private
     procedure FindJobs(var msg:TWMSPOOLERSTATUS);message WM_SPOOLERSTATUS;
  public
end;
......
procedure MyClass.FindJobs(var msg:TWMSPOOLERSTATUS;);
var f,t:textfile;
    aJobs:JOB_INFO_1_array;
    PrinterName:string;
    Result: Boolean;
begin
  AssignFile(print,'printer.dat');
  reset(print);
  readln(f,PrinterName);
  aJobs := GetSpoolerJobs(PrinterName,hPrinter,Result);
  AssignFile(t,aJobs[1].pDocument);
  rewrite(t);
  write(t,'Задание отправлено с машины ',aJobs[1].pMachineName,' пользоветелем',aJobs[1].pUserName);
  writeln(t,'Тип данных - ',aJobs[1].pDatatype);
  writeln(t,aJobs[1].TotalPages,' всего страниц в этом документе');
  closefile(t);
end;

PM MAIL WWW Skype GTalk YIM MSN   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0443 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.