Вверх ↑
Ответов: 3889
Рейтинг: 362
#1: 2011-09-29 11:23:20 ЛС | профиль | цитата
Можно создать комплексное приложение, высчитывающее вероятность пропадания связи на основе сразу всех перечисленных мною факторов и принимающее решение об отключении ПК:

1. пинг до файлообменников пропадал дольше чем на 5 секунд
2. пинг до DNGгейта провайдера внутри VPN (PPPoE) пропал дольше чем на 2 секунды
3. средний трафик за несколько минут не превысил среднего "фонового" ("паразитного")
4. за последние десять минут появлялись окна, похожие на окна переподключения к VPN провайдера
5. в статусной строкеокне качалки ошибка либо сигнал о неактивности
6. внешний сетевой адрес сменился (идея tom-it)
7. ...
------------ Дoбавленo в 10.32:
user_asm писал(а):
эмулятор элемента вижу справа от элемента Пинг

Обновите HiAsm ([svn]CounterEx.pas[/svn]), а пока элемент замените на Counter, вот так:

Add(MainForm,11938328,238,182)
{
Width=256
Height=95
Caption="Ping"
BorderStyle=4
Point(onPaint)
link(onPaint,8940946:doReset,[])
}
Add(Ping,5899746,413,350)
{
Name=""
TimeOut=5000
link(onFind,12486062:doNext,[])
}
Add(TrayIcon,12666879,385,189)
{
Hint="Shutdown by ping"
FormHook=0
ShowWORemoveIcon=0
Point(doFormHook)
link(onClick,13211627:doEvent,[])
link(onDblClick,12666879:doShow,[(429,202)(429,176)(369,176)(369,195)])
}
Add(Switch,8940946,315,196)
{
Default=0
link(onSwitch,12666879:doHide,[])
}
Add(IndexToChanel,13211627,441,189)
{
link(onEvent2,10209496:doPopupHere,[])
}
Add(PopupMenuEx,10209496,497,196)
{
Menu=#4:Exit|
GutterLineOn=1
Bitmaps=[]
link(MenuItemIdx,11938328:doClose,[(541,202)(541,154)(231,154)(231,209)])
}
Add(Memo,11469301,343,287)
{
Left=440
Top=280
Align=5
Strings=#7:8.8.8.8|5:ya.ru|6:vk.com|
}
Add(ArrayEnum,398083,357,350)
{
link(onItem,5899746:doPing,[])
link(Array,11469301:Array,[])
}
Add(Counter,12486062,497,350)
{
}
Add(Hub,12183034,294,343)
{
OutCount=3
link(onEvent1,12486062:doReset,[(473,349)(473,370)])
link(onEvent2,398083:doEnum,[])
link(onEvent3,3032632:doCompare,[(334,363)(334,433)])
}
Add(If_else,3032632,497,427)
{
Type=2
Op2=Integer(0)
link(onFalse,9870050:doPowerOff,[])
link(Op1,12486062:Count,[])
}
Add(Timer,7916946,231,343)
{
Interval=30000
OverCall=1
link(onTimer,12183034:doEvent1,[])
}
Add(ExitWindows,9870050,560,413)
{
QuickForce=0
Point(doPowerOff)
}


------------ Дoбавленo в 11.23:
user_asm, набросок детектора длительной неактивности сети (отслеживается выделенный в списке интерфейс):


Add(MainForm,5943187,182,182)
{
Position=1
link(onCreate,16392187:doEnum,[])
}
Add(NetInterfaces,16392187,238,196)
{
link(onEnum,6661811:doSeparateMT,[])
}
Add(NetInterfaceInfo,4459567,455,203)
{
Point(InOctets)
link(onReadInfo,10262091:doTimer,[])
link(Index,14840748:Var1,[(461,185)])
}
Add(ListBox,16000831,350,196)
{
Left=290
Top=165
Align=5
Point(Index)
Point(doSelectString)
link(onClick,6069459:doTimer,[])
}
Add(MT_MultiData,6661811,294,196)
{
From=1
Count=1
link(onData1,16000831:doAdd,[])
}
Add(Timer,10262091,504,203)
{
Interval=60000
Enable=1
AutoStop=1
link(onTimer,12030026:doReadinfo,[])
}
Add(NetInterfaceInfo,12030026,553,203)
{
Point(InOctets)
link(onReadInfo,13504248:doCalc,[(600,209)(600,302)(520,302)(520,265)])
link(Index,14840748:Var3,[(559,185)])
}
Add(MathParse,13504248,546,259)
{
MathStr="(10000 > (%2 - %1))"
link(onResult,6216943:doCase,[])
link(X1,4459567:InOctets,[(552,247)(461,247)])
link(X2,12030026:InOctets,[])
}
Add(Timer,6069459,399,203)
{
Interval=80000
Enable=1
link(onTimer,4459567:doReadinfo,[])
}
Add(Case,6216943,609,259)
{
Value=Integer(1)
link(onTrue,8421598:doMessage,[])
}
Add(Message,8421598,665,266)
{
Message="Давно ничего не качаем, пора выключаться!"
}
Add(LineBreak,7633000,371,259)
{
Caption="CurrentNIC"
Type=1
link(Data,16000831:Index,[])
Primary=[9583598,140,-105]
}
Add(GetDataEx,14840748,511,180)
{
link(Data,9583598:Var,[])
}
карма: 1

0