Answer:
Please note that the program uses ras.pas and other header files which are available in the API library of delphi jedi site. The complete project having all the header files is being provided to the webmaster for update.
It displays the server and client IP every second on a label.
unit uMain;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, ExtCtrls;
type
TfrmMain = class(TForm)
lblIP: TLabel;
tmrUpdate: TTimer;
procedure tmrUpdateTimer(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
frmMain: TfrmMain;
implementation
uses Ras, RasError;
{$R *.DFM}
procedure GetDialUpIpAddress(var server, client: string);
var
RASPppIp: RASIP;
lpcp: DWORD;
ConnClientIP: array[0..RAS_MaxIpAddress] of Char;
ConnServerIP: array[0..RAS_MaxIpAddress] of Char;
Entries: PRasConn;
BufSize, NumberOfEntries, Res: DWORD;
RasConnHandle: THRasConn;
begin
New(Entries);
BufSize := Sizeof(Entries^);
ZeroMemory(Entries, BufSize);
Entries^.dwSize := Sizeof(Entries^);
Res := RasEnumConnections(Entries, BufSize, NumberOfEntries);
if Res = ERROR_BUFFER_TOO_SMALL then
begin
ReallocMem(Entries, BufSize);
ZeroMemory(Entries, BufSize);
Entries^.dwSize := Sizeof(Entries^);
Res := RasEnumConnections(Entries, BufSize, NumberOfEntries);
end;
try
if (Res = 0) and (NumberOfEntries > 0) then RasConnHandle := Entries.hrasconn else exit
finally
FreeMem(Entries);
end;
FillChar(RASPppIp, SizeOf(tagRASIP), 0);
RASPppIp.dwSize := SizeOf(tagRASIP);
lpcp := RASPppIp.dwSize;
if RasGetProjectionInfo(RasConnHandle,
RASP_PppIp, @RasPppIp, lpcp) = 0 then
begin
Move(RASPppIp.szServerIpAddress,
ConnServerIP,
SizeOf(ConnServerIP));
Server := ConnServerIP;
Move(RASPppIp.szIpAddress,
ConnClientIP,
SizeOf(ConnClientIP));
client := ConnClientIP;
end;
end;
procedure TfrmMain.tmrUpdateTimer(Sender: TObject);
var
ConnServerIP, ConnClientIP: string;
begin
GetDialUpIpAddress(ConnServerIP, ConnClientIP);
if ConnServerIP = '' then ConnServerIP := 'NA';
if ConnClientIP = '' then ConnClientIP := 'NA';
lblIP.Caption := Format('Server : %s'#13#10'Client : %s', [ConnServerIP, ConnClientIP])
end;
|