Позвони мне, позвони… 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 работает практически под всеми версиями окошек. |