调用GetComputerName函数
procedure TForm1.Button1Click(Sender: TO b j e c t ) ;
var
ComputerName: PChar;
size: DWord ;
begin
  GetMem(ComputerName , 255 ) ;
  size := 255 ;
  // 获取计算机名称
  if GetComputerName(ComputerName,size)=False then
  begin
    MessageBox(Handle ,'获取计算机名称失败。' , '错误' , MB_OK  MB_ICONERROR) ;
    FreeMem(ComputerName) ;
    Exit ;
  end;
  Edit1.Text := ComputerName ;
  FreeMem(ComputerName);
end;

解决方案 »

  1.   

    同样设置计算机名可以用
    SetComputerName(ComputerName)
      

  2.   

    试问gethostname如何用?
    我不懂,最好有代码。
      

  3.   

    给你一个例子,不过只是其中的某一行代码而已,呵呵。(来自Kingron的delphi猛料)
    将某一主机域名解析为IP地址。
    使用 WinSock 单元;
    过程如下:
    function HostToIP(Name: string; var Ip: string): Boolean;
    var
      wsdata : TWSAData;
      hostName : array [0..255] of char;
      hostEnt : PHostEnt;
      addr : PChar;
    begin
      WSAStartup ($0101, wsdata);
      try
        gethostname (hostName, sizeof (hostName));{就是这一行了,看见了吗?}
        StrPCopy(hostName, Name);
        hostEnt := gethostbyname (hostName);
        if Assigned (hostEnt) then
          if Assigned (hostEnt^.h_addr_list) then begin
            addr := hostEnt^.h_addr_list^;
            if Assigned (addr) then begin
              IP := Format ('%d.%d.%d.%d', [byte (addr [0]),
              byte (addr [1]), byte (addr [2]), byte (addr [3])]);
              Result := True;
            end
            else
              Result := False;
          end
          else
            Result := False
        else begin
          Result := False;
        end;
      finally
        WSACleanup;
      end
    end; 测试时请在在线状态。测试代码:
    var
    IP: string;
    DNS: string;
    begin
      DNS := InputBox('输入DNS域名', '主机名称:', '');
      if HostToIp(DNS, IP) then showmessage(IP);
    end;
    作者:Latfi Baran我测试Kingron给出的用法时,hostEnt老是=nil。
    后来我在用gethostbyname(...)之前,加入WSAStartup(...),终于一切OK。
    Winsock单元中没有getaddressbyname()