Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.02.20;
Скачать: CL | DM;

Вниз

Как из программы на Delphi выполнить дозвон к интернету   Найти похожие ветки 

 
Митяй2   (2004-12-21 22:28) [0]

Как из программы на Delphi выполнить дозвон по конкретному подключению (например в папке "сетевые подключения" есть одно с названием "Интернет ROL")? И где указать логин и пароль в программе, т.е. в какой функции?
Ну и естественно, как разорвать текущий сеанс с интернетом?

P.S. Подключение через DialUP, т.к., я думаю, от этого может зависеть код, хотя...

Помогите, может кто знает.

Спасибо. Дмитрий


 
Redlord   (2004-12-21 23:08) [1]

проверь почту


 
Митяй2   (2004-12-21 23:49) [2]

Спасибо, работает, если кого-то интересует, пишите мне на мыло перешлю, надеюсь Redlord не будет против.

Спасибо!


 
Piter ©   (2004-12-22 09:55) [3]

Вопрос: как установить - разорвать соединение DialUp

Ответ: нужно воспользоваться функциями RAS - Remote Access Service. Но проблема в том, что хотя в WIN32SDK.HLP есть описание функций из этого набора в главе "Remote Access Service Functions", но файлов импорта в поставке Delphi нету. Поэтому вы можете вручную экспортировать нужные функции из "rasapi32.dll" пользуясь справкой Delphi и MSDN, но гораздо эффективнее и умнее будет взять переведенные файлы импорта с проекта http://www.delphi-jedi.org/, в данное время точный URL для загрузки файлов импорта RAS - ftp://delphi-jedi.org/api/RAS.zip

В набор входит несколько юнитов: Ras.pas, RasAuth.pas, RasDlg.pas, RasError.pas, RasSapi.pas, RasShost.pas, и дополнительные юниты: RasUtils.pas, RasHelperClasses.pas, а также файлы из папки DEMOS с нужными константами: Lmcons.pas, LmErr.pas.

Можно эти юниты переписать по какому-нибудь пути, известному Delphi, например записать все перечисленные файлы в каталог {Каталог_Delphi}/lib и дальше просто подключать к любым программам эти модули, например:

uses
 ..., Ras, RasUtils, RasHelperClasses;


В RasHelperClasses.pas реализованы очень полезные классы, например TRasDialer, TRasPhonebook, TRasConnectionsList, с применением которых и построен демонстрационный пример RasDemo.dpr.

TRasDialer - инкапсулирует в себе соединение, после настройки можно устанавливать, разъединять соединение, следить за процессом установления соединения

TRasPhonebook - служит для управление существующими соединениями, позволяет создавать новые, удалять существующие соединения, переименовывать, настраивать параметры соединений

TRasConnectionsList - служит для управления текущими установленными соединениями.

У меня только одно замечание по исходному коду примера RasDemo.dpr. Там в обработчике события TMainForm.PBDialBtnClick идет настройка TRasDialer по записи из TRasPhonebook методом

RasDialer.Assign(RasPhonebook[Selected.Index]);

Но реализация метода Assign такова, что имени соединения присваивается пустая строка:

procedure TRasDialer.Assign(Source: TPersistent);
...
 FParams.szEntryName := "";
...


С точкизрения RAS установка соединения с такими параметрами будет идти как независимое соединение. То есть, фактически от выбранного соединения копируются номер дозвона, номер обратного вызова, имя пользователя, пароль и домен. И устанавливается новое соединение с такими параметрами, которое к выбранному соединению никакого отношения не имеет. Но у выбранного соединения могут быть установлены необходимые для дозвона свойства, типа "Сценарий" или "Ручной набор номера".
Поэтому чтобы перенять иэти параметры, надо присвоить устанавливаемому соединению имя, аналогичное имени нужного существующего соединения. Например, переделать пример RasDemo.dpr таким образом:

procedure TMainForm.PBDialBtnClick(Sender: TObject);
var
 NewDialParam: TRasDialParams;
begin
 with PhonebookListView do
   if (Selected <> nil) then
   begin
     RasDialer.Assign(RasPhonebook[Selected.Index]);

     NewDialParam := RasDialer.Params ;
     StrPCopy(NewDialParam.szEntryName, RasPhonebook[Selected.Index].Name);
     RasDialer.Params := NewDialParam ;


     UserNameEdit.Text := RasDialer.UserName;
     PasswordEdit.Text := RasDialer.Password;
     PhoneNumberEdit.Text := RasDialer.PhoneNumber;
     PageControl1.ActivePage := TabSheet3;
   end;
end;


Остальные функции реализованы очень хороши и вы можете их поизучать.

И в конце хочу сделать пару замечаний:

1) скорее всего, в NT системах вы не узнаете пароля от соединения. В поле пароля будут просто зведочки. Чтобы установить соединение с паролем по умолчанию (если он сохраняется) нужно оставить пароль пустым

2) если вы хотите набрать номер в импульсном наборе, а у вас набирается в тоновом - то нужно просто поставить символ "p" (от слова "pulse") перед номером, например "p1055555". Символ "w" обозначает ожидание гудка в линии, например, при наборе через АТС "9w1055555".

Отвечал: Piter


 
Митяй2   (2004-12-23 17:07) [4]

Спасибо.


 
TankMan ©   (2004-12-24 08:24) [5]

>>Митяй2
Не мог бы скинуть мне примерчик?


 
250   (2005-01-09 23:30) [6]

Все OK! Однако с копированием это вы хорошо придумали. А вот как телефон дозвона менять динамически, если их несколько. При копировании выбирается всегда первый из списка, а доступ к всему списку я получить не сумел


 
250   (2005-01-10 14:46) [7]

Как получит путь к файлу PBK соединения ?


 
Piter ©   (2005-01-10 16:53) [8]

250   (10.01.05 14:46) [7]
Как получит путь к файлу PBK соединения


чего?



Страницы: 1 вся ветка

Текущий архив: 2005.02.20;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.038 c
3-1105871854
cherrex
2005-01-16 13:37
2005.02.20
DBGRID и Excel


14-1106211382
DelphiNew
2005-01-20 11:56
2005.02.20
Изгиб гитары жёлтой


14-1107054763
Бугага
2005-01-30 06:12
2005.02.20
Enterprise Resource Planning


1-1107332899
STARfish
2005-02-02 11:28
2005.02.20
Анализ работы поисковиков


14-1106885873
КаПиБаРа
2005-01-28 07:17
2005.02.20
Опрос - А что у Вас хорошего случилось в последнее время?