|
#1
|
|||
|
|||
Учет трафика
Привет всем! Помогите новичку. У меня интернет через мегафон-модем, тариф 50gb на месяц но с 00:00 до 08:00 трафик не учитывается. И я хочу написать простенькую прогу которая будет вести учет трафика:
входящий исходящий всего но только в выбраное мной время (на данный момент с 8 утра до полуночи) и с автозагрузкой (запуск вместе с Windows). Помогите пожалуйста, желательно в виде кода. P.S. Нашел кое-что: Цитата:
|
#2
|
|||
|
|||
Плохо искал.
Вот, например: https://github.com/sebadima/pinger/b...r/IPHelper.pas https://github.com/sebadima/connaliv...r/IPHLPAPI.pas Последний раз редактировалось lmikle, 02.01.2014 в 05:30. |
Этот пользователь сказал Спасибо lmikle за это полезное сообщение: | ||
Woha28 (02.01.2014)
|
#3
|
|||
|
|||
Спасибо, но как это использовать. Скопировать создать IPHelper.pas а куда кидать
|
#4
|
||||
|
||||
Цитата:
|
Этот пользователь сказал Спасибо poli-smen за это полезное сообщение: | ||
Woha28 (02.01.2014)
|
#5
|
|||
|
|||
Спасибо модули подключились! Но код привиденый више ни хрена не работает,
выводит постаянно 0. Может есть еще варианты, или этот код как-то изменить? Спасибо модули подключились! Но код привиденый выше ни хрена не работает, выводит постаянно 0. Может есть еще варианты, или этот код как-то изменить? Последний раз редактировалось M.A.D.M.A.N., 02.01.2014 в 19:52. |
#6
|
||||
|
||||
Цитата:
|
Этот пользователь сказал Спасибо poli-smen за это полезное сообщение: | ||
Woha28 (02.01.2014)
|
#7
|
|||
|
|||
Подскажите что не так?
Код:
unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, IPHelper, IpHlpApi, ExtCtrls, StdCtrls; type TForm1 = class(TForm) Label1: TLabel; Timer1: TTimer; Label2: TLabel; Label3: TLabel; Label4: TLabel; Label5: TLabel; Label6: TLabel; Button1: TButton; procedure FormCreate(Sender: TObject); procedure Timer1Timer(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; zero,i : Real; InDowm, InOut, Resul: string; implementation {$R *.dfm} procedure TForm1.FormCreate(Sender: TObject); var MibArr : IpHlpAPI.TMIBIfArray; begin Get_IfTableMIB(MibArr); zero:=MibArr[1].dwInOctets; //i:=MibArr[0].dwOutOctets; end; procedure TForm1.Timer1Timer(Sender: TObject); var MibArr : IpHlpAPI.TMIBIfArray; begin Get_IfTableMIB(MibArr); InDowm:= FloatToStr(MibArr[17].dwInOctets); InOut:= FloatToStr(MibArr[17].dwOutOctets); Resul:=InDowm+InOut; Label1.Caption:=InDowm; Label2.Caption:=InOut; //Label3.Caption:='Весь трафик: '+ Resul; end; end. Последний раз редактировалось Woha28, 02.01.2014 в 18:48. |
#8
|
||||
|
||||
Переменная MibArr у тебя локальная и после выхода из OnCreate она исчезает. Сделай её глобальной.
Je venus de nulle part 55.026263 с.ш., 73.397636 в.д. |
#9
|
||||
|
||||
Цитата:
Переменная zero объявлена почему-то вещественным типом Real, хотя по идее должна иметь тот же тип что и dwInOctets, т.е. DWORD. Причём считывается в FormCreate в эту переменную из 1-го элемента массива, хотя потом, в таймере, работа вовсю идёт с 17-ым элементом. Да и не используется эта нулевая точка отсчёта нигде - как считалась в FormCreate так и висит "мёртвым грузом" (а ведь в первом сообщении она использовалась по назначению). Так как dwInOctets и dwOutOctets имеют не вещественный, а целочисленный тип, то и преобразовывать их в строку нужно не через FloatToStr, а через IntToStr. А смысл этой операции я вообще не понял: Код:
Resul:=InDowm+InOut; |