Оригинальный DVD-ROM: eXeL@B DVD !
eXeL@B ВИДЕОКУРС !

ВИДЕОКУРС ВЗЛОМ
выпущен 1 марта!


УЗНАТЬ БОЛЬШЕ >>
Домой | Статьи | RAR-cтатьи | FAQ | Форум | Скачать | Видеокурс
Новичку | Ссылки | Программирование | Интервью | Архив | Связь

БОЛЬШОЙ FAQ ПО DELPHI



Как в Delphi дозвониться до провайдера


Телефонный звонок провайдеру:
- У меня опять проблема.
- Что, не можете войти?
- Войти удалось, но сосать не хочет!
- Хм. Мы не виноваты - у нас канал широкий...
- Причем здесь канал?! С кем я говорю? Это телефон доверия?

  1. Если ты посто полезешь из программы куда-то по IP - то Win сама начнет dial-up, если у нее есть хотя бы одно connection в Remote Access.
  2. Если ты хочешь, чтобы программа сама выбирала connection (если их имеется несколько), контролировала набор номера, посылала login и пароль, то тебе нужно воспользоваться функциями RAS.

 {  Try to establish RAS connection with specified name. EntryName -
    an entry in default phonebook to be used for dial-up. Notes:
 a) This call is synchronous (i.e. will not return until the connection
    is established or failed) and hence, may take some time
    (sometimes tens of seconds).
 b) The function uses no dial extension, and uses default phonebook.  }
 
 function RasMakeDialupConnection(const EntryName: string): Boolean;
 var
   dwRet: Dword;
   DialParams: TRasDialParams;
   hRas: HRASCONN;
   bPwd: Boolean; // was the password retrieved
 begin
   uLastErr := 0; // Prepare dial parameters
   FillChar(DialParams, SizeOf(DialParams), 0);
   DialParams.dwSize := SizeOf(DialParams);
   StrPLCopy(@(DialParams.szEntryName[0]), EntryName,
     SizeOf(DialParams.szEntryName));
   hRas := 0; // must do that before calling RasDial
   // Try to retrieve user name/passowrd.
   // We continue even if RasGetEntryDialParams returns error, because
   // in next call RasDial will just try with empty user name/password
   bPwd := False;
   RasGetEntryDialParams(nil, @DialParams, bPwd);
   // Call RAS API. In this particular case RasDial will not return until
   // the connections is established or failed to establish.
   dwRet := RasDial(nil, nil, // no dial extensions, default phonebook
     @DialParams,
     0, // ignored here
     nil, // do not use callback - the call is synch
     hRas); // receives connection handle
   Result := dwRet = 0; // Connection failed... if not Result then begin
   // In some cases hRas may be non-zero and the connection port
   // is still opened. It is a Windows semi-bug/semi-feature.
   // So I must try to close
   if hRas <> 0 then
     RasHangupConnection(hRas);
   // RasHangup may reset uLastErr, but we need the value // returned from RasDial
   uLastErr := dwRet;
 end;
 end;
 




<< ВЕРНУТЬСЯ В ОГЛАВЛЕНИЕ



Материалы находятся на сайте https://exelab.ru/pro/



Оригинальный DVD-ROM: eXeL@B DVD !


Вы находитесь на EXELAB.rU
Проект ReactOS