![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Отключение от сети [D7, XP]
Lera © (2007-01-31 12:44:00)Здравствуйте всем, может быть есть знатоки, которые в курсе как определить из дельфи то, что машина отключена от информационной или электрической сети для записи об этом в журнал. Заранее благодарна.
Vlad Oshin (2007-01-31 15:06:00) [1]
> "Какое количество ошибок в программе можно считать приемлимым?
> "
ну дык, ясен перец - на сколько пользователь согласен
:)
> Lera (31.01.07 13:03) [8]
> а если никого нет...надо зафиксировать событие и момент
об этот вопрос сломали 2 вагона копий :) и не выяснили, насколько помню.
мышь/клава? а если программа, например, не предусматривает работу с мышкой/клавой?
и т.п.
проще поставить таймер с интервалом через сколько времени считать что пользователя нет. Затем спросить его, не ушел ли он и подождать ответ столько же. ontimer- if b then никого else вопрос и b:=true
Обнулять таймер при каждом действии программы. т.е. timer1.interval:=0; предшествует любому коду. и учесть долгие циклы/расчеты, тогда и туда впихнуть.
Ega23 (2007-01-31 13:24:00) [2]
> а дальше стало не интересно :)
Ну да. А потом вот и спрашивают: "Какое количество ошибок в программе можно считать приемлимым?" :)
Vlad Oshin (2007-01-31 13:13:00) [3]а дальше стало не интересно :)
Ega23 (2007-01-31 13:10:00) [4]
> Vlad Oshin © (31.01.07 13:09) [9]
А где freeLibrary??? :)
Vlad Oshin (2007-01-31 13:09:00) [5]
> А он сам событие на 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:00) [6]
> а как именно обратиться к виндоусу для проверки наличия
> информационной сети?
Пингуй что-нибудь. Как только пинг оборвался - капец.
Lera (2007-01-31 13:03:00) [7]а если никого нет...надо зафиксировать событие и момент
Sergey13 (2007-01-31 12:56:00) [8]> [6] Lera (31.01.07 12:53)
А нафига тебе это все? Сиди смотри: экран погас - записала шариковой ручкой в бортовой журнал.
Lera (2007-01-31 12:53:00) [9]а как именно обратиться к виндоусу для проверки наличия информационной сети?
Ega23 (2007-01-31 12:52:00) [10]
> спросить упс, если он есть. Или заранее писать что выключен,
> передвигая по таймеру срок. При нормальном завершении стереть
> записать
>
А он сам событие на COM-порт пришлёт. Главное его словить... :)
Vlad Oshin (2007-01-31 12:50:00) [11]
> или электрической сети
спросить упс, если он есть. Или заранее писать что выключен, передвигая по таймеру срок. При нормальном завершении стереть записать
> от информационной
Ну, что-то явно происходит... почитать на что реагирует виндовс
Ega23 (2007-01-31 12:48:00) [12]
> Как мертвому определить, что он умер ?)
>
Есть нюансы...
Сергей М. (2007-01-31 12:46:00) [13]
> как определить ... что .. машина отключена от ..электрической сети
Как мертвому определить, что он умер ?)
Ega23 (2007-01-31 12:46:00) [14]от LAN отключен, или питание на UPS перешло? Или оба варианта?