Форум: "Прочее";
Текущий архив: 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.009 c