1 (изменено: Аскет, 2011-06-05 09:19:28)

Тема: HTA: traffic monitor

Монитор трафика для интернет-подключения. Отображает:
         - кол-во входящего, отправленного и суммарный объём интернет-трафика;
         - текущую скорость прокачки Кб/c;
         - денежный расход (округление до 1kb);

Чтобы переместить окно программы:  1) зажать ПКМ;
                                                        2) плавно перетащить окно в нужное место.
Цена за трафик по умолчанию - 1.2 [у.е.]/mb.
Чтобы изменить стоимость мегабайта трафика -  проще и надёжнее изменить исх.код (см. стр. 102), но если же вы задумаете делать пересчёты в реальном режиме:
1) двойной клик по окну программы;
2) ввести во всплывающей подсказке новую стоимость;

Спасибо за внимание.

  <!-- Name:		Traffic_monitor.hta
	  Language:	HyperText Application
	  Author:	Аскет,	http://forum.script-coding.info
	  Description: This is...traffic monitor.
					Displays sent, received, total amount kBytes,  current speed and expense of money for internet-connection.
					Created special for GPRS-modem, but must work on other connecting (See string 99).
					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.0</TITLE>
   <HTA:APPLICATION
        ID="oHTA"
        APPLICATIONNAME="Traffic monitor v1.0"
        BORDER="NONE"
        BORDERSTYLE=""
        SCROLL="NO"
        SELECTION=NO
        CAPTION="yes"
        ICON="inetcpl.cpl"
        MAXIMIZEBUTTON="no"
        MINIMIZEBUTTON="no"
        SHOWINTASKBAR="no"
        SINGLEINSTANCE="YES"
        SYSMENU="NO"
        VEотображаетRSION="1.0"
        WINDOWSTATE="" />
 </HEAD>
 <meta author="Gorelov Alexander, June 2011">
 <style>
html, body{
   margin:0px;
   padding:0px;
   font:10;
   border-style: OUTset;
}
 </style>

   <BODY SCROLL="no" bgcolor="#88FFC4">
<!----------------------------->
<TABLE CELLSPACING="0" CELLPADDING="0"BORDER="0"WIDTH="100%" HEIGHT="100%" STYLE="FONT:11">
 <TR style="font-weight:bold">
      <TD >Всего, mb: </TD>
      <TD ALIGN="RIGHT" id=total></TD>
 </TR>
 <Tr>
      <TD>Принято:</TD>
      <TD ALIGN="RIGHT" id=Received></TD>
 </TR>
 <TR>
      <TD>Отправлено:</TD>
      <TD ALIGN="RIGHT" id=Sent></TD>
 </TR>
 <TR style="font-weight:">
      <TD>Скорость, kbps:</TD>
      <TD ALIGN="RIGHT" id=speed></TD>
 </TR>
 <TR style="font-weight:bold;color:red">
      <TD>Расход:</TD>
      <TD ALIGN="RIGHT" id=PriceField></TD>
 </TR>


</TABLE>
</style>
    <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;
         }
     }

     onLoad = window.resizeTo(120,75); window.moveTo(screen.availWidth-122, screen.availHeight-100);
</script>

<script language=VBS>
	DIM InterfaceName         'имя сетевого интерфейс
	
	 InterfaceName = "'WAN [PPP_SLIP] Interface'"			'!!!!!! YOU MAY CHOSE OTHER NAME	!!!!!


	Public price : price = 1.2					'цена за мегабайт трафика
	DIM M1 :M1 = 0
	updateInfo()


	sub updateInfo()
	
	
	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,0)
		
		M1 = PROPS.BytesTotalPersec
	next
		window.SetTimeout "updateInfo()",1000
	end sub
	
SUB document_ondblclick()
	price = Inputbox ("Стоимость мегабайта:","Traffic monitor v1.0   /by Аскет","1.2")
end sub	
</script>

<!----------------------------->
	</BODY>
</HTML>

2

Re: HTA: traffic monitor

Win7 x64 - не работает... 

Времени не хватает... :-(

3

Re: HTA: traffic monitor

Гхм..Что за ошибка (если выдает)?
Какой тип подключения, раздача случайно не через ЛВС? Писалось под GPRS, хотя WAN он и в Африке..
Обратите внимание:

строка №99 пишет:

InterfaceName = "'WAN [PPP_SLIP] Interface'"

Евген пишет:

Win7 x64

WinXP sp2. Вообще WMI штука  сугубо централизованная и стандартизированная, как следствие никаких dll-hell и подобных быть не должно.

4

Re: HTA: traffic monitor

Ничо не пишет...
вывешивает окошко и всё...
http://korosteleff.narod.ru/traff.png

Времени не хватает... :-(

5

Re: HTA: traffic monitor

Я думаю, что проблема в том, что искомый интерфейс не перечислен. Простейший скрипт ниже не вывел имя мегафоновского модема/адаптера/интерфейса, через который я сейчас в интернете:


set ifs = GetObject ("winmgmts:").ExecQuery("SELECT * FROM Win32_PerfRawData_Tcpip_NetworkInterface")
for each i in ifs
	WScript.Echo i.Name
next

Marvell Yukon 88E8059 PCI-E Gigabit Ethernet Controller
Broadcom 802.11b_g WLAN

( 2 * b ) || ! ( 2 * b )

6

Re: HTA: traffic monitor

Нужно подточить перечисление с выбором интерфейса.

IntrfaceName прописан для пчелайновского ZTE, установленного в системе.
Чтобы работало необходимо прописать имя имеющегося в системе интерфеса или сетевой карты.

Rumata пишет:

Я думаю, что проблема в том, что искомый интерфейс не перечислен. Простейший скрипт ниже не вывел имя мегафоновского модема/адаптера/интерфейса, через который я сейчас в интернете

А, вот теперь всё и проясняется.
Я даже как-то позабыл про это проприетарное недоразумение  - мы крякеры-системщики и энтузиасты от природы
1) Интерфейс модема не прописан в системе.
2) Он проприетарно работает только через сервисную программу мегафона\биллайна\мтс'а (?).
3) При попытке подключить инет через "Сетевые подключения" оно рвётся без объяснения причин уже ч-з 10-60 секунд (?).
4) Модем отторгает чужие СИМ'ки (?).

Ну чтож, селяви.

...Но всё это легко ломается и обретает облик нормального девайса. (-

В остальном промолчу, дабы не нарушать золотых правила Серого форума.

7

Re: HTA: traffic monitor

WinXP SP3 - всё работает.
Кст, а окошко только через диспетчер задач убирать?

В основе всего лежит простота.

8

Re: HTA: traffic monitor

Alt+F4.

Для наибольшего удобства и вызова окна по горячей клавише хорошо работает такая схема:
1) вывести ярлык к программе на раб. стол и задать ему гор. клавишу;
2) когда монитор скрыт за другим окном (например, за браузером), его легко вывести на передний план нажав комбинацию вызова ярлыка;
3) чтобы его закрыть - вызвать окно горячей клавишей ярлыка, а затем нажать Alt+F4.

9

Re: HTA: traffic monitor

Rumata пишет:

Я думаю, что проблема в том, что искомый интерфейс не перечислен. Простейший скрипт ниже не вывел имя мегафоновского модема/адаптера/интерфейса, через который я сейчас в интернете

Аскет пишет:

А, вот теперь всё и проясняется.
Я даже как-то позабыл про это проприетарное недоразумение  - мы крякеры-системщики и энтузиасты от природы
1) Интерфейс модема не прописан в системе.
2) Он проприетарно работает только через сервисную программу мегафона\биллайна\мтс'а (?).
3) При попытке подключить инет через "Сетевые подключения" оно рвётся без объяснения причин уже ч-з 10-60 секунд (?).
4) Модем отторгает чужие СИМ'ки (?).

1, 2, 3 - зависит от пользователя. Не являясь сторонником проприетарных сервисных программ от провайдера предпочитаю создавать соответствующие сетевые соединения. Поэтому подключиться к вышеуказанному провайдеру могу двумя способами.
4 - не имею представления.

( 2 * b ) || ! ( 2 * b )

10

Re: HTA: traffic monitor

Latest. Добавлен выбор интерфейса. Позже выложу Win32-PE версию со всеми недостающими возможностями.

<!-- 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=="Аскет, April-June 2011">
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">

   
 </HEAD>
 <style>
html, body{
   margin:0px;
   padding:0px;
   font:10;
   border-style: OUTset;
}
 </style>

   <BODY SCROLL="no" bgcolor="#88FFC4">
<!----------------------------->
<TABLE CELLSPACING="0" CELLPADDING="0"BORDER="0"WIDTH="100%" HEIGHT="100%" STYLE="FONT:11">
     <TR style="font-weight:bold">
          <TD >Всего, mb: </TD>
          <TD ALIGN="RIGHT" id=total></TD>
     </TR>
     <TR>
          <TD>Принято:</TD>
          <TD ALIGN="RIGHT" id=Received></TD>
     </TR>
     <TR>
          <TD>Отправлено:</TD>
          <TD ALIGN="RIGHT" id=Sent></TD>
     </TR>
     <TR style="font-weight:">
          <TD>Скорость, kbps:</TD>
          <TD ALIGN="RIGHT" id=speed></TD>
     </TR>
     <TR style="font-weight:bold;color:red">
          <TD>Расход:</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.0   /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>

<!----------------------------->
    </BODY>
</HTML>

11

Re: HTA: traffic monitor

Супер !

Времени не хватает... :-(

12

Re: HTA: traffic monitor

Аскет, напоминаю, что нынче Вы — Разработчик, стало быть, не забывайте пополнять Коллекцию, если сочтёте нужным.

13

Re: HTA: traffic monitor

Ога, точно, в коллекцию !

Времени не хватает... :-(

14

Re: HTA: traffic monitor

Угу. Вечерком добавлю.