![]() |
|
|
Регистрация | << Правила форума >> | 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...
Вот посмотри еще SysMan. C++Builder Internet/Intranet Programming. |
#4
|
|||
|
|||
![]() Я подключаюсь прогой, используя RASUnit. Где посмотреть логи подключения?
После нажатия на кнопку должна идти процедура установки соединения с провом, но ничего не происходит... |