Форум: "Начинающим";
Текущий архив: 2007.02.18;
Скачать: [xml.tar.bz2];
ВнизОтключение от сети Найти похожие ветки
← →
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;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.043 c