procedure TForm1.Button1Click(Sender: TObject); var ClassName,TitleName:array[0..MAX_PATH-1] OF CHAR; begin gethostname(ClassName,MAX_PATH); showmessage(StrPas(className)); end;
通过IP地址得到机器名 function iptoname(ip:string):string; var WSAData:TWSAData; p:PHostEnt; InetAddr:dword; begin WSAStartup(2, WSAData); InetAddr:= inet_addr(PChar(IP)); try p:=GetHostByAddr(@InetAddr, Length(IP), PF_Inet); result:=p^.h_name; except result:=''; end; end;
好象叫GetComputerName()吧,记不清了
function GetComputerName: AnsiString; var lpBuffer: array[0..MAX_PATH] of char; dwSize: DWORD; begin dwSize:= MAX_PATH; if not Windows.GetComputerName(lpBuffer, dwSize) then raise Exception.Create(SysErrorMessage(GetLastError())); Result:= StrPas(lpBuffer); end;
石头_,你的方法的确有效,我想进一步弄明白,lpBuffer被定义为 array[0..MAX_PATH] of char;有没有可替代的方式,
var computername:pchar; size0:cardinal; procedure Form1.Formcreate(sender:Tobject); begin size0:=100; getmem(computername,size0); getcomputername(computername,size0); end;
function GetComputerName(lpBuffer: PChar; var nSize: DWORD)
int namelen
);
var ClassName,TitleName:array[0..MAX_PATH-1] OF CHAR;
begin
gethostname(ClassName,MAX_PATH);
showmessage(StrPas(className));
end;
function iptoname(ip:string):string;
var
WSAData:TWSAData;
p:PHostEnt;
InetAddr:dword;
begin
WSAStartup(2, WSAData);
InetAddr:= inet_addr(PChar(IP));
try
p:=GetHostByAddr(@InetAddr, Length(IP), PF_Inet);
result:=p^.h_name;
except
result:='';
end;
end;
var lpBuffer: array[0..MAX_PATH] of char;
dwSize: DWORD;
begin
dwSize:= MAX_PATH;
if not Windows.GetComputerName(lpBuffer, dwSize) then
raise
Exception.Create(SysErrorMessage(GetLastError()));
Result:= StrPas(lpBuffer);
end;
computername:pchar;
size0:cardinal;
procedure Form1.Formcreate(sender:Tobject);
begin
size0:=100;
getmem(computername,size0);
getcomputername(computername,size0);
end;