Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/367.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Delphi7中,如何检索Internet连接名称列表?_Delphi_Proxy_Delphi 7 - Fatal编程技术网

在Delphi7中,如何检索Internet连接名称列表?

在Delphi7中,如何检索Internet连接名称列表?,delphi,proxy,delphi-7,Delphi,Proxy,Delphi 7,早些时候我问我该怎么做 但我的问题是,如果我想设置所有连接,那么必须列出连接名称列表。我在网上搜索,但找不到任何答案。您正在寻找函数。Delphi没有声明RASAPI函数,但是如果您有JVCL,就很容易。TJvRas32组件有一个PhoneBookTStrings属性,其中填充了可用的连接 以下是D2007测试代码(无错误检查): IIRC、RAS与拨号(调制解调器)连接有关(因此名称为电话簿),与当今最可能使用代理的大多数Internet访问方法无关。@Ken-它列举了Internet属性的连

早些时候我问我该怎么做

但我的问题是,如果我想设置所有连接,那么必须列出连接名称列表。我在网上搜索,但找不到任何答案。

您正在寻找函数。Delphi没有声明RASAPI函数,但是如果您有JVCL,就很容易。
TJvRas32
组件有一个
PhoneBook
TStrings属性,其中填充了可用的连接

以下是D2007测试代码(无错误检查):


IIRC、RAS与拨号(调制解调器)连接有关(因此名称为
电话簿
),与当今最可能使用代理的大多数Internet访问方法无关。@Ken-它列举了Internet属性的连接列表中的全部内容:直接连接、拨号到Internet/专用网络、,宽带,VPN。如果不是这个问题,那我就误解了。谢谢你的澄清。除了拨号,我不知道它对其他任何东西都有效(我记得几年前的事了,从那以后就再也没有看过它)。谢谢你的澄清。
const
  RAS_MaxEntryName = 256;
  RASBASE = 600;
  ERROR_BUFFER_TOO_SMALL = RASBASE + 3;
  ERROR_INVALID_SIZE = RASBASE + 32;

type
  PRasEntryName = ^TRasEntryName;
  TRasEntryName = record
    dwSize: Longint;
    szEntryName: array [0..RAS_MaxEntryName] of Char;
  end;

function RasEnumEntriesA(reserved: PChar; lpszPhonebook: PChar;
          lpRasEntryName: PRasEntryName; var lpcb: DWORD;
          var lpcEntries: DWORD): DWORD; stdcall; external 'RASAPI32.DLL';

procedure GetRasEntries(List: TStrings);
var
  RasEntryNames: array of TRasEntryName;
  Err, Size, Entries: DWORD;
  i: Integer;
begin
  List.Clear;
  SetLength(RasEntryNames, 1);
  Size := SizeOf(TRasEntryName);
  RasEntryNames[0].dwSize := Size;
  Err := RasEnumEntriesA(nil, nil, @RasEntryNames[0], Size, Entries);
  if (Err = ERROR_BUFFER_TOO_SMALL) and (Entries > 0) then begin
    Assert(Size = SizeOf(TRasEntryName) * Entries);
    SetLength(RasEntryNames, Entries);
    Err := RasEnumEntriesA(nil, nil, @RasEntryNames[0], Size, Entries);
    if Err = 0 then
      for i := 0 to Length(RasEntryNames) do
        List.Add(RasEntryNames[i].szEntryName);
  end else
    List.Add(RasEntryNames[0].szEntryName);
end;


procedure TForm1.Button1Click(Sender: TObject);
begin
  GetRasEntries(ListBox1.Items);
end;