Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.06.25;
Скачать: CL | DM;

Вниз

Вообще-то вопрос по сетям, но мне там не отвечают   Найти похожие ветки 

 
adalx   (2006-05-31 16:05) [0]

На делфи программирую недавно. Так что не смеяться. Как узнать, когда соединение с интернетом установлено, а когда нет, сколько байт принято и какова длительность сеанса соединения?


 
syte_ser78 ©   (2006-05-31 16:08) [1]

Если серьезно - сложно, и не всегда правильно получается это определить.

------------

//For RasConnectionCount =======================
const
 cERROR_BUFFER_TOO_SMALL = 603;
 cRAS_MaxEntryName       =  256;
 cRAS_MaxDeviceName      =  128;
 cRAS_MaxDeviceType      =  16;
type
 ERasError = class(Exception);
 HRASConn = DWord;
 PRASConn = ^TRASConn;
 TRASConn = record
    dwSize: DWORD;
    rasConn: HRASConn;
    szEntryName: Array[0..cRAS_MaxEntryName] Of Char;
    szDeviceType : Array[0..cRAS_MaxDeviceType] Of Char;
    szDeviceName : Array [0..cRAS_MaxDeviceName] of char;
 end;

 TRasEnumConnections =
     function (RASConn: PrasConn; { buffer to receive Connections data }
               var BufSize: DWord;    { size in bytes of buffer }
               var Connections: DWord { number of Connections written to buffer }
               ): LongInt; stdcall;
//End RasConnectionCount =======================

function ConnectedToInternet: TConnectionType;
var
 Reg       : TRegistry;
 bUseProxy : Boolean;
 UseProxy  : LongWord;
begin
 Result := ctNone;
 Reg := TRegistry.Create;
 with REG do
 try
   try
     RootKey := HKEY_CURRENT_USER;
     if OpenKey("\Software\Microsoft\Windows\CurrentVersion\Internet settings",False) then begin
       if GetDataType("ProxyEnable") = rdBinary then
         ReadBinaryData("ProxyEnable", UseProxy, SizeOf(LongWord) )
       else begin
         bUseProxy := ReadBool("ProxyEnable");
         if bUseProxy then
           UseProxy := 1
         else
           UseProxy := 0;
       end;
       if (UseProxy <> 0) and ( ReadString("ProxyServer") <> "" ) then Result := ctProxy;
     end;
   except
   end;
 finally
   Free;
 end;
 if Result = ctNone then begin
   if RasConnectionCount > 0 then Result := ctDialup;
 end;
end;

function RasConnectionCount : Integer;
var
 RasDLL    : HInst;
 Conns     : Array[1..4] of TRasConn;
 RasEnums  : TRasEnumConnections;
 BufSize   : DWord;
 NumConns  : DWord;
 RasResult : Longint;
begin
 Result := 0;
 RasDLL := LoadLibrary("rasapi32.dll");
 if RasDLL = 0 then exit;
 try
   RasEnums := GetProcAddress(RasDLL,"RasEnumConnectionsA");
   if @RasEnums = nil then
     raise ERasError.Create("RasEnumConnectionsA not found in rasapi32.dll");
   Conns[1].dwSize := Sizeof (Conns[1]);
   BufSize := SizeOf(Conns);
   RasResult := RasEnums(@Conns, BufSize, NumConns);
   If (RasResult = 0) or (Result = cERROR_BUFFER_TOO_SMALL) then Result := NumConns;
 finally
   FreeLibrary(RasDLL);
 end;
end;


 
syte_ser78 ©   (2006-05-31 16:09) [2]

Длительность сеанса = время отключения-время подключения. С байтами посложнее.


 
adalx   (2006-05-31 16:10) [3]

У-у-х. А можно что-нибудь объяснить, а то ведь просто списывать не хочется. Вдруг что-нибудь из этого где-нибудь ещё понадобится...
А вообще, спасибо большое.


 
REA   (2006-05-31 16:11) [4]

Есть IPHelper - там можно наверно выдрать, если знать интерфейс подключения


 
adalx   (2006-05-31 16:15) [5]

Про время подключения и отключения: я ведь не из своей проги подключать хочу. Она только следить должна. Как я узнаю, когда соединение устанавливалось?


 
syte_ser78 ©   (2006-05-31 16:17) [6]

Ты узнаешь об этом когда ConnectedToInternet станет равным ctDialup

ЗЫ. Речь идет именно о диалап подключении.


 
syte_ser78 ©   (2006-05-31 16:18) [7]

syte_ser78 ©   (31.05.06 16:17) [6]
Отключение соответственно когда ConnectedToInternet станет неравным ctDialup


 
adalx   (2006-05-31 16:22) [8]

А с байтами. Ведь винда определяет... Значит эти данные где-то хранятся... Нельзя их оттуда выцепить?


 
adalx   (2006-05-31 16:28) [9]

Знаю, вопрос глупый, но может кто-нибудь хорошо в системах Windows шарит и знает всё-таки, где они это сохраняют...


 
adalx   (2006-05-31 16:42) [10]

Ладно, спасибо за время соединения


 
syte_ser78 ©   (2006-05-31 16:49) [11]

нэма за шо.


 
Virgo_Style ©   (2006-05-31 19:03) [12]

Посмотри вот это: http://programania.com/ti.zip



Страницы: 1 вся ветка

Текущий архив: 2006.06.25;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.049 c
2-1149751434
XTD
2006-06-08 11:23
2006.06.25
Глючит MediaPleyer


2-1149600623
VitV
2006-06-06 17:30
2006.06.25
interbase+delphi связывание таблиц


4-1143231811
Delphi_is_cool
2006-03-24 23:23
2006.06.25
Как изменить цвет шрифта ? (Static)


15-1149268194
ArtemESC
2006-06-02 21:09
2006.06.25
Программка...


1-1147934077
Damager
2006-05-18 10:34
2006.06.25
Градиентные цвета компонентов