Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Сети > Как узнать набираемый номер по Dial-Up


Автор: Олег_Игоревич 23.7.2005, 23:38
Здравствуйте !
Подскажите пожалуйста как можно узнать набираемый телефонный номер текущего соединения по протоколу RAS ?
И вывести его в Tedit.

Заранее спасибо

Автор: RA 24.7.2005, 07:32
Кажется функцией RasGetEntryDialParamsA из rasapi32.dll
или RasGetEntryProperties

Автор: Girder 24.7.2005, 13:40
Код
procedure TForm1.Button1Click(Sender: TObject);
type
 PRasConn=^TRasConn;
 TRasConn=packed record
  dwSize:DWord;
  hRasConn:THandle;
  szEntryName:array [0..23] of Char;
 end;
 TRasConnStatus=packed record
  dwSize:DWord;
  RasConnState:DWord;
  dwError:DWord;
  szDeviceType:array [0..16] of Char;
  szDeviceName:array [0..128] of Char;
  szPhoneNumber:array [0..129] of Char;
 end; 
 TRasHangUp=function(hRasConn:THandle):DWord; stdcall;
 TRasEnumConnections=function(RasConn:PRasConn; var bSize:DWord;
                              var ConnCount:DWord):DWord; stdcall;
 TRasGetConnectStatus=function(hRasConn:THandle; var lpRasConnStatus:TRasConnStatus):DWord; stdcall;
var RasApi:Cardinal;
    RasGetConnectStatus:TRasGetConnectStatus;
    RasEnumConnections:TRasEnumConnections;
    RasHangUp:TRasHangUp;
    bSize,ConnCount,j:DWord;
    RasConnStatus:TRasConnStatus;
    RasConn:TRasConn;
    ArrRasConn,RasOld:PRasConn;
begin
 Memo1.Clear;
 RasApi:=LoadLibrary('RasApi32.dll');
 if RasApi<>0 then
  begin
   RasEnumConnections:=GetProcAddress(RasApi,'RasEnumConnectionsA');
   RasHangUp:=GetProcAddress(RasApi,'RasHangUpA');
   RasGetConnectStatus:=GetProcAddress(RasApi,'RasGetConnectStatusA');
   if (Assigned(RasEnumConnections))and(Assigned(RasHangUp))and(Assigned(RasGetConnectStatus)) then
    begin
     bSize:=0;
     RasConn.dwSize:=SizeOf(TRasConn);
     RasEnumConnections(@RasConn,bSize,ConnCount);
     if bSize>0 then
      begin
       Memo1.Lines.Add('Активных Dial-Up соединений: '+IntToStr(ConnCount));
       try
        GetMem(PChar(ArrRasConn),bSize);
        ArrRasConn^.dwSize:=SizeOf(TRasConn);
        j:=bSize;
        RasOld:=ArrRasConn;
        if RasEnumConnections(ArrRasConn,j,ConnCount)=0 then
         for j:=1 to ConnCount do
          begin
           Memo1.Lines.Add('Соединение '+IntToStr(j)+':');
           Memo1.Lines.Add(' - Дескриптор: '+IntToStr(ArrRasConn^.hRasConn));
           Memo1.Lines.Add(' - Название: '+ArrRasConn^.szEntryName);
           RasConnStatus.dwSize:=SizeOf(TRasConnStatus);
           if RasGetConnectStatus(ArrRasConn^.hRasConn,RasConnStatus)=0 then
            Memo1.Lines.Add(' - Телефон: '+RasConnStatus.szPhoneNumber);
           inc(ArrRasConn);
          end;
        FreeMem(PChar(RasOld),bSize);
       except
       end;
      end;
    end;
   FreeLibrary(RasApi);
  end;
end;

Автор: Олег_Игоревич 25.7.2005, 18:10
Не подскажите ли Girder как можно узнать номер телефона соединения не активных а пассивных соединений?
Заранее спасибо!!!

Автор: Girder 26.7.2005, 15:51
Перечислить соединения и посмотреть какие в них номера забиты(
см. пост RAdmin-а). Одно но... в соединение номеров может и не быть... smile

Автор: Олег_Игоревич 28.7.2005, 18:11
Уважаемый Girder ! Не могли бы вы привести пример просмотра телефона в режиме off-line!
А то у меня вроде компилиться , но потом выдает ошибку!
Заранее спасибо... smile

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)