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