6794 / 2816 / 527
Регистрация: 24.04.2011
Сообщений: 5,308
Записей в блоге: 10
1

Индикатор сетевой активности

09.08.2013, 21:49. Показов 2796. Ответов 35
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
В современных версиях Винды из системы пропала такая замечательная функция, как индикатор сетевой активности. Кто забыл, или не застал WinXP, такая иконка в трее ( где часики) в виде двух маленьких мигающих мониторов, показывающих отправку или получение данных по сети.
Попытался восстановить эту несправедливость, дополнил окном с графиком трафика в реальном времени с фиксацией пиковых значений отдельно на прием и передачу. За основу были взяты исходники моего дяди, так что можно сказать, что программа написана в соавторстве. Программа управляется всплывающим меню. Совместимость программы

Индикатор сетевой активности

Программа при размере всего ~50 КБ не требует установки, настройки программы сохраняются в файле настроек, рядом с программой, доступа к реестру не требуется.
Индикатор сетевой активности


Сама программа, работоспособна сразу после распаковки.
В перспективе ожидается ведение программой лог файла, для анализа трафика в течении любого времени.
Вложения
Тип файла: zip netindact.ZIP (47.4 Кб, 54 просмотров)
2
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
09.08.2013, 21:49
Ответы с готовыми решениями:

Индикатор сетевой активности
Доброго времени суток, Уважаемые Форумчане. Я тут идейкой не большой загорелся... Хотел у Вас...

Индикатор сетевой активности windows vista
Не проблема, а скорее вопрос. Стал замечать, что время от времени (обычно когда перестаю...

Индикатор активности HDD
Когда я вставляю любой диск в дисковод загорается индикатор на HDD и долго горит и всё зависает чё...

Постоянно активен индикатор активности рядом с указателем мыши
Всем привет, после очередного запуска ноутбука рядом с указателем мыши с интервалом в 3-5 секунд...

35
2901 / 1732 / 206
Регистрация: 28.10.2011
Сообщений: 6,459
Записей в блоге: 6
09.08.2013, 21:57 2
Почему при клике по "уменьшить" и "увеличить" теряется содержимое графика?

Не по теме:

Цитата Сообщение от Pro_grammer Посмотреть сообщение
Кто забыл, или не застал WinXP, такая иконка в трее ( где часики) в виде двух маленьких мигающих мониторов, показывающих отправку или получение данных по сети.
У меня XP, но ничего подобного в трее нет.
Оно и понятно, ведь в винде не настроено PPPoE подключение, а инет идет с модема через LAN.

0
6794 / 2816 / 527
Регистрация: 24.04.2011
Сообщений: 5,308
Записей в блоге: 10
09.08.2013, 22:34  [ТС] 3
Цитата Сообщение от locm Посмотреть сообщение
а инет идет с модема через LAN.
У кого с модема, у кого с роутера или прямо с кабеля - разве есть разница, в комп всё равно в LAN?
Вызови свойства соединения и поставь галку "При подключении вывести значок в области уведомлений".
0
Охотница на ведьм
313 / 96 / 8
Регистрация: 26.11.2011
Сообщений: 2,783
Записей в блоге: 4
10.08.2013, 02:51 4
Скачала, запустила, проверила.
Можете в след. версии добавить: "сворачивание в трей"?

Добавлено через 9 минут
Извиняюсь...нашла...
Другое предложение: запуск приложение вместе с системой
0
6794 / 2816 / 527
Регистрация: 24.04.2011
Сообщений: 5,308
Записей в блоге: 10
10.08.2013, 07:12  [ТС] 5
Цитата Сообщение от Vedma Посмотреть сообщение
запуск приложение вместе с системой
Думаю будет действительно полезно - сделаю!
0
Заблокирован
10.08.2013, 07:13 6
Цитата Сообщение от locm Посмотреть сообщение
Почему при клике по "уменьшить" и "увеличить" теряется содержимое графика?
Тоже самое.
0
Почетный модератор
Эксперт по компьютерным сетямЭксперт Windows
28040 / 15773 / 982
Регистрация: 15.09.2009
Сообщений: 67,752
Записей в блоге: 78
10.08.2013, 08:16 7
да, писать начинает по новой...
радует что не требует установки, дотнетов и прочего...
респект. тестирую сейчас из под юзера бесправного, коим на рабочем компе являюсь... (да, я на работе)
0
Эксперт С++
4982 / 3089 / 456
Регистрация: 10.11.2010
Сообщений: 11,165
Записей в блоге: 10
10.08.2013, 10:31 8
Мне кажется действия кнопок "+" и "-" надо поменять местами. Привычно что кнопка "+" должна приближать, а не удалять.
0
6794 / 2816 / 527
Регистрация: 24.04.2011
Сообщений: 5,308
Записей в блоге: 10
10.08.2013, 10:57  [ТС] 9
Цитата Сообщение от castaway Посмотреть сообщение
действия кнопок "+" и "-" надо поменять местами
Я сомневался по этому поводу
Спасибо, исправлю.
Цитата Сообщение от locm Посмотреть сообщение
по "уменьшить" и "увеличить" теряется содержимое графика?
Сам график реализован на основе готового компонента, но если что то можно сделать, то исправлю.

Добавлено через 3 минуты
Цитата Сообщение от magirus Посмотреть сообщение
тестирую сейчас из под юзера бесправного
У вас не 8-ка? Нет проблем с сохранением настроек? А то она как то не очень любит, когда бесправная программа пишет файлы на диск.
Я тестировал программу в папке "Мои документы", там проблем нет.
0
Почетный модератор
Эксперт по компьютерным сетямЭксперт Windows
28040 / 15773 / 982
Регистрация: 15.09.2009
Сообщений: 67,752
Записей в блоге: 78
10.08.2013, 11:14 10
ХР. корпоративная.
0
10229 / 6607 / 498
Регистрация: 28.12.2010
Сообщений: 21,159
Записей в блоге: 1
10.08.2013, 12:07 11
...xp разных видов home, pro sp2/3, под гостем и админом, полет нормальный.

1- хорошо бы организовать вызов и сворачивание окна графика по одинарному клику левой кнопы мыши по иконке в трее
2- само окно визуализации с кнопкой закрытия, дополнительными лейблами скорости видится избыточным, достаточно просто полупрозрачного или непрозрачного графика, а всю информацию по скорости поместить туда же, на график
3- при запуске утилиты окно появляется сразу же, но ведь предполагается работа в свернутом, не мозолящим глаз пользователю, виде
4- выбор в меню "спрятать-показать окно" при первом запуске не срабатывает, нет отработки состояния окна ...при втором клике уже правильно отрабатывает
5- и наверно уже из просто предложений - реализовать возможность отрисовки сетевой активности входящего и исходящего трафика прямо в трее - в значке:
Название: Безымянный.PNG
Просмотров: 132

Размер: 37.1 Кб
Кликните здесь для просмотра всего текста
Подозреваю, что пишите под Пуриком, но на всяк дам сам алгоритм такой отрисовки у меня в терминах Delphi, но на WinAPI (так что должно быть без разницы):
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
//индикатор сети-
procedure traygraph(ch:thandle;u1,u2:real;c1,c2,fon:tcolor;hint:shortstring);
var //no: TNotifyIconData;
    Hicon1: HIcon;
    //
    IconSizeX,IconSizeY,x,y:integer;
    maxi,maxo:real;
    AndMask : TBitmap;
    XOrMask : TBitmap;
    IconInfo: TIconInfo;
    Icon: TIcon;
begin
 //рисунок
 IconSizeX:= GetSystemMetrics(SM_CXICON);
 IconSizeY:= GetSystemMetrics(SM_CYICON);
 //Create "And" mask
 andMask:= TBitmap.Create;
 AndMask.Monochrome:= true;
 AndMask.Width := IconSizeX;
 AndMask.Height:= IconSizeY;
 //Draw "And" mask
 AndMask.Canvas.Brush.Color:= fon;
 AndMask.Canvas.Rectangle(0,0,IconSizeX,IconSizey);
 //маска
 XOrMask:= TBitmap.Create;
 XOrMask.Width := IconSizeX;
 XOrMask.Height:= IconSizeY;
 XOrMask.Canvas.Brush.Color:= fon;
 XOrMask.Canvas.FillRect(Rect(0, 0, IconSizeX, IconSizeY));
 
 //управление-1 (исходящий/входящий)
 inc(minc);if minc=1 then for x:=0 to 31 do begin mi[x]:=1;mo[x]:=1;end;
 //нормализация
 y:=0;
 //maximum
 maxo:=u2;mo[0]:=u2;maxi:=u1;mi[0]:=u1;
 for x:=0 to 30 do begin
  if mo[x+1]>maxo then maxo:=mo[x+1];
  if mi[x+1]>maxi then maxi:=mi[x+1];
 end;
 for x:=0 to 31 do begin
  if (maxo<>0)then try mo[x]:= trunc(31*mo[x]/maxo);except end;
  if (maxi>0)then try mi[x] := trunc(30*mi[x]/maxi);except end;
 end;
 //
 for x:=0 to 31 do begin
  XOrMask.Canvas.Pen.Color  := c2;
  XOrMask.Canvas.Brush.Color:= c2;
  XOrMask.Canvas.MoveTo(32-x,32);
  XOrMask.Canvas.LineTo(32-x,32-trunc(mo[x]));
  y:= y+trunc(mi[x]);
  //
  XOrMask.Canvas.Pen.Color  := c1;
  XOrMask.Canvas.Brush.Color:= c1;
  XOrMask.Canvas.MoveTo(32-x,32);
  XOrMask.Canvas.LineTo(32-x,32-trunc(mi[x]));
 end;
 //средний уровень
 y:=trunc(y/32);
 XOrMask.Canvas.Pen.Color  :=c1;
 XOrMask.Canvas.Brush.Color:=c1;
 XOrMask.Canvas.MoveTo(1,32-y);
 XOrMask.Canvas.LineTo(32,32-y);
 //сдвиг
 for x:=31 downto 1 do
  begin mi[x]:=mi[x-1];mo[x]:=mo[x-1];end;
 
 //иконка
 Icon:= TIcon.Create;
 IconInfo.fIcon   := true;
 IconInfo.xHotspot:= 0;
 IconInfo.yHotspot:= 0;
 IconInfo.hbmMask := AndMask.Handle;
 IconInfo.hbmColor:= XOrMask.Handle;
 Icon.Handle      := CreateIconIndirect(IconInfo);
 AndMask.Free;
 XOrMask.Free;
 
 //tray
 HIcon1:=icon.Handle;
 with IconData do begin
  cbSize:=Sizeof(TNotifyIconData);
  Wnd:=ch;
  uID:=0;
  UFlags:=NIF_MESSAGE+NIF_ICON+NIF_TIP;
  //hint
  StrPLCopy(szTip,hint,SizeOf(szTip)-1);
  HIcon:=HIcon1;
  uCallBackMessage:= TRAY_CALLBACK
 end;
 Shell_NotifyIcon(NIM_ADD,@IconData);
 Shell_NotifyIcon(NIM_MODIFY,@IconData);
 Icon.Free
end;
 
 
 
procedure _net(h:thandle);
//параметры сети
var FLibHandle : THandle;
    Table      : TMibIfTable;
    i,k,Size   : integer;
    fm,pin,pout: shortstring;
    vi,vo      : real;
    //накопление-
    netinfo    : string;
    neti,neto  : array of integer;
begin
 FLibHandle:= LoadLibrary('IPHLPAPI.DLL');
 if FLibHandle= 0 then Exit;
 @GetIfTable:= GetProcAddress(FLibHandle, 'GetIfTable');
 if not Assigned(GetIfTable) then FreeLibrary(FLibHandle);
 //
 Size:= SizeOf(Table);
 netinfo:= '';
 if GetIfTable(@Table, @Size,false ) = 0 then begin //функции
  setlength(neti,Table.dwNumEntries);
  setlength(neto,Table.dwNumEntries);
  setlength(netio,Table.dwNumEntries);
  setlength(netoo,Table.dwNumEntries);
  for i:= 0 to Table.dwNumEntries-1 do begin
   neti[i]:= table.Table[i].dwInOctets;
   neto[i]:= table.Table[i].dwOutOctets;
   //
   if not netold then begin
    if i= Table.dwNumEntries-1 then netold:= true;
    if ini.ReadString('NET DATE','day','')<>datetostr(date) then begin
     ini.WriteInteger(string(Table.Table[i].bDescr),'inp_data_sum',ini.readInteger(string(Table.Table[i].bDescr),'inp_data_sum',0)+
      ini.readInteger(string(Table.Table[i].bDescr),'inp_data_day',0));
     ini.WriteInteger(string(Table.Table[i].bDescr),'out_data_sum',ini.readInteger(string(Table.Table[i].bDescr),'out_data_sum',0)+
      ini.readInteger(string(Table.Table[i].bDescr),'out_data_day',0));
    end;
    netio[i]:= ini.readInteger(string(Table.Table[i].bDescr),'inp_data_sum',0); //чтение данных-
    netoo[i]:= ini.readInteger(string(Table.Table[i].bDescr),'out_data_sum',0)
   end;
   ini.writeInteger(string(Table.Table[i].bDescr),'inp_data_day',neti[i]); //запись данных-
   ini.writeInteger(string(Table.Table[i].bDescr),'out_data_day',neto[i]);
 
   //
   if ((neti[0]+netio[0])/1024/1024)>1 then begin fm:=' MB'; k:= 1024 end else begin fm:=' kB'; k:=1 end;
   pin := 'inp  -'+ formatfloat(' 000.0',(neti[0]+netio[0])/1024/k);
   pout:= 'out -' + formatfloat(' 000.0',(neto[0]+netoo[0])/1024/k);
   //входящая cкорость
   vi:=((neti[0]+netio[0])-oldvi)*10/(2*1024);
   //исходящая-
   vo:=((neto[0]+netoo[0])-oldvo)*10/(2*1024);
   //на иконку
   traygraph(h,vi,vo,cllime,clred,clteal,copy(string(Table.Table[0].bDescr),1,25)+chr(13)+
    pin+fm+chr(13)+pout+fm//+chr(13)+'Cеть: '+inttostr(table.Table[0].dwSpeed div 1000000)+' Mбит/c'
    );
   //траффик. информация адаптера-
   if ((neti[i]+netio[i])/1024/1024)>1 then begin fm:= ' MB'; k:= 1024 end else begin fm:= ' kB'; k:= 1 end;
   netinfo:= netinfo + '• ' + string(Table.Table[i].bDescr) + ''#10 +
             'I/O' + formatfloat('  000.0',(neti[i]+netio[i])/1024/k)+ '/' + formatfloat('000.0',(neto[i]+netoo[i])/1024/k) + fm + ''#10#10
             ;
 
  end
 end;
 
 //траффик. все адаптеры-
 nettxt:= copy(netinfo,1,length(netinfo)-2);
 if ini.ReadString('NET DATE','day','')<>datetostr(date) then
  ini.writeString('NET DATE','day',datetostr(date));
 //
 FreeLibrary(FLibHandle);
 oldvi:= neti[0]+netio[0]; oldvo:= neto[0]+netoo[0]
end;
//=======


И конечно же, Виталию привет
0
Эксперт С++
4982 / 3089 / 456
Регистрация: 10.11.2010
Сообщений: 11,165
Записей в блоге: 10
10.08.2013, 12:31 12
У меня почему-то показатель скорости ~ в 5-6 раз больше.
Windows 7 64
0
6794 / 2816 / 527
Регистрация: 24.04.2011
Сообщений: 5,308
Записей в блоге: 10
10.08.2013, 12:58  [ТС] 13
raxp, спасибо за рекомендации! Привет передал.
Цитата Сообщение от castaway Посмотреть сообщение
У меня почему-то показатель скорости ~ в 5-6 раз больше.
Можно узнать максимальную скорость провайдера и какую в среднем показывает программа?

Не по теме:


P.S.Если пользуетесь mTorrent - он правильно скорость показывает?

0
Эксперт С++
4982 / 3089 / 456
Регистрация: 10.11.2010
Сообщений: 11,165
Записей в блоге: 10
10.08.2013, 13:11 14
Я не сразу обратил внимание, скорость показывается в килобитах/с ?
0
6794 / 2816 / 527
Регистрация: 24.04.2011
Сообщений: 5,308
Записей в блоге: 10
10.08.2013, 14:01  [ТС] 15
Цитата Сообщение от castaway Посмотреть сообщение
скорость показывается в килобитах/с ?
ну да
0
Эксперт С++
4982 / 3089 / 456
Регистрация: 10.11.2010
Сообщений: 11,165
Записей в блоге: 10
10.08.2013, 14:21 16
В килобайтах (кБ) мне кажется наглядней будет. Как думаешь?
0
2901 / 1732 / 206
Регистрация: 28.10.2011
Сообщений: 6,459
Записей в блоге: 6
10.08.2013, 14:27 17

Не по теме:

Цитата Сообщение от raxp Посмотреть сообщение
но на WinAPI
Я извиняюсь, но это не WinAPI (оно не ООП).
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
*//Create "And" mask
*andMask:= TBitmap.Create;
*AndMask.Monochrome:= true;
*AndMask.Width := IconSizeX;
*AndMask.Height:= IconSizeY;
*//Draw "And" mask
*AndMask.Canvas.Brush.Color:= fon;
*AndMask.Canvas.Rectangle(0,0,IconSizeX,IconSizey);
*//маска
*XOrMask:= TBitmap.Create;
*XOrMask.Width := IconSizeX;
*XOrMask.Height:= IconSizeY;
*XOrMask.Canvas.Brush.Color:= fon;
*XOrMask.Canvas.FillRect(Rect(0, 0, IconSizeX, IconSizeY));


Программное создание значка.
Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
#Icon  = 0 
#Image = 1 
#Mask  = 2
 
; Значок будет в трее.
 
Procedure.l CreateIcon(Icon.l, Image.l, Mask.l) 
  Protected *Bitmap.LONG 
  If CreateImage(Icon, ImageWidth(Image), ImageHeight(Image)) 
    *Bitmap = IsImage(Icon) 
    DeleteObject_(*Bitmap\l) 
    NewIcon.ICONINFO 
    NewIcon\fIcon = #True 
    NewIcon\hbmMask = ImageID(Mask) 
    NewIcon\hbmColor = ImageID(Image) 
    *Bitmap\l = CreateIconIndirect_(@NewIcon)    
    ProcedureReturn ImageID(Icon) 
  EndIf 
  ProcedureReturn 0 
EndProcedure 
 
LoadFont(0,"Arial",12,#PB_Font_Bold)
 
OpenWindow(0, 0, 0, 100, 50, "", #PB_Window_MinimizeGadget|#PB_Window_ScreenCentered)
CreateImage(#Image, 12, 16)
 If StartDrawing(ImageOutput(#Image))
   DrawingMode(#PB_2DDrawing_Transparent)
   DrawingFont(FontID(0))
   DrawText(0,0,"Z",$0000FF)
   StopDrawing()
 EndIf
 
 CreateImage(#Mask, 12, 16)
 If StartDrawing(ImageOutput(#Mask))
   Box(0,0, 12,16,$FFFFFF)
   DrawingMode(#PB_2DDrawing_XOr)
   DrawImage(ImageID(#Image),0,0)
  StopDrawing()
 EndIf
 
CreateIcon(#Icon, #Image, #Mask) 
AddSysTrayIcon(0, WindowID(0), ImageID(#Icon))
 
Repeat
  Event = WaitWindowEvent()
Until Event=#PB_Event_CloseWindow
0
raxp
10.08.2013, 14:48
  #18

Не по теме:

Петр, ООП тут причем?

0
Форумчанин.NET
555 / 426 / 64
Регистрация: 12.02.2013
Сообщений: 834
10.08.2013, 14:48 19
Windows 8 x64 полет нормальный
-Непрозрачность мне кажется лучше сделать по шкале 0 -100(%) - Trackbar'ом с предосмотром
-У графика слишком толстые линии, при том, что он не маштабируется в размере
-Скорость можно сокращать(18241,98 кб/сек не очень красиво)
-Ну и добавить настройки графика
Миниатюры
Индикатор сетевой активности  
0
locm
10.08.2013, 14:59     Индикатор сетевой активности
  #20

Не по теме:

Цитата Сообщение от raxp Посмотреть сообщение
ООП тут причем
Притом что дельфийский код использует компоненты (тот же TBitmap) и их методы, а не WinAPI в чистом виде.
К примеру, в WinAPI нет таких функций как Monochrome, Canvas и т. д. - это методы объекта, типа TBitmap

0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
10.08.2013, 14:59

Мониторинг сетевой активности
Такое дело : На работе какая-то служба или программа куда-то стучится под просроченной учеткой и...

Мониторинг сетевой активности приложения
День добрый. И так, по порядку. Есть потребность отловить входящие соединения определенного...

Контроль сетевой активности программы
Посоветуйте программу которой можно следить за сетевой активностью определенной программы. Нужна...

Перехват сетевой активности собственного приложения
Всем привет!) Итак, вопрос. Можно ли следить за запросами, отправляемыми собственным...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru