通行证│用户名: 密码: 验证码: 验证码,看不清楚?请点击刷新验证码 电信网通铁通移动   在线
资源搜索:
热门搜索:Linux VB C语言 PhotoShop Flash TCP/IP
   首页 | 文章 | 软件 | 动画 | 资源 | 励志 | 骗术 | 论坛 | 邮箱 | 会员中心 | 军事 | 科技 | 博客 | 图片 | 商城 | 最新更新 | 800g资源 | 爱心黑客
您现在的位置: 爱国者黑客 >> 资源 >> 程序设计 >> Delphi语言 >> 编程技巧 >> 文章正文
用Delphi获取本地计算机名称和IP地址
责任编辑:ncic   更新日期:2007-4-3

  本程序介绍如何获取本地计算机的名称和IP地址。

  向窗体上添加两个TLabel组件、两个TEdit组件和一个TButton组件,设计完成的主界面如图1所示。

  图1 主界面

  首先在程序的uses段中添加对WinSock的引用,然后添加一个GetHostName自定义函数,在其中调用GetComputerName函数获取计算机名称,响应代码如下:

  function TfrmMain.GetHostName:String;
 var
  ComputerName: array[0..MAX_COMPUTERNAME_LENGTH+1] of char;
  Size: Cardinal;
 begin
  result:='';
  Size := MAX_COMPUTERNAME_LENGTH+1;
  GetComputerName(ComputerName, Size);
  Result:=StrPas(ComputerName);
end;

  添加一个NameToIP自定义函数,在其中调用GetHostByName函数根据计算机名称获取计算机的IP地址,响应代码如下:

  function TfrmMain.NameToIP(Name:string):String;
 var
  WSAData: TWSAData;
  HostEnt: PHostEnt;
 begin
  result:='';
  WSAStartup(2, WSAData);
  HostEnt := GetHostByName(PChar(Name));
  if HostEnt <> nil then
  begin
   with HostEnt^ do
    result:= Format('%d.%d.%d.%d',[Byte(h_addr^[0]), Byte(h_addr^[1]),Byte(h_addr^[2]), Byte(h_addr^[3])]);
  end;
  WSACleanup;
 end;

  程序代码如下:

  unit Unit1;
interface
uses
Windows, Messages, Sys Utils, Variants, Classes, Graphics, Controls, Forms,Dialogs, StdCtrls, WinSock;
 type
  TfrmMain = class(TForm)
  btnStart: TButton;
  edtIP: TEdit;
  edtName: TEdit;
  Label1: TLabel;
  Label2: TLabel;
  function GetHostName:String;
  procedure btnStartClick(Sender: TObject);
  function NameToIP(Name:string):String;
  private
   { Private declarations }
  public
   { Public declarations }
 end;
 var
  frmMain: TfrmMain;
  implementation
  {$R *.dfm}
  function TfrmMain.GetHostName:String;
 var
  ComputerName: array[0..MAX_COMPUTERNAME_LENGTH+1] of char;
  Size: Cardinal;
 begin
  result:='';
  Size := MAX_COMPUTERNAME_LENGTH+1;
  GetComputerName(ComputerName, Size);
  Result:=StrPas(ComputerName);
 end;
 procedure TfrmMain.btnStartClick(Sender: TObject);
 begin
  edtName.Text:=GetHostName;
  edtIP.Text:=NameToIP(edtName.Text);
 end;
 function TfrmMain.NameToIP(Name:string):String;
 var
  WSAData: TWSAData;
  HostEnt: PHostEnt;
 begin
  result:='';
  WSAStartup(2, WSAData);
  HostEnt := GetHostByName(PChar(Name));
  if HostEnt <> nil then
  begin
   with HostEnt^ do
   result:= Format('%d.%d.%d.%d',[Byte(h_addr^[0]), Byte(h_addr^[1]),
   Byte(h_addr^[2]), Byte(h_addr^[3])]);
  end;
  WSACleanup;
 end;
end.

  • 上一篇文章:
  • 下一篇文章:
  • 热门文章
    Olldbg常见问题
    汇编语言的艺术(组合语言的艺术)--观
    汇编语言的艺术(组合语言的艺术)--准
    汇编语言的艺术(组合语言的艺术)--基
    汇编语言的艺术(组合语言的艺术)--基
    汇编语言---程式设计 (4)
    虚拟8086模式
    SYS命令使用说明
    javascript + CSS 实现动态菜单显
    推荐文章
    自制Windows XP SP2自动安装光盘
    SQLServer注入工具改进版 v1.02
    使用photoshop CS进行自然美肤
    Photoshop绘制诺基亚手机
    PHOTOSHOP制作秋日之梦
    PHOTOSHOP鼠绘名模王爱萍
    Photoshop制作晶莹飞溅的水珠
    教你用PHOTOSHOP做放大镜
    鼠绘美女及服装修画全过程