获取多网卡IP地址(D7~XE5)和本机计算机名称
2014-01-02 15:53
204 查看
方法一:D2010以前版本,以DELPHI7为例
unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls,WinSock, Menus; type TForm1 = class(TForm) memo1: TMemo; Button1: TButton; procedure Button1Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation {$R *.dfm} function MYComputerName: string; var FStr: PChar; FSize: Cardinal; begin FSize := 255; GetMem(FStr, FSize); Windows.GetComputerName(FStr, FSize); Result := FStr; FreeMem(FStr); end; function GetLocalIpList(var IpList: TStringList): Integer; type TaPInAddr = array[0..10] of PInAddr; PaPInAddr = ^TaPInAddr; var HostName: array[0..MAX_PATH] of Char; NameLen: Integer; WSData: TWSAData; lpHostEnt: PHostEnt; I: Integer; pptr: PaPInAddr; begin Result := 0; if WSAStartup(MakeWord(2, 0), WSData) <> 0 then Exit; try NameLen := sizeof(HostName); fillchar(HostName, NameLen, 0); NameLen := GetHostName(HostName, NameLen); if NameLen = SOCKET_ERROR then Exit; lpHostEnt := GetHostByName(HostName); if lpHostEnt = nil then Exit; I := 0; pPtr := PaPInAddr(lpHostEnt^.h_addr_list); IpList.Clear; while pPtr^[I] <> nil do begin IpList.ADD(inet_ntoa(pptr^[I]^)); Inc(I); end; Result := IpList.Count; finally WSACleanup; end; end; procedure TForm1.Button1Click(Sender: TObject); var IpList1: TStringList; begin IpList1 := TStringList.Create; GetLocalIpList(IpList1); self.memo1.Lines.Text := IpList1.Text; IpList1.Free; end; end.方法二:DELPHI2010以后版本,以XE5为例
unit Unit1; interface uses Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics, Vcl.Controls, Vcl.Forms, Vcl.Dialogs, winsock, sButton, StdCtrls, sMemo; type TForm1 = class(TForm) memo1: TMemo; Button1: TButton; procedure Button1Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation {$R *.dfm} function MYComputerName: string; var FStr: PChar; FSize: Cardinal; begin FSize := 255; GetMem(FStr, FSize); Winapi.Windows.GetComputerName(FStr, FSize); Result := FStr; FreeMem(FStr); end; function GetLocalIpList(var IpList: TStringList): Integer; type TaPInAddr = array[0..10] of PInAddr; PaPInAddr = ^TaPInAddr; var HostName: array[0..MAX_PATH] of AnsiChar; NameLen: Integer; WSData: TWSAData; lpHostEnt: PHostEnt; I: Integer; pptr: PaPInAddr; begin Result := 0; if WSAStartup(MakeWord(2, 0), WSData) <> 0 then Exit; try NameLen := sizeof(HostName); fillchar(HostName, NameLen, 0); NameLen := GetHostName(HostName, NameLen); if NameLen = SOCKET_ERROR then Exit; lpHostEnt := GetHostByName(HostName); if lpHostEnt = nil then Exit; I := 0; pPtr := PaPInAddr(lpHostEnt^.h_addr_list); IpList.Clear; while pPtr^[I] <> nil do begin IpList.ADD(inet_ntoa(pptr^[I]^)); Inc(I); end; Result := IpList.Count; finally WSACleanup; end; end; procedure TForm1.Button1Click(Sender: TObject); var IpList1: TStringList; begin IpList1 := TStringList.Create; GetLocalIpList(IpList1); self.memo1.Lines.Text := IpList1.Text; IpList1.Free; end; end.
相关文章推荐
- C#中获取CPU序列号、网卡Mac地址、IP地址、硬盘序列号、登录用户名、PC类型、计算机名称、物理内存
- c#中获取cpu序列号、网卡mac地址、ip地址、硬盘序列号、登录用户名、pc类型、计算机名称、物理内存
- c#中获取cpu序列号、网卡mac地址、ip地址、硬盘序列号、登录用户名、pc类型、计算机名称、物理内存
- C#中获取CPU序列号、网卡Mac地址、IP地址、硬盘序列号、登录用户名、PC类型、计算机名称、物理内存,Singleton模式
- C#中获取CPU序列号、网卡Mac地址、IP地址、硬盘序列号、登录用户名、PC类型、计算机名称、物理内存
- c#中获取cpu序列号、网卡mac地址、ip地址、硬盘序列号、登录用户名、pc类型、计算机名称、物理内存
- c#中获取cpu序列号、网卡mac地址、ip地址、硬盘序列号、登录用户名、pc类型、计算机名称、物理内存 【转载】
- c#中获取cpu序列号、网卡mac地址、ip地址、硬盘序列号、登录用户名、pc类型、计算机名称、物理内存
- c#中获取cpu序列号、网卡mac地址、ip地址、硬盘序列号、登录用户名、pc类型、计算机名称、物理内存
- c#中获取cpu序列号、网卡mac地址、ip地址、硬盘序列号、登录用户名、pc类型、计算机名称、物理内存
- c#中获取cpu序列号、网卡mac地址、ip地址、硬盘序列号、登录用户名、pc类型、计算机名称、物理内存
- c#中获取cpu序列号、网卡mac地址、ip地址、硬盘序列号、登录用户名、pc类型、计算机名称、物理内存 【转载】
- javascript获取客户端网卡MAC地址和IP地址和计算机名
- 获取计算机的名称和IP地址
- 超强获取计算机信息类(可获取cpu序列号,网卡地址,ip地址,硬盘id,登录系统用户,计算机名等等)
- java获取当前操作系统名称以及各系统的本机网卡地址
- 如何在.net中获取电脑名称,IP地址,用户名,计算机所在域名(转载)
- C#获取计算机MAC地址,IP地址,以及计算机名称
- javascript获取客户端网卡MAC地址和IP地址和计算机名
- linux下qt根据网卡名称获取ip地址