Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Работа с сетью в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 30.12.2009, 18:53   #1
shumer
Новичок
Джуниор
 
Регистрация: 30.12.2009
Сообщений: 1
По умолчанию Delphi список сетевых пожключений.

Здравствуйте.
Есть задача получить список сетевых подключений Windows.
Порылся в google нашел как такое сделать иcпользуя RAS
Вот мой код:
Код:
var
  EntryCount, BufSize: longint;       //LBRASName: TListBox;
  Result: LongInt;
  Entryes: lpRasDevInfoA;
  i: integer;
begin
//  Осуществляем поиск настроенных соединений и заполняем ими список.
  Result := ERROR_SUCCESS;
  Entryes := nil;
  EntryCount := 0;
  bufsize := 0;
 try
    LBRASName.Items.BeginUpdate;
    LBRASName.Items.Clear;

//Проводим поиск сохранённых соединений
    // Определяем размер буфера
    GetMem(Entryes, SizeOf(TRasDevInfo));
    FillChar(Entryes^, SizeOf(TRasDevInfo), 0);
    Entryes^.dwSize := SizeOf(TRasDevInfo);
    Result := RasEnumDevicesA(Entryes, BufSize, EntryCount);
    ShowMessage(IntToStr(Result));
    if Result = ERROR_BUFFER_TOO_SMALL then
    begin
      FillChar(Entryes^, SizeOf(TRasDevInfo), 0);
      FreeMem(Entryes, SizeOf(TRasDevInfo));
      //Выделяем необходимую память
      GetMem(Entryes, SizeOf(TRasDevInfo)*EntryCount);
      if Entryes <> nil then
      begin
        //первая структура RASEntryName должна содержать размер всей структуры
        FillChar(Entryes^, SizeOf(TRasDevInfo)*EntryCount, 0);
        Entryes^.dwSize := SizeOf(TRasDevInfo);

        //Получаем список соединений
        Result := RasEnumDevicesA(Entryes, bufSize, EntryCount);
        if Result = ERROR_SUCCESS then
        begin
          // Данные успешно полученны
          for i := 0 to EntryCount-1 do
          begin
            LBRASName.Items.Add(Entryes^.szDeviceName );
            ShowMessage(Entryes^.szDeviceName);
            Inc(Entryes);
          end;
        end;
        Dec(Entryes, EntryCount);
        FillChar(Entryes^, SizeOf(TRasDevInfo)*EntryCount, 0);
        FreeMem(Entryes, SizeOf(TRasDevInfo)*EntryCount);
      end
      else
        ShowMessage('Не получилось выделить память');
    end;
  finally
    LBRASName.Items.EndUpdate;
  end;
При выполнении RasEnumDevicesA получаю bwError = 603 т.е. как и должно быть что буфер слишком мал, дальше пытаюсь выделить память но выделить невозможно, т.к. EntryCount эта функция возвращает 0. В чем может быть бок?
shumer вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Анализаторы сетевых протоколов TDrive Софт 2 04.09.2009 06:32
Создание сетевых приложений в delphi martinenko Работа с сетью в Delphi 6 09.05.2009 20:23
Получить список сетевых принтеров Старовъръ Win Api 4 12.08.2008 17:06
По поводу зациты от DoS в сетевых приложениях Delphi... dukie Работа с сетью в Delphi 2 30.12.2007 22:37
скрытие сетевых соединений ch1pa Работа с сетью в Delphi 1 09.01.2007 13:45