Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
KANSoftWare

Разрыв Dial-Up соединения

Delphi , Интернет и Сети , Dial-up

Разрыв Dial-Up соединения

Автор: Dimka Maslov
WEB-сайт: http://delphibase.endimus.com

{ **** UBPFD *********** by delphibase.endimus.com ****
>> Разрыв Dial-Up соединения

Прекращает активное Dial-Up соединение. Возвращает True в
случае успеха или False, если соединение разорвать невозможно
(например при полном или частичном отсутствии оного :-).

Зависимости: Windows
Автор:       Dimka Maslov, mainbox@endimus.ru, ICQ:148442121, Санкт-Петербург
Copyright:   Dimka Maslov
Дата:        16 января 2003 г.
***************************************************** }

type
  TRasConn = record
    Size: DWORD;
    Handle: THandle;
    Name: array[0..20] of AnsiChar;
  end;

  TRasEnumConnections = function(var RasConn: TRasConn; var Size: DWORD;
    var Connections: DWORD): DWORD stdcall;
  TRasHangUp = function(Handle: THandle): DWORD stdcall;

function DisconnectDialUp: Boolean;
var
  Lib: HINST;
  RasEnumConnections: TRasEnumConnections;
  RasHangUp: TRasHangUp;
  RasConn: TRasConn;
  Code, Size, Connections: DWORD;
begin
  Result := True;
  try
    Lib := LoadLibrary('rasapi32.dll');
    try
      if Lib = 0 then
        Abort;
      RasEnumConnections := GetProcAddress(Lib, 'RasEnumConnectionsA');
      if not Assigned(@RasEnumConnections) then
        Abort;
      RasHangUp := GetProcAddress(Lib, 'RasHangUpA');
      if not Assigned(@RasHangUp) then
        Abort;
      FillChar(RasConn, SizeOf(RasConn), 0);
      RasConn.Size := SizeOf(RasConn);
      Code := RasEnumConnections(RasConn, Size, Connections);
      if (Connections <> 1) or (Code <> 0) then
        Abort;
      if RasHangUp(RasConn.Handle) <> 0 then
        Abort;
      Sleep(3000);
    finally
      FreeLibrary(Lib);
    end;
  except
    on E: EAbort do
      Result := False;
  else
    raise;
  end;
end;

Пример использования:

if DisconnectDialUp = true then
  ShowMessage('Соединение разорвано')
else
  ShowMessage('Не удалось разорвать соединение');

Here's the translation of the content into Russian:

Это программное обеспечение Delphi, которое отключает активное соединение Dial-Up. Функция DisconnectDialUp пытается перечислить соединения с помощью функции RasEnumConnectionsA и затем разорвать соединение с помощью функции RasHangUpA.

Вот подробный анализ кода:

  1. Первая секция объявляет два рекордных типа: TRasConn и TRasEnumConnections. TRasConn представляет собой Dial-Up-соединение, с полями для размера структуры, handle соединения и массивом из 21 символов для хранения имени соединения.
  2. Вторая секция объявляет два указателя функций: TRasEnumConnections и TRasHangUp. Эти функции используются для перечисления соединений и разорвания соединения, соответственно.
  3. Функция DisconnectDialUp является основным точкой входа для отключения Dial-Up-соединения. Она не принимает параметров и возвращает булевое значение, указывающее, была ли отключена успешно или нет.
  4. Внутри функции DisconnectDialUp:
    • Она загружает библиотеку rasapi32.dll с помощью LoadLibrary.
    • Она получает адреса функций RasEnumConnectionsA и RasHangUpA с помощью GetProcAddress.
    • Она инициализирует структуру TRasConn нулями.
    • Она вызывает RasEnumConnectionsA, чтобы перечислить соединения, передавая в нее структуру TRasConn. Функция возвращает код, указывающий на успех или неудачу операции.
    • Если есть более одного соединения (показатель Connections > 1) или если перечисление соединений failed (код <> 0), она прерывает выполнение с ошибкой.
    • Она вызывает RasHangUpA, чтобы разорвать соединение, передавая в нее handle соединения. Если это fails (код не равен 0), она также прерывает выполнение с ошибкой.
    • Наконец, она ожидает 3 секунды с помощью Sleep и затем освобождает библиотеку с помощью FreeLibrary.
  5. Затем программа проверяет, была ли отключена успешно или нет, и отображает сообщение соответственно.

Пример использования в конце кода показывает, как использовать эту функцию в приложении Delphi:

if DisconnectDialUp = true then
  ShowMessage('Соединение разорвано')
else
  ShowMessage('Не удалось разорвать соединение');

Этот код отключит Dial-Up-соединение и отобразит сообщение, указывающее на успех или неудачу операции.

Описание статьи "Разрыв Dial-Up соединения" - программный код на Delphi, позволяющий прекратить активное Dial-Up соединение и вернуть результат успешности или ошибки.


Комментарии и вопросы

Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.


:: Главная :: Dial-up ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-08-19 13:29:56
2024-11-21 11:45:38/0.0039188861846924/0