不使用socket控件,怎样取得本机的IP?
有没有什么函数?
有没有什么函数?
解决方案 »
- delphi7做的程序,用delphi7直接build的.exe文件和InstallShield2009都会提示数据库无法初始化
- 哪有Delphi 7的完美汉化下载?
- 奇怪奇怪mssql vs access 的日期格式sql问题?
- D6企业版》的人力资源系统编译出错??? ??????????????
- 用SPCOMM控件控制GSM MODEM发送中文短信的问题
- 关于cxgrid画颜色的问题
- 怎样打开文本文件,并读去其中一行?
- 各位大虾:请问有没有打开mdb的代码?不知道表的情况下,有没有可能办法捕获表并打开???
- C++ Builder 与 Delphi 的比较
- GRID输入时,弹出辅助窗口。求助: [问题点数:100分]
- 如何删除ListBox1中的多项选中项?
- 使用teamsource时,经常会在开发机上产生拉级文件,并且一不小心就保存到备份机上面了,怎么样删除备份机上没用的文件?
type
TaPInAddr = array [0..10] of PInAddr;
PaPInAddr = ^TaPInAddr;
var
phe : PHostEnt;
pptr : PaPInAddr;
Buffer : array [0..63] of char;
I : Integer;
GInitData : TWSADATA;begin
WSAStartup($101, GInitData);
Result := '';
GetHostName(Buffer, SizeOf(Buffer));
phe :=GetHostByName(buffer);
if phe = nil then Exit;
pptr := PaPInAddr(Phe^.h_addr_list);
I := 0;
while pptr^[I] <> nil do begin
result:=StrPas(inet_ntoa(pptr^[I]^));
Inc(I);
end;
WSACleanup;
end;
给你一个示例:
var
wsaData: TWSADATA;
Addr: DWord;
ip_temp1: array[0..14] of char;
b: pchar;
begin
WSAStartup(MAKEWORD(1,1), wsaData);
Fillchar(ip_temp1, SizeOf(ip_temp1), 0);
CopyMemory(@ip_temp1, Pchar(Edit1.Text), length(Edit1.Text));
b := pchar(inttostr(i));
strcat(ip_temp1, b);
Addr := inet_addr(ip_temp1);
if GetHostByAddr(@addr, SizeOf(addr), PF_INET) <> nil then
showmessage(string(ip_temp1));
WSACleanup;
end;
主要思想是运行dos下面的ipconfig命令
var
temp:string;
begin
temp:='c:\temp.txt';
if fileexists(temp) then
deletefile(temp);
winexec(pchar('command.com /c ipconfig>'+temp,sw_hide);
if not fileexists(temp) then
sleep(2000);
memo1.lines.loadfromfile(temp);
end;
{ 当前计算机IP DG: 2002-03-23 }
Function gGetCurrentComputerIP:Pchar;stdcall;
type
TaPInAddr = array[0..10] of PInAddr; //需引用WinSock单元
PaPInAddr = ^TaPInAddr;
var
wsaData: TWSAData;
pheHostEnt: PHostEnt;
pptr: PaPInAddr;
I: integer;
ComputerName : Pchar;
begin
//功能注释: 返回的字符串值为当前计算机的IP地址
Result := '';
//返回计算机名称
ComputerName := gGetCurrentComputerName;
if WSAStartup(MakeWord(2,0),wsaData) <> 0 then
begin
WSACleanup;
Exit;
end;
pheHostEnt := GetHostByName(PChar(ComputerName));
if pheHostEnt = nil then
begin
WSACleanup;
Exit;
end;
pPtr := PaPInAddr(pheHostEnt^.h_addr_list);
I := 0;
while pPtr^[I] <> nil do
begin
Result := inet_ntoa(pptr^[I]^);
Inc(I);
end;
WSACleanup;
end;
{ 当前计算机名称 DG: 2002-03-23 }
Function gGetCurrentComputerName:Pchar;stdcall;
var
SPCName:Pchar;
MaxLen:Cardinal;
begin
//功能注释: 返回的字符串值为当前计算机名称
MaxLen:=MAX_COMPUTERNAME_LENGTH+1;
GetMem(SPCName,MaxLen);
GetComputerName(SPCName,MaxLen);
Result:=SPCName;
end;