function LIP : string; 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; 网卡就不好办了,好像DEMO里面提供了
function NBGetAdapterAddress : String ; //============================================================================= //Returns adapter card address. //============================================================================= var NCB : TNCB ; // Netbios control block //NetBios¿ØÖÆ¿é ADAPTER : TADAPTERSTATUS ; // Netbios adapter status//È¡Íø¿¨×´Ì¬ LANAENUM : TLANAENUM ; // Netbios lana intIdx : Integer ; // Temporary work value//ÁÙʱ±äÁ¿ cRC : Char ; // Netbios return code//NetBios·µ»ØÖµ strTemp : String ; // Temporary string//ÁÙʱ±äÁ¿ begin // Initialize Result := '' ; try // Zero control blocl ZeroMemory(@NCB,SizeOf(NCB)) ; // Issue enum command NCB.ncb_command := Chr(NCBENUM) ; //cRC := NetBios(@NCB) ;//Modify by Gale NetBios(@NCB); // Reissue enum command NCB.ncb_buffer := @LANAENUM ; NCB.ncb_length := SizeOf(LANAENUM) ; cRC := NetBios(@NCB) ; if Ord(cRC)<>0 then exit ; // Reset adapter ZeroMemory(@NCB,SizeOf(NCB)) ; NCB.ncb_command := Chr(NCBRESET) ; NCB.ncb_lana_num := LANAENUM.lana[0] ; cRC := NetBios(@NCB) ; if Ord(cRC)<>0 then exit ; // Get adapter address ZeroMemory(@NCB,SizeOf(NCB)) ; NCB.ncb_command := Chr(NCBASTAT) ; NCB.ncb_lana_num := LANAENUM.lana[0] ; StrPCopy(NCB.ncb_callname,'*') ; NCB.ncb_buffer := @ADAPTER ; NCB.ncb_length := SizeOf(ADAPTER) ; //cRC := NetBios(@NCB) ;//Modify by Gale remove Hint:'cRC' never used NetBios(@NCB); // Convert it to string strTemp := HexBL(Byte(ADAPTER.Adapter_Address[0])); for intIdx := 1 to 5 do strTemp := strTemp+':'+HexBL(Byte(ADAPTER.adapter_address[intIdx])); Result := strTemp ; finally end ; end ;
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;
网卡就不好办了,好像DEMO里面提供了
//=============================================================================
//Returns adapter card address.
//=============================================================================
var
NCB : TNCB ; // Netbios control block //NetBios¿ØÖÆ¿é
ADAPTER : TADAPTERSTATUS ; // Netbios adapter status//È¡Íø¿¨×´Ì¬
LANAENUM : TLANAENUM ; // Netbios lana
intIdx : Integer ; // Temporary work value//ÁÙʱ±äÁ¿
cRC : Char ; // Netbios return code//NetBios·µ»ØÖµ
strTemp : String ; // Temporary string//ÁÙʱ±äÁ¿
begin
// Initialize
Result := '' ; try
// Zero control blocl
ZeroMemory(@NCB,SizeOf(NCB)) ; // Issue enum command
NCB.ncb_command := Chr(NCBENUM) ;
//cRC := NetBios(@NCB) ;//Modify by Gale
NetBios(@NCB); // Reissue enum command
NCB.ncb_buffer := @LANAENUM ;
NCB.ncb_length := SizeOf(LANAENUM) ;
cRC := NetBios(@NCB) ;
if Ord(cRC)<>0 then
exit ; // Reset adapter
ZeroMemory(@NCB,SizeOf(NCB)) ;
NCB.ncb_command := Chr(NCBRESET) ;
NCB.ncb_lana_num := LANAENUM.lana[0] ;
cRC := NetBios(@NCB) ;
if Ord(cRC)<>0 then
exit ; // Get adapter address
ZeroMemory(@NCB,SizeOf(NCB)) ;
NCB.ncb_command := Chr(NCBASTAT) ;
NCB.ncb_lana_num := LANAENUM.lana[0] ;
StrPCopy(NCB.ncb_callname,'*') ;
NCB.ncb_buffer := @ADAPTER ;
NCB.ncb_length := SizeOf(ADAPTER) ;
//cRC := NetBios(@NCB) ;//Modify by Gale remove Hint:'cRC' never used
NetBios(@NCB); // Convert it to string
strTemp := HexBL(Byte(ADAPTER.Adapter_Address[0]));
for intIdx := 1 to 5 do
strTemp := strTemp+':'+HexBL(Byte(ADAPTER.adapter_address[intIdx]));
Result := strTemp ;
finally
end ;
end ;
HexBl????????
是什么函数?
要加放哪个单元文件才能用啊,,
我在Delphi帮助和 MSDN 里都打不到啊