Модераторы: Snowy, Poseidon, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Delphi и PPTP, Получить список PPTP соединений 
:(
    Опции темы
hooster
Дата 30.12.2009, 17:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 2
Регистрация: 30.12.2009

Репутация: нет
Всего: нет



Здравствуйте.
У меня есть задача получить список созданных VPN соединений (т.е. все которые есть в Сетевых Подключениях)
Покопался в сети, понял что нужно использовать RAS.
По идее все что мне нужно должен выдавать код:
Код

var
  EntryCount, BufSize: longint;       //LBRASName: TListBox;
  Result: LongInt;
  Entryes: lpRasEntryName;
  i: integer;
begin
//  Осуществляем поиск настроенных соединений и заполняем ими список.
  Result := ERROR_SUCCESS;
  Entryes := nil;
  EntryCount := 0;
  bufsize := 0;
  try
    LBRASName.Items.BeginUpdate;
    LBRASName.Items.Clear;

//Проводим поиск сохранённых соединений
    // Определяем размер буфера
    GetMem(Entryes, SizeOf(TRASEntryName));
    FillChar(Entryes^, SizeOf(TRASEntryName), 0);
    Entryes^.dwSize := SizeOf(TRASEntryName);
    Result := RasEnumEntries(nil, nil, Entryes, BufSize, EntryCount);
    if Result = ERROR_BUFFER_TOO_SMALL then
    begin
      FillChar(Entryes^, SizeOf(TRASEntryName), 0);
      FreeMem(Entryes, SizeOf(TRASEntryName));

      //Выделяем необходимую память
      GetMem(Entryes, SizeOf(TRASEntryName)*EntryCount);
      if Entryes <> nil then
      begin
        //первая структура RASEntryName должна содержать размер всей структуры
        FillChar(Entryes^, SizeOf(TRASEntryName)*EntryCount, 0);
        Entryes^.dwSize := SizeOf(TRASEntryName);

        //Получаем список соединений
        Result := RasEnumEntries(nil, nil, Entryes, bufSize, EntryCount);
        if Result = ERROR_SUCCESS then
        begin
          // Данные успешно полученны
          for i := 0 to EntryCount-1 do
          begin
            LBRASName.Items.Add(Entryes^.szEntryName);
            Inc(Entryes);
          end;
        end;
        Dec(Entryes, EntryCount);

        FillChar(Entryes^, SizeOf(TRASEntryName)*EntryCount, 0);
        FreeMem(Entryes, SizeOf(TRASEntryName)*EntryCount);
      end
      else
        ShowMessage('Не получилось выделить память');
    end;
  finally
    LBRASName.Items.EndUpdate;
  end;

Так вот тут после первой строки 
Код

Result := RasEnumEntries(nil, nil, Entryes, BufSize, EntryCount);

 получаю ошибку с номером 0, вместо 603 BUFFER TO SMALL. 
Кто с таким сталкивался подскажите где копать.
PM MAIL   Вверх
~FoX~
Дата 31.12.2009, 15:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


НЕ рыжий!!!
****


Профиль
Группа: Участник Клуба
Сообщений: 2819
Регистрация: 8.10.2003
Где: Зеленоград

Репутация: 3
Всего: 68



hooster, Много мороки как то... Есть же пространство имен оболочки 

Код

uses ShlObj, ShellAPI, ActiveX;

//.........................
var
   pShell, ShellFolder: IShellFolder;
   pidl: PITEMIDLIST;
   PMalloc: IMalloc;
   sName: string;
   EnumIDList: IEnumIDList;
   pceltFetched: ULONG;
   lpName: TStrRet;
   slDirectories: TStringList;

 begin
   slDirectories := TStringList.Create;
   try
     SHGetDesktopFolder(ShellFolder);
     SHGetSpecialFolderLocation(0, CSIDL_CONNECTIONS, pidl);
     SHGetMalloc(PMalloc);
     ShellFolder.BindToObject(pidl, nil, IID_IShellFolder, Pointer(pShell));
     pShell.EnumObjects(0, SHCONTF_NONFOLDERS or SHCONTF_FOLDERS, EnumIDList);
     while EnumIDList.Next(1,pidl, pceltFetched) = S_ok do begin
       pceltFetched := 0;
       lpName.uType := 0;
       pShell.GetDisplayNameOf(pidl, SHGDN_INCLUDE_NONFILESYS, lpName);
       sName := lpName.pOleStr;
       slDirectories.Add(sName);
     end;
     Memo1.Lines.Assign(sldirectories);
   finally
     pMalloc._Release;
     pMalloc := nil;
     slDirectories.Free;
   end;
end;



--------------------
user posted image
…множественность никогда не следует полагать без необходимости…
PM MAIL WWW ICQ Jabber   Вверх
hooster
Дата 1.1.2010, 21:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 2
Регистрация: 30.12.2009

Репутация: нет
Всего: нет



Попробовал, таким образом я получаю список всех соединений, а интересует именно только соединения  ВПН, как я тут их тип то определю?

Это сообщение отредактировал(а) hooster - 1.1.2010, 21:33
PM MAIL   Вверх
developer2007
Дата 9.1.2010, 14:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 112
Регистрация: 5.11.2007

Репутация: нет
Всего: -2



~FoX~, 
хороший пример, а таким способом можно управлять подключениями?
--------------------
У настоящего програмёра прога пишется на асме с использованием натив апи 
PM MAIL   Вверх
~FoX~
Дата 10.1.2010, 15:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


НЕ рыжий!!!
****


Профиль
Группа: Участник Клуба
Сообщений: 2819
Регистрация: 8.10.2003
Где: Зеленоград

Репутация: 3
Всего: 68



developer2007, Нет, но в известной степени ты можешь сделать с ними все что и с другими объектами файловой системы...

Это сообщение отредактировал(а) ~FoX~ - 10.1.2010, 15:12


--------------------
user posted image
…множественность никогда не следует полагать без необходимости…
PM MAIL WWW ICQ Jabber   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Сети"
Snowy
Poseidon
MetalFan

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делится вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи

Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Snowy, Poseidon, MetalFan.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Сети | Следующая тема »


 




[ Время генерации скрипта: 0.0432 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.