Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Прочее";
Текущий архив: 2006.06.25;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.48 MB
Время: 0.01 c
9-1131391662
JUS
2005-11-07 22:27
2006.06.25
Художество 2д спрайтов (подскажите софт)


15-1148902544
Kolan
2006-05-29 15:35
2006.06.25
Где найти книги про протоколы канального уровня


15-1148882300
Vlad Oshin
2006-05-29 09:58
2006.06.25
Удалить файл командной строкой по дате/размеру?


3-1146031721
{Set}
2006-04-26 10:08
2006.06.25
Ошибка при подключении Таблици InterBase


15-1149242870
Вопрошающий
2006-06-02 14:07
2006.06.25
Алгоритм определения дня недели по дате





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский