Издательский дом ООО "Гейм Лэнд"ЖУРНАЛ ХАКЕР #64, АПРЕЛЬ 2004 г.

Позвони мне, позвони…

Crazy_Script

Xakep, номер #064, стр. 064-112-1


(crazy_script@vr-online.ru, www.vr-online.ru)

Оплот сопротивления с провайдером на Delphi

21 век наступил, Билл Гейтс уже очень давно воплощает идею information highway, а на нашей с тобой могучей родине все еще куча народу сидит на модеме. Причем иногда российские провы в альянсе с доисторическими АТС демонстрируют просто чудеса дозвона, которые могут поспорить даже с качеством 1998 года. Один из таких эпизодов и подвиг меня на написание этой статьи.

Come get some

Поначалу я надеялся найти в Сети уйму компонентов, которые помогут мне в этом нелегком деле. Но не тут-то было. Одни компоненты просили денег, другие работали только с уже созданными виндовыми соединениями, а третьи вообще не работали. Ну да бог им судья, ведь для нас существует такой замечательный модуль, как RAS. Им-то мы и обойдемся.

Но для начала давай обдумаем нашу звонилку. Он должна уметь: звонить, перезванивать при ошибке соединения, отображать статус подключения. Это минимум. Если тебе будет чего-то не хватать, ты без проблем доделаешь сам. Благо доделать можно еще очень многое. Свобода творчества!

Теория

Основным нашим инструментом, как я уже сказал, будет RAS API (Remote Access Service Application Programming Interface). В библиотеку rasapi32.dll включено множество функций:

1. Работа с уже готовыми соединениями (копирование, удаление, переименование).

2. Изменение настроек этих соединений.

3. Осуществление подключения, отключения, перезвона.

4. Получение информации о статусе подключения.

Но эти функции не будут работать без интерфейсного модуля. В интерфейсном модуле описаны константы, функции, процедуры и т.п. Поэтому для работы с rasapi32.dll нужен модуль, который берем с www.vr-online.ru/team/cscript/x/ras0.zip или с диска. Да! И не забываем прописать его в uses.

Конечно, мы можем использовать в своей программе стандартные виндовские окна создания соединений, изменения настроек. Но зачем? Лучше сделать нормальную автономную звонилку.

Основные RAS-функции:

RasEnumEntries - перечисление всех соединений, которые находятся в телефонной книге. Т.е. обычно те, которые находятся в папке "Удаленный доступ". Если возникает потребность использования другой телефонной книги, полный путь к ней записывается в параметр lpszPhonebook.

RasEnumDevices - перечисление устройств, установленных на компе, через которые можно осуществить подключение. В первый параметр lpRasDevInfo записывается название устройства, второй параметр lpcb содержит размер буфера lpRasDevInfo. Третий (lpcDevices) - число устройств.

RasHangUp - с помощью этой функции производится отключение.

RasSetEntryDialParams - создание соединения или изменение уже существующего.

RasGetEntryDialParams - получение настроек существующего соединения (в этой, как и в предыдущей функции, при использовании нестандартной телефонной книги следует указывать полный путь).

RasDial и RasDialDlg – функции, осуществляющие дозвон. Отличие их в том, что RasDialDlg – всего лишь вызывает стандартное окно дозвона и работает только под WinNT/2000/XP, тогда как RasDial работает практически под всеми версиями окошек.

Содержание  Вперед на стр. 064-112-2
<<< НАЗАД ||| ГЛАВНАЯ