Add(MainForm,5943187,175,217)
{
Caption="Idle network monitor"
Position=1
link(onCreate,16392187:doEnum,[])
}
Add(NetInterfaces,16392187,224,231)
{
link(onEnum,6661811:doSeparateMT,[])
}
Add(NetInterfaceInfo,4459567,273,315)
{
Point(InOctets)
link(onReadInfo,10262091:doTimer,[])
link(Index,14840748:Var1,[(279,297)])
}
Add(ListBox,16000831,343,231)
{
Left=290
Top=165
Align=5
Point(Index)
Point(Handle)
Point(doSelectString)
}
Add(MT_MultiData,6661811,273,231)
{
From=1
Count=1
link(onData1,7210523:doEvent1,[])
}
Add(Timer,10262091,357,315)
{
Interval=60000
Enable=1
AutoStop=1
link(onTimer,12030026:doReadinfo,[])
}
Add(NetInterfaceInfo,12030026,406,315)
{
Point(InOctets)
link(onReadInfo,13504248:doCalc,[(567,321)(567,451)(373,451)(373,398)])
link(Index,14840748:Var3,[(412,297)])
}
Add(MathParse,13504248,399,392)
{
DataCount=3
MathStr="(%3 > abs(%2 - %1))"
ResultType=0
link(onResult,6216943:doCase,[])
link(X1,4459567:InOctets,[(405,359)(279,359)])
link(X2,12030026:InOctets,[])
link(X3,9789699:Var,[])
}
Add(Timer,6069459,217,315)
{
Interval=80000
Enable=1
link(onTimer,4459567:doReadinfo,[])
}
Add(Case,6216943,462,392)
{
Value=Integer(1)
link(onTrue,8421598:doMessage,[])
}
Add(Message,8421598,518,399)
{
Message="Давно ничего не качаем, пора выключаться!"
}
Add(GetDataEx,14840748,364,292)
{
link(Data,16000831:Index,[])
}
Add(Label,15152330,168,91)
{
Left=215
Top=70
Align=2
Caption="Выключить, если в минуту скачано менее:"
}
Add(Edit,8359534,168,140)
{
Left=230
Top=115
Align=2
Text="1048576"
DataType=2
Point(doReadOnly)
link(onChange,4738503:In,[])
}
Add(LineBreak,2779618,168,189)
{
Caption="BytesPerMinute"
Type=1
link(Data,8359534:Text,[])
Primary=[9789699,245,175]
}
Add(Button,16249654,63,308)
{
Left=125
Top=270
Align=4
Caption="Начать слежение"
Data=Integer(1)
Point(doCaption)
link(onClick,12314934:doSwitch,[])
}
Add(Switch,12314934,126,308)
{
DataOn=String(Остановить слежение)
DataOff=String(Начать слежение)
Point(onOn)
Point(onOff)
link(onSwitch,16249654:doCaption,[(172,314)(172,292)(51,292)(51,314)])
link(onOn,6069459:doTimer,[])
link(onOff,11605083:doEvent1,[])
}
Add(Hub,11605083,182,322)
{
link(onEvent1,6069459:doStop,[])
link(onEvent2,10262091:doStop,[(342,335)])
}
Add(LineBreak,4203879,28,343)
{
Caption="StopWatch"
link(Out,12314934:doReset,[(111,349)(111,321)])
Primary=[4738503,182,-203]
}
Add(Hub,7210523,315,231)
{
link(onEvent1,16000831:doAdd,[])
link(onEvent2,16000831:doSelectString,[(336,244)(336,279)])
}
Add(Label,10030723,217,91)
{
Left=215
Top=70
Align=2
Caption="БАЙТ через сетевой интерфейс:"
}
Add(ExitWindows,15859970,518,357)
{
QuickForce=0
Point(doPowerOff)
}
Схема обновлена, добавлен трюк, обходящий серьёзный недостаток компонента NetInfo (выдачу объёма принятых байт в Integer). Без этого есть ненулевой шанс ложного срабатывания авто выключения при превышении объёмов в 2 Гб и 4 Гб (и далее кратно 2 Гб) ровно между двумя замерами (в течении минуты).