Тема: HTA: Traffic Monitor
Монитор трафика для сетевого подключения с интерактивным выбором интерфейса\сетевой карты.
Отображает:
- кол-во входящего, отправленного и суммарный объём трафика;
- текущую скорость прокачки Кб/c;
- денежный расход (округление до 1kb);
Чтобы переместить окно программы: зажать ПКМ и плавно перетащить окно в нужное место. Либо с клавиатуры (считаю это намного удобнее) - зажать CTRL и перетащить окно с помощью стрелочек (Left,Right,Up,Down).
Цена за трафик по умолчанию - 1.2 [у.е.]/mb.
Чтобы изменить стоимость мегабайта трафика - проще и надёжнее изменить исх.код (см. стр. 102), но если же вы захотите делать пересчёты в реальном режиме:
1) двойной клик по окну программы;
2) ввести во всплывающей подсказке новую стоимость;
<!-- Name: Traffic_monitor.hta
Language: HyperText Application
Author: Аскет, true-script@ya.ru
Description: This is traffic monitor.
Displays sent, received, total amount kBytes, current speed and expense of money for internet-connection.
Based on WMI (this is a such complex and higher technology, than winAPI)
Using: For moving window - press 'Right mouse button' ("ПКМ") and fluent move of window.
For correction the price for 1 mb traffic - 1) Dblclick on program-window
2) input your price in popup-prompt.
-->
<HTML>
<HEAD>
<TITLE>Traffic monitor v1.1</TITLE>
<HTA:APPLICATION
ID="oHTA"
APPLICATIONNAME="Traffic monitor"
BORDER="NONE"
BORDERSTYLE=""
SCROLL="NO"
SELECTION=NO
CAPTION="yes"
ICON=""
MAXIMIZEBUTTON="no"
MINIMIZEBUTTON="no"
SHOWINTASKBAR="no"
SINGLEINSTANCE="YES"
SYSMENU="NO"
VERSION="1.1"
WINDOWSTATE="" />
<script>
window.resizeTo(120,100); window.moveTo(screen.availWidth-122, screen.availHeight-120);
</script>
<meta NAME=author VALUE=="Gorelov Alexander, Jule 2011">
</HEAD>
<style>
html, body{
margin:0px;
padding:0px;
font:10;
border-style: OUTset;
}
</style>
<BODY SCROLL="no" bgcolor="#88FFC4" onkeydown='moveMe()'>
<!----------------------------->
<TABLE CELLSPACING="0" CELLPADDING="0"BORDER="0"WIDTH="100%" HEIGHT="100%" STYLE="FONT:11">
<TR style="font-weight:bold">
<TD >Total, mb: </TD>
<TD ALIGN="RIGHT" id=total></TD>
</TR>
<TR>
<TD>Received, mb:</TD>
<TD ALIGN="RIGHT" id=Received></TD>
</TR>
<TR>
<TD>Sent, mb:</TD>
<TD ALIGN="RIGHT" id=Sent></TD>
</TR>
<TR style="font-weight:">
<TD>Speed, kbps:</TD>
<TD ALIGN="RIGHT" id=speed></TD>
</TR>
<TR style="font-weight:bold;color:red">
<TD>Money:</TD>
<TD ALIGN="RIGHT" id=PriceField></TD>
<TR>
<TD colspan=2>
<SELECT ID=CONNECTIONS onChange="changeConnection()" style='width:100%;HEIGHT:1; background:#DCF6ED;font=7pt "Ms sarif"'>
</SELECT>
</TD>
</TR>
</TABLE>
<script type="text/javascript">
var x0, y0;
document.onmousemove=function () {
if ((event.button!=0)&&(event.button!=1)){
// if (event.button!=0){
window.moveBy(event.x-x0, event.y-y0);
return false;
}
document.body.style.cursor="auto";
}
document.onmousedown=function () {
if (event.button!=1){
x0=event.x; y0=event.y;
}
}
</script>
<script language=VBS>
Public InterfaceName 'имя сетевого интерфейс
Public price : price = 1.2 'цена за мегабайт трафика
DIM M1 :M1 = 0
updateInfo()
SUB window_onload
call getConnection()
InterfaceName = CONNECTIONS.options(0).value
END SUB
'---------- ----------
SUB updateInfo()
on error resume next
for each PROPS in ( GetObject ("WINMGMTS:").ExecQuery _
("SELECT BytesTotalPersec,BytesReceivedPersec,BytesSentPersec FROM Win32_PerfRawData_Tcpip_NetworkInterface WHERE NAME=" & "'" & InterfaceName & "'" ))
total.Innertext = round(PROPS.BytesTotalPersec / 1048576,3)
Received.Innertext = round(PROPS.BytesReceivedPersec / 1048576 ,3)
Sent.InnerTEXT = round(PROPS.BytesSentPersec / 1048576,3)
PriceField.InnerTEXT= round((PROPS.BytesTotalPersec / 1048576) * price ,2) & ""
'---------- расчёт скорости ----------
speed.InnerText = round((PROPS.BytesTotalPersec-M1)/1024,2)
M1 = PROPS.BytesTotalPersec
next
window.SetTimeout "updateInfo()",1000
END SUB
'---------- ----------
SUB document_ondblclick()
price = Inputbox ("Стоимость мегабайта:","Traffic monitor v1.1 /by Аскет",price )
END SUB
'---------- [ЗАПОЛНЕНИЕ СПИСКА ПОДКЛЮЧЕНИЙ] ----------
SUB getConnection()
for each conn in ( GetObject ("WINMGMTS:").ExecQuery _
("SELECT * FROM Win32_PerfRawData_Tcpip_NetworkInterface"))
a=a & vbcr & conn.name
set newopt = document.createElement("OPTION")
newopt.text=conn.name
newopt.value=conn.name
CONNECTIONS.options.add newopt
next
END SUB
'---------- [ИЗМЕНЕНО ПОДКЛЮЧЕНИЕ] ----------
SUB changeConnection()
if CONNECTIONS.Selectedindex=-1 then exit sub
InterfaceName = CONNECTIONS.options(CONNECTIONS.SelectedIndex).value
END SUB
</script>
<script>
// to move window - press CTRL and by keys of the cursor
function moveMe() {
if (event.ctrlKey) {
if (event.keyCode==37) { var top=window.screenTop;window.moveTo(window.screenLeft-10,top);}
else {
if (event.keyCode==39) { var top=window.screenTop;window.moveTo(window.screenLeft+10,top);};
else {
if (event.keyCode==38) { var left=window.screenLeft;window.moveTo(left,window.screenTop-10);};
else {
if (event.keyCode==40) { var left=window.screenLeft;window.moveTo(left,window.screenTop+10);};
}}}}}
</script>
<!----------------------------->
</BODY>
</HTML>