type
TForm1 = class(TForm)
Button1: TButton;
Memo1: TMemo;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
LpRasDevInfo = ^TRasDevInfo;
TRasDevInfo = record
dwSize : Longint;
szDeviceType : Array[0..RAS_MaxDeviceType] of AnsiChar;
szDeviceName : Array[0..RAS_MaxDeviceName] of AnsiChar;
end;
function RasEnumDevices(lpRasDevInfo :LpRasDevInfo;
lpcb: LPDWORD;lpcdevices: LPDWORD): DWORD;
stdcall; external 'RASAPI32.dll' name 'RasEnumDevicesA';
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
var
buffer: Pointer;
devices: LPRasDevInfo;
devSize, ndevs: Integer;
begin
devSize := 0;
ndevs := 0;
if RasEnumDevices(nil, @devSize, @ndevs) <> ERROR_BUFFER_TOO_SMALL then
ShowMessage('RasEnumDevices failed.');
buffer := AllocMem(devSize);
try
devices := buffer;
devices^.dwSize := SizeOf(TRasDevInfo);
if RasEnumDevices(buffer, @devSize, @ndevs) = 0 then
begin
while ndevs > 0 do
begin
if string(devices^.szDeviceType)='modem' then
Memo1.Lines.Add(Format('%s=%s', [devices^.szDeviceName, devices^.szDeviceType]));