webForumDet fria alternativet

Internet

4 svar · 448 visningar · startad av Niclas Ohlsson

Niclas OhlssonMedlem sedan juli 200068 inlägg
#1

Hur gör man för att kolla om man är online på internet via sitt prog.

Alpha IIMedlem sedan maj 20002 993 inlägg
#2

Man kan kolla IP nummret (vilket jag inte vet hur man gör..) och om det är 127.0.0.1, eller nått så är man offline.

------------------
Alpha II

-Glad midsommar! :)

bughawkMedlem sedan juni 20001 839 inlägg
#3

Det är inte bombsäkert... När jag är offline så får jag en default IP och den är inte 127.0.0.1... Jag skulle tro att windows erbjuder någon standardfunktion för att testa huruvida man är online...

------------------
Mvh Yrin Eldfjell

"Shit happens, and hopefully, life goes on"

Alpha IIMedlem sedan maj 20002 993 inlägg
#4

Den här koden hittade jag på www.torrys.ru
<font size="1" face="Verdana, Arial, Helvetica, sans-serif">Kod:<font size="1" face="Verdana, Arial, Helvetica, sans-serif" color="#666600">
interface
uses
Windows, SysUtils, Registry, WinSock, WinInet;

type
TConnectionType = (ctNone, ctProxy, ctDialup);

function ConnectedToInternet : TConnectionType;
function RasConnectionCount : Integer;

implementation

//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
//I just try to read it, and trap an exception
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
//Obviously not connected through a proxy
end;
finally
Free;
end;

//We can check RasConnectionCount even if dialup networking is not installed
//simply because it will return 0 if the DLL is not found.
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;

//Load the RAS DLL
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;

------------------
Alpha II

-Regnig sommar...

[Alpha II - fixa din signatur!]

[Redigerat av WiNNe den 23 jul 2000]

Niclas OhlssonMedlem sedan juli 200068 inlägg
#5

Jag får inte koden att fungera.

Hur ser HELA koden ut??

132 ms totalt · 3 externa anrop · v20260731065814-full.30151723
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
129 ms — hämta tråd, inlägg och bilagor (db)