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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> вывод на печать, Как узнать состояние принтера ? 
:(
    Опции темы
neat
  Дата 25.1.2006, 13:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 22
Регистрация: 20.12.2005

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



Здравствуйте все!
Для печати есть простой код
Код

procedure TfmMain.PrintBlank;
var
   Device: array[0..255] of char;
   Driver: array[0..255] of char;
   Port: array[0..255] of char;
   hDMode: THandle;
   PDMode: PDEVMODE;
begin
   Printer.PrinterIndex := Printer.PrinterIndex;
   Printer.GetPrinter(Device, Driver, Port, hDMode);
   if hDMode <> 0 then begin
       pDMode := GlobalLock(hDMode);
       if pDMode <> nil then begin
           pDMode^.dmPaperSize := DMPAPER_A5;
           pdMode^.dmOrientation := DMORIENT_PORTRAIT;
           GlobalUnlock(hDMode);
       end;
   end;

   With DatModule.tbl_BLANK do
   With Printer do
   if PrintDialog1.Execute then begin
       BeginDoc;
       Canvas.Font.Size := 12;
       Canvas.TextOut(2200, 610,  FieldByName('Pravo').AsString);
         .
         .
       EndDoc;
end;

Если принтер выключен или нет бумаги программа зависает. Думал драйвер принтера выдаёт такие сообщения, оказалось, что нет. Или я что-то не дописал. Как узнать включен ли принтер, есть ли в нём бумага? FAQ сайта смотрел, но либо нет там ничего по моему вопросу, либо недопонял. Помогите пожалуйста.
PM MAIL   Вверх
MIX55
Дата 25.1.2006, 14:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


много работы
*


Профиль
Группа: Awaiting Authorisation
Сообщений: 208
Регистрация: 23.10.2005
Где: Здесь

Репутация: нет
Всего: 4



помоему чтобы узнать состояние принтера надо использовать FindNextPrinterChangeNotification
а вот код работоспособность не проверял.могут быть ошибки
Код

stts:string;
    pBuf:PChar;
    adwData:DWORD;


FindNextPrinterChangeNotification(ThreadHandle, EventID, {nil}@PrinterNotifyOptions,Pointer(pPrnNotifyInfo));

if Assigned(pPrnNotifyInfo) then
begin
  if PPrnNotifyInfo^.Count > 0 then
    for i:=0 to PPrnNotifyInfo^.Count-1 do
    begin
     
      pBuf:=PPrnNotifyInfo^.aData[i].NotifyData.Data.pBuf;
      adwData:=PPrnNotifyInfo^.aData[i].NotifyData.adwData[0];
     
      if PPrnNotifyInfo^.aData[i].wType = JOB_NOTIFY_TYPE then
      begin
        stts:=stts+'JobID:'+IntToStr(PPrnNotifyInfo^.aData[i].Id);
        case PPrnNotifyInfo^.aData[i].Field of
          JOB_NOTIFY_FIELD_PRINTER_NAME  : stts:=stts+'; '+pBuf;
          ...........
          JOB_NOTIFY_FIELD_SUBMITTED      : stts:=stts+'; '+TimeToStr(SystemTimeToDateTime(SystemTime(PPrnNotifyInfo^.aData[i].NotifyData.Data.pBuf^))); 
          JOB_NOTIFY_FIELD_TOTAL_PAGES    : stts:=stts+'; Pages : '+IntToStr(adwData);
        end;
      end;
    end;
end;

Добавлено @ 14:05
подробнее здесь http://msdn.microsoft.com/library/default....ntspol_0tym.asp
--------------------
Hарод, а как в дельфи писать паскалевские проги....?*********************************************Жизнь слишком коротка, чтобы писать на Assembler'e
PM MAIL ICQ   Вверх
neat
Дата 26.1.2006, 06:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 22
Регистрация: 20.12.2005

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



Спасибо, MIX55. Попробую разобраться.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: WinAPI и системное программирование"
Snowybartram
MetalFanbems
PoseidonRrader
Riply

Запрещено:

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

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

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

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

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


 




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


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

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