Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как определить что сетевой принтер включен?


Страницы:   1 2 3

Agrh ©   (2008-09-30 10:09:00) 

Подскажите, pls, как определить что сетевой принтер включен, зная его наименование?


Vlad Oshin   (2008-09-30 16:27:00) [1]

с учетом

> Anatoly Podgoretsky ©   (30.09.08 16:24) [50]
> > Городской Шаман  (30.09.2008 16:10:46)  [46]


и особенно Flags:= PRINTER_ENUM_LOCAL; переправить


Vlad Oshin   (2008-09-30 16:25:00) [2]

нашел. даавноо писал, если нужно, вообщем

unit Unit1;

interface

uses
 Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
 StdCtrls, winspool, ExtCtrls;

type
 TForm1 = class(TForm)

   Timer1: TTimer;

   procedure Timer1Timer(Sender: TObject);
   procedure FormCreate(Sender: TObject);

 private
   { Private declarations }
 public
  CZad:Double;
{ Public declarations }
 end;

var
 Form1: TForm1;

implementation

{$R *.DFM}

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.


Anatoly Podgoretsky   (2008-09-30 16:24:00) [3]

> Городской Шаман  (30.09.2008 16:10:46)  [46]

Ты принтера с СОМ интерфейсом видел, при том задействованы только одна линия передачи и земля?
Это просто как самый наглядный пример.
Вот другой крайний случай. Принт-сервер, есть информация о доступности, есть рам диск на множество заданий, будет даже получен ответ, что документ распечатан, но лежит он на диске и отключение питания теряет все документы в нем.
Третий вариант, не думаю, что с принтером работают напрямую, задание помещается в очередь и ответ, что все ОК, дальше не печатая обнуляют очередь заданий.
И таких вариантов много больше, чем я в состоянии себе представить, хотя за свою жизнь, каких только принтеров не видел.


Anatoly Podgoretsky   (2008-09-30 16:20:00) [4]

> Vlad Oshin  (30.09.2008 15:45:43)  [43]

Ну сегодня мне принесли 4 шоколадки, а кофе предлагают, если я захожу в гости, не важно по делу или так.
Важно правильно процесс настроить.


Anatoly Podgoretsky   (2008-09-30 16:19:00) [5]

> Vlad Oshin  (30.09.2008 15:45:43)  [43]

Вот именно, что включение это не проблема.


Anatoly Podgoretsky   (2008-09-30 16:18:00) [6]

> Agrh  (30.09.2008 14:52:40)  [40]

Если нет работы для админа, то о чем речь, тут вообще сам бог велел решать проблемы самостоятельно, особенно административные, а не технические.
У меня ни одна старушка этого не спрашивает, они вполне адекватные пользователи.
Да все посты полезные, это ты не можешь понять, что в общем это не возможно, а частные способы решаются для частных драйверов и определенных моделей принтеров.


Городской Шаман   (2008-09-30 16:10:00) [7]

EnumPrinters
PRINTER_INFO_2
Status
Specifies the printer status. This member can be any reasonable combination of the following values.

PRINTER_STATUS_OFFLINE


Городской Шаман   (2008-09-30 16:00:00) [8]

А она работает безропотно,
Огоньки на пульте обтекаемом,
Ну а нам-то, нам-то среди роботов,
Нам что делать, людям неприкаянным?!
А. Галич


Сергей М.   (2008-09-30 15:56:00) [9]


> Многие компьютеры имеют в БИОС функцию включения компьютера
> по появлению питания


А даже если такой ф-ции нет, то наверняка есть Wake-On-LAN, со всеми втекающими и вытекающими.
А дальше полный простор для совсем несложного творчества)
Но автор упорно не хочет это видеть, ему оч хочется ткнуть бухов носом в факт невключенности принт-сервера)


Vlad Oshin   (2008-09-30 15:45:00) [10]


> Anatoly Podgoretsky ©   (30.09.08 15:25) [42]

да это понятно, сам настраиваю на 8-55 включаться с пн-пт.
Пришел - все включено, почта скачана, делфя запущена, работай.
Ранеше делал по звонку(модем подключал), типа к работе подходишь, позвонил себе, пока доходишь - все включается


> нафига выключать принтер, ведь все равно он не выключается,
>  а только делает вид

вот это не у всех, думаю.. Хотя тебе(это римское ты :)) виднее.


> У меня бухгалтера не только принтер включают, но и сами
> заправляют бумагу

ну тут слов нет, построил.. :)
А то ругаться: программист-админ-дурак. В нужное русло надо энергию тратить. Пусть бухи еще кофе программерам-админам таскают :)


Anatoly Podgoretsky   (2008-09-30 15:25:00) [11]

> Vlad Oshin  (30.09.2008 14:29:39)  [39]

Многие компьютеры имеют в БИОС функцию включения компьютера по появлению питания, ну дальше вывод сам сделаешь.
Насчет принтера конечно сложнее, но такой вопрос, а нафига выключать принтер, ведь все равно он не выключается, а только делает вид.
Ну и как назначить одну главной по общежитию.
У меня бухгалтера не только принтер включают, но и сами заправляют бумагу и меняют картридж с тонером, я их подальше посылаю, вежливо, но им понятно куда.


Сергей М.   (2008-09-30 14:59:00) [12]


> о чем это говорит?


Это говорит о том, что проблема не решаема - "дыры" в секвенции "номеров" все равно будут.


Agrh   (2008-09-30 14:52:00) [13]


> Anatoly Podgoretsky

Есть некоторые отличия знаешь ли между корпорацией и небольшой организацией. Тут как то просто нет работы для одного админа, к примеру.
Тут нет отделов, нет служб ...
А с БД работает всего 7 компов и за 5-ю из них сидят фактически обычные рабочие после ПТУ, которые спрашивают как комп выключать, не кнопочкой ли ресет.

> Сергей М. ©   (30.09.08 13:19) [32]
> Структуру и логику БД тоже ты разрабатывал ?

К сожалению, ТЗ на БД не давалось сразу и полностью...На тот момент идея с триггерами казалась вполне хорошей.

PS: из 40 постов всего 3-4 полезных. Интересно, о чем это говорит?


Vlad Oshin   (2008-09-30 14:29:00) [14]


> Anatoly Podgoretsky ©

навалился с высоты опыта :)

Знаю я этих бухов, предложение такое: Завязать им включение компа и принтера на включение чайника. Все равно пока не попьют чаю работать не начинают.


Сергей М.   (2008-09-30 14:16:00) [15]


> Anatoly Podgoretsky ©   (30.09.08 14:08) [37]
>
>


> это тоже не научно


Зато довольно легко реализуемо, даже для эникейщика


Anatoly Podgoretsky   (2008-09-30 14:08:00) [16]


> Все же повторюсь - что мешает сосредоточиться не автоматизации
> включения/выключения компа, выполняющего ныне ф-ции принт-
> сервера ?

Нафиг, это тоже не научно, включение просто вносится в обязаности одного из соотрудников и его замещающего.
Осталось только с базой разобраться, почему у них там так.


Правильный$Вася   (2008-09-30 14:03:00) [17]


> Anatoly Podgoretsky ©   (30.09.08 13:58) [33]

дык, и я о том
а ты - "бумажки, надписи"...


Anatoly Podgoretsky   (2008-09-30 14:03:00) [18]

> Agrh  (30.09.2008 13:11:31)  [31]

Так у вас еще и с БД бардак, да как же вы живете.
А по вопросу, твоя задача не имеет абсолютного решения, слишком мало ты видел принтеров и озабочен защитой своего места.


Anatoly Podgoretsky   (2008-09-30 14:00:00) [19]

> Agrh  (30.09.2008 12:11:25)  [25]

Ты не админ и программист - ты дурак, вместо того что бы наладить раз и навсегда, кто чем заниматься, тебе выгоднее бегать по другим комнатам, но в условиях капиталистического общества вроде даже как понятно, защищаешь свое место.
Проблема не техническая, а административная, то есть ты занимаешься не своим делом.


Anatoly Podgoretsky   (2008-09-30 13:58:00) [20]

> Правильный$Вася  (30.09.2008 12:07:24)  [24]

В корпорациях, где все поставлено на научную основу, ничего подобного делать не требуется, это отчисляется автоматически при любом обращение к админу. Расходы ложатся на того, кто заказывает услугу, а доходы на службу, которой идут отчисление. И не возникает никаких проблем, кому зря деньги платят.


Страницы:   1 2 3

Наверх

Титульная страница Поиск, карта сайта Написать письмо