![]() |
|
|
|
|
#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 она исчезает. Сделай её глобальной.
|
|
#9
|
||||
|
||||
|
Цитата:
Переменная zero объявлена почему-то вещественным типом Real, хотя по идее должна иметь тот же тип что и dwInOctets, т.е. DWORD. Причём считывается в FormCreate в эту переменную из 1-го элемента массива, хотя потом, в таймере, работа вовсю идёт с 17-ым элементом. Да и не используется эта нулевая точка отсчёта нигде - как считалась в FormCreate так и висит "мёртвым грузом" (а ведь в первом сообщении она использовалась по назначению). Так как dwInOctets и dwOutOctets имеют не вещественный, а целочисленный тип, то и преобразовывать их в строку нужно не через FloatToStr, а через IntToStr. А смысл этой операции я вообще не понял: Код:
Resul:=InDowm+InOut; |