Скачай модуль RasUnit.
Я использую такую процедуру для определения состояния подключения удаленного соединения:
Код:
function TestRasConnect(RasName: String): Boolean;
// Функция проверяет наличие потключения к интернет по указанному
// удаленному соединению.
type
TRasConnE = record
dwSize: Longint;
HRasConn: THRasConn;
szEntryName: array[0..RAS_MaxEntryName] of AnsiChar;
szDeviceType: array[0..RAS_MaxDeviceType] of AnsiChar;
szDeviceName: array[0..RAS_MaxDeviceName] of AnsiChar;
end;
TRasConnStatusE = record
dwSize: Longint;
RasConnState: TRasConnState;
dwError: LongInt;
szDeviceType: array[0..RAS_MaxDeviceType] of AnsiChar;
szDeviceName: array[0..RAS_MaxDeviceName] of AnsiChar;
end;
var
i, l: Integer;
RCCount: Integer;
Connected: Boolean;
ListRC: array[0..10] of TRasConnE;
RasConn: TRasConnE;
RCStatus: TRasConnStatusA;
begin
Connected := False;;
l := SizeOf(ListRC);
ZeroMemory(@ListRC, l);
ListRC[0].dwSize := SizeOf(TRasConnE);
// Выбираем потключенные удаленные соединения
RCCount := 0;
RasEnumConnections(@ListRC, l, RCCount);
for i := 0 to RCCount-1 do
begin
RasConn := ListRC[i];
ZeroMemory(@RCStatus, SizeOf(RCStatus));
RCStatus.dwSize := SizeOf(TRasConnStatusE);
// Читаем статус текущего удаленного соединения
RasGetConnectStatus(RasConn.HRasConn, RCStatus);
if (RCStatus.rasconnstate = RASCS_Connected)
and (RasConn.szEntryName = RasName) then
begin
Connected := True;
Break;
end;
end;
Result := Connected;
end;