![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
|||
|
|||
|
Многоуважаемые, подскажите пожалуйста, или хоть носом тыкните куда. Задача такая - есть подключение к интернет через GPRS-модем сотика. Часто подвисает то-ли GPRS-связь, то-ли интерфейс связи с модемом сотика. При этом Windows разрыв связи не показывает, и программа, работающая с этим подключением, соответственно считает что связь есть, но отправлять/получать ничего не может. Проблемма устраняется при переподключении соединения.
А теперь собственно вопрос: Как можно из своей программы на Delphi получить список активных соединений, а затем отключить их и потом соединиться снова? Наверное надо использовать вункции api из wininеt? Вот только толкового описания их применения не могу найти. Выручайте!!! |
|
#2
|
|||
|
|||
|
Скачай модуль 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; |
|
#3
|
||||
|
||||
|
RasEnumConnections...
Вот посмотри еще |
|
#4
|
|||
|
|||
|
Я подключаюсь прогой, используя RASUnit. Где посмотреть логи подключения?
После нажатия на кнопку должна идти процедура установки соединения с провом, но ничего не происходит... |