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

Вниз

Включён ли "принтер по умолчанию"?   Найти похожие ветки 

 
Andriy Tysh ©   (2004-07-30 12:10) [0]

Написал функцию, которая должна была проверять включён ли принтер по умолчанию. Но вышла только проверка каждого. А нужно именно "по умолчанию". Что не так? Может кто подбросит свою разработку.

...
uses ..., WinSpool, ...;
...

function PrinterIsOnOff(): Boolean;
var
 Buffer, PrinterInfo: PChar;
 Flags, Count, NumInfo: DWORD;
 I: Integer;
 Level: Byte;
begin
 Result:=True;
 begin
   try
     Flags := PRINTER_ENUM_CONNECTIONS or PRINTER_ENUM_LOCAL;
     Level := 2;
     Count := 0;
     EnumPrinters(Flags, nil, Level, nil, 0, Count, NumInfo);
     //Якщо вощє нема!
     if Count = 0 then
     begin
       Result:=False;
       Exit;
     end;
     GetMem(Buffer, Count);
     try
       if not EnumPrinters(Flags, nil, Level, PByte(Buffer), Count, Count, NumInfo) then
       begin
         Result:=False;
         Exit;            
       end;
       PrinterInfo := Buffer;
       for I := 0 to NumInfo - 1 do
       begin

           with PPrinterInfo2(PrinterInfo)^ do
           begin
             if (Attributes OR (
                       //PRINTER_ATTRIBUTE_QUEUED or  //1     //0
                       //PRINTER_ATTRIBUTE_DIRECT or  //2     //1
                       //PRINTER_ATTRIBUTE_DEFAULT or  //4    //2
                       //PRINTER_ATTRIBUTE_SHARED or  //8     //3
                       //PRINTER_ATTRIBUTE_NETWORK //or  //16   //4
                       //PRINTER_ATTRIBUTE_HIDDEN //or  //32    //5
                       //PRINTER_ATTRIBUTE_LOCAL or  //64     //6
                       //PRINTER_ATTRIBUTE_ENABLE_DEVQ //or  //128   //7
                       //PRINTER_ATTRIBUTE_KEEPPRINTEDJOBS or //256   //8
                       PRINTER_ATTRIBUTE_DO_COMPLETE_FIRST or //512    //9
                       PRINTER_ATTRIBUTE_WORK_OFFLINE //or //1024    //10  
                       //PRINTER_ATTRIBUTE_ENABLE_BIDI //or  //2048     //11
                       //PRINTER_ATTRIBUTE_RAW_ONLY  //4096         //12
                       )) = Attributes then
             begin
               Result:=False;
               Application.MessageBox(PChar("Проверте включён ли принтер!"),
                   PChar(US_MSG_ERROR), MB_ICONERROR);
             end;
             Inc(PrinterInfo, sizeof(TPrinterInfo2));
           end;
       end;
     finally
       FreeMem(Buffer, Count);
     end;
   except
     raise;
   end;
 end;
end;


 
clickmaker ©   (2004-07-30 12:56) [1]

PRINTER_ATTRIBUTE_DEFAULT ?


 
Andriy Tysh ©   (2004-07-30 14:24) [2]

хм..
Пробовал, ибо значение DEFAULT очень близко "по-умолчанию", не работает.
Может проблема в том, что принтера сетевые?
Может кто альтернативный метод предложит?


 
Andriy Tysh ©   (2004-07-31 10:12) [3]

Спасибо всем за активное обсуждение вопроса. Как следствие - я сам нашёл решение.
И вообще меня удивляет, что модератор меня сюда бросил. Так как я когда-то писал уже здесь и меня выбросили с АПИ. :-))))



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

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

Наверх




Память: 0.48 MB
Время: 0.033 c
14-1092983199
Kerk
2004-08-20 10:26
2004.09.12
Расшифруй киборга! Останови вторжение!


1-1093422580
happyandry
2004-08-25 12:29
2004.09.12
Дельфи - > Excel (свойства ячеек)


11-1080548358
Boris Mouradov
2004-03-29 12:19
2004.09.12
MHFontDialog - initfont


14-1093409534
rok
2004-08-25 08:52
2004.09.12
Что означает Sys Rq на клавише Print Screen?


6-1088938583
matsic
2004-07-04 14:56
2004.09.12
IP и территория