中国IT动力,最新最全的IT技术教程
最新100篇 | 推荐100篇 | 专题100篇 | 排行榜 | 搜索 | 在线API文档
首 页 | 程序开发 | 操作系统 | 软件应用 | 图形图象 | 网络应用 | 精文荟萃 | 教育认证 | 硬件维护 | 未整理篇 | 站长教程
ASP JS PHP工程 ASP.NET 网站建设 UML J2EESUN .NET VC VB VFP 网络维护 数据库 DB2 SQL2000 Oracle Mysql
服务器 Win2000 Office C DreamWeaver FireWorks Flash PhotoShop 上网宝典 CorelDraw 协议大全 网络安全 微软认证
硬件维护  CPU  主板  硬盘  内存  显卡  显示器  键盘鼠标  声卡音箱  打印机  机箱电源  BIOS  网卡  C#  Java  Delphi  vs.net2005
  当前位置:> 程序开发 > 编程语言 > Delphi > 综合文章
用Delphi获取本地计算机名称和IP地址
作者:未知 时间:2005-05-09 12:12 出处:Yesky 责编:chinaitpower
              摘要:暂无
  本程序介绍如何获取本地计算机的名称和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.

  保存文件,然后按F9键运行程序,程序运行的初始画面如图2所示。

  单击“开始”按钮,就会获取并显示本地计算机的名称和IP地址。程序运行结果如图3所示。


图2 程序运行的初始画面


图3 程序运行结果
关闭本页
 
首页 | 投资与合作 | 服务条款 | 隐私政策 | 收藏本站 | 设为首页 | 新用户注册 | 免责声明 | 使用帮助
Copyright ©2005-2008 chinaitpower.com All rights reserved. www.chinaitpower.com 版权所有