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

Вниз

Отключение от сети   Найти похожие ветки 

 
Lera   (2007-01-31 12:44) [0]

Здравствуйте всем, может быть есть знатоки, которые в курсе как определить из дельфи то, что машина отключена от информационной или электрической сети для записи об этом в журнал. Заранее благодарна.


 
Сергей М. ©   (2007-01-31 12:46) [1]


> как определить ... что .. машина отключена от ..электрической сети


Как мертвому определить, что он умер ?)


 
Ega23 ©   (2007-01-31 12:46) [2]

от LAN отключен, или питание на UPS перешло? Или оба варианта?


 
Ega23 ©   (2007-01-31 12:48) [3]


> Как мертвому определить, что он умер ?)
>


Есть нюансы...


 
Vlad Oshin ©   (2007-01-31 12:50) [4]


> или электрической сети

спросить упс, если он есть. Или заранее писать что выключен, передвигая по таймеру срок. При нормальном завершении стереть записать


> от информационной

Ну, что-то явно происходит... почитать на что реагирует виндовс


 
Ega23 ©   (2007-01-31 12:52) [5]


> спросить упс, если он есть. Или заранее писать что выключен,
>  передвигая по таймеру срок. При нормальном завершении стереть
> записать
>


А он сам событие на COM-порт пришлёт. Главное его словить...  :)


 
Lera   (2007-01-31 12:53) [6]

а как именно обратиться к виндоусу для проверки наличия информационной сети?


 
Sergey13 ©   (2007-01-31 12:56) [7]

> [6] Lera   (31.01.07 12:53)

А нафига тебе это все? Сиди смотри: экран погас - записала шариковой ручкой в бортовой журнал.


 
Lera   (2007-01-31 13:03) [8]

а если никого нет...надо зафиксировать событие и момент


 
Vlad Oshin ©   (2007-01-31 13:09) [9]


> А он сам событие на COM-порт пришлёт. Главное его словить.
> ..  :)

писал как то вот так

 lpSystemPowerStatus=^tPowerSt;
 tPowerSt=record
   ACLineStatus:byte;
   BatteryFlag:byte;
   BatteryLifePercent:byte;
   Reserved1:byte;
   BatteryLifeTime:Dword;
   BatteryFullLifeTime:dword;
           end;
TNtQSI = function(Ptr: Pointer): DWORD; stdcall;

var
 Form1: TForm1;
 NtQSI : TNtQSI;
 Buf   : array [1..20480] of char;
implementation

{$R *.DFM}

procedure TForm1.Button1Click(Sender: TObject);
var
hLib : DWORD;
// Buf   : array [1..20480] of char;
PS:lpSystemPowerStatus;
// ptr:pointer;
begin
memo1.Lines.Clear;
hLib := LoadLibrary("kernel32.DLL");
if hLib>0 then    begin
   @NtQSI := GetProcAddress(hLib,"GetSystemPowerStatus");
   NtQSI(@Buf);
   PS:=addr(buf);
   memo1.Lines.Add(inttostr(PS.ACLineStatus));
   memo1.Lines.Add(inttostr(PS.BatteryFlag));
   memo1.Lines.Add(inttostr(PS.BatteryLifePercent));
   memo1.Lines.Add(inttostr(PS.Reserved1));
   memo1.Lines.Add(inttostr(PS.BatteryLifeTime));
   memo1.Lines.Add(inttostr(PS.BatteryFullLifeTime));
                 end;

end;


 
Ega23 ©   (2007-01-31 13:09) [10]


> а как именно обратиться к виндоусу для проверки наличия
> информационной сети?


Пингуй что-нибудь. Как только пинг оборвался - капец.


 
Ega23 ©   (2007-01-31 13:10) [11]


> Vlad Oshin ©   (31.01.07 13:09) [9]


А где freeLibrary???   :)


 
Vlad Oshin ©   (2007-01-31 13:13) [12]

а дальше стало не интересно :)


 
Ega23 ©   (2007-01-31 13:24) [13]


> а дальше стало не интересно :)


Ну да. А потом вот и спрашивают: "Какое количество ошибок в программе можно считать приемлимым?"   :)


 
Vlad Oshin ©   (2007-01-31 15:06) [14]


> "Какое количество ошибок в программе можно считать приемлимым?
> "

ну дык, ясен перец - на сколько пользователь согласен
:)


> Lera   (31.01.07 13:03) [8]
> а если никого нет...надо зафиксировать событие и момент

об этот вопрос сломали 2 вагона копий :) и не выяснили, насколько помню.
мышь/клава? а если программа, например, не предусматривает работу с мышкой/клавой?
и т.п.

проще поставить таймер с интервалом через сколько времени считать что пользователя нет. Затем спросить его, не ушел ли он и подождать ответ столько же. ontimer- if b then никого else вопрос и b:=true
Обнулять таймер при каждом действии программы. т.е. timer1.interval:=0; предшествует любому коду. и учесть долгие циклы/расчеты, тогда и туда впихнуть.



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

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

Наверх




Память: 0.5 MB
Время: 0.042 c
15-1169710131
pasha_golub
2007-01-25 10:28
2007.02.18
Section 508 для программ


3-1164605686
Kvinta
2006-11-27 08:34
2007.02.18
DBGrid. Запомнить позицию.


15-1169799693
AntonSimenko
2007-01-26 11:21
2007.02.18
SimpleXML.pas


1-1166521793
atruhin
2006-12-19 12:49
2007.02.18
Определить отправителя при drag&drop


2-1170018465
san1
2007-01-29 00:07
2007.02.18
real в integer