delphi获取本地IP地址

方法一:

3322获许本地外网地址:http://www.3322.org/dyndns/getip

VB获取计算机名称,内、外网IP,很简单,仅作示例。这些在编大软件时作为装饰。

Author:Minghacker

From:http://yxmhero1989.blog.163.com/

添加winsock控件,Inet控件

Private Declare Function ReleaseCapture Lib "user32" () As Long none窗体的移动
       Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hWnd As Long, ByVal wMsg As Long,ByVal wParam As Long, lParam As Any) As Long
       Private Const WM_SYSCOMMAND = &H112
       Private Const SC_MOVE = &HF010&
       Private Const HTCAPTION = 2
       Private Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
       ReleaseCapture
       ret& = SendMessage(Me.hWnd, WM_SYSCOMMAND, SC_MOVE + HTCAPTION, 0)
End Sub

Private Sub Form_Load()
Text1(0).Text = Winsock1.LocalHostName 必须添加winsock控件
Text1(1).Text = Winsock1.LocalIP 必须添加winsock控件
Text1(2).Text = Inet1.OpenURL("Http://www.3322.org/dyndns/getip") 必须添加Inet控件
End Sub

 

其中依靠winsock控件,Inet控件

内网IP获取:在Delphi6以上的版本中,有一个IdIPWatch控件,它的功能就是检测网络在线状态和获取

IP地址。此控件在Indy Misc页面。用IDIPwatch1.LocalIP。当然也可以用Winsock,我们择便捷用。

可以这样写、procedure TForm1.IP1Click(Sender: TObject);
       showmessage(IDIPwatch1.LocalIP)

end;
但是showmessage没额外参数,不能改标题,我们换做messagebox也很简单:

procedure TForm1.IP1Click(Sender: TObject);
var
 Wnd:HWND;
begin
  Wnd:=application.Handle;
  messagebox(Wnd,PChar(IDIPwatch1.LocalIP),PChar(InSun),MB_OK);
end;


外网Ip获取:

Delphi中用TIdHTTP控件 ,在Indy Clients页面。

  示例:
       Memo1.Lines.Text   :=   IdHTTP.Get(URL);   

或

showmessage(IdHTTP1.Get(http://www.3322.org/dyndns/getip));

所以我们的代码是:
procedure TForm1.IP2Click(Sender: TObject);

var
 Wnd:HWND;
begin
  Wnd:=application.Handle;
  messagebox(Wnd,PChar(IdHTTP1.Get(http://www.3322.org/dyndns/getip)),PChar(InSun),MB_OK);
end;

方法二:

朋友们在用Delphi编程序的时候,常常碰到需要在程序中获取自己的IP地址的情况。在以往的版本中,可以通过编写一段代码或函数实现这一功能。但有了Delphi 7,这个工作可以更简化了。利用控件只需一句代码,就可以非常方便地实现这一功能。

新建一Project1,在form1中添加控件statusbar1(Win32页)和控件IdIPWatch1(Indy Misc页)。接着设置好控件属性:在statusbar1的panels中添加0-TStatusPanel和1-TStatusPanel两项;IdIPWatch1的HistoryEnabled的属性设为False。

  编写代码:在TForm1.FormCreate(Sender: TObject)中加入以下代码:

statusbar1.Panels[1].Text:=IdIPWatch1.LocalIP;

  OK!按下F9功能键,运行程序,看一下窗口下边状态栏中是不是已经显示了本机的IP地址了?

  提示:若IdIPWatch1的HistoryEnabled的属性设为True,则会在程序退出时,自动生成一个文件(文件名为HistoryFileName属性设定的值),记录当前的IP地址。