Показать полную графическую версию : Как определить, Internet connected or disconnected?
IkaMazini
05-10-2004, 23:47
Как в Delphi определить Internet connected or disconnected?
Почитай здесь http://interdelphi.h11.ru/inet.html
Или, если этого мало, то зайди сюда (http://www.google.ru/search?hl=ru&inlang=ru&q=Internet+%D1%81%D0%BE%D0%B5%D0%B4%D0%B8%D0%BD%D0%B5%D0%BD%D0%B8%D0%B5+%D0%B F%D1%80%D0%BE%D0%B2%D0%B5%D1%80%D0%BA%D0%B0+delphi&lr=) Google рулит не по детски :)
IkaMazini
06-10-2004, 13:08
[mzd] THX
IkaMazini
06-10-2004, 16:13
Мне нужен реальный код, чтобы проверять Интернет соединение “Connected”, “Not Connected” или “Disconnected”! Windows XP. Delphi 7. Internet.
Что-то вроде етаго, но это дрянь в WinXP-е не работает:
function InetIsOffline(Flag: Integer): Boolean; stdcall; external 'URL.DLL';
procedure TForm1.Button1Click(Sender: TObject);
begin
if InetIsOffline(0) then
showMessage('This computer is not connected to Internet!')
else
showMessage('You are connected to Internet!');
end;
vadimiron
07-10-2004, 01:10
Я не программирую в Дельфи, но в немецком инете нашёл следущее, может это то, что нужно
Function Connection: boolean;
var
flags: dword;
begin
result:= InternetGetConnectedState(@flags, 0);
end;
Добавлено:
А ещё такое нашёл
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;
IkaMazini
07-10-2004, 03:41
Большое тебе спасибо, это то что и нужно!
IkaMazini
08-10-2004, 14:18
uses WinInet;
……………
procedure TForm1.Button1Click(Sender: TObject);
var
*dwConnectionTypes: DWORD;
begin
*if InternetGetConnectedState(@dwConnectionTypes,0) then
* *ShowMessage('Internet Connection Executed!');
*if not InternetGetConnectedState(@dwConnectionTypes,0) then
begin
*if MessageDlg('Internet Connection Not Executed!'
* ,Mtinformation,[mbOk],0)=mrOk then
*Exit;
end;
end;
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.