各位网友:
   我有一个技术问题,就是如何在delphi中得到计算机的名字;我曾经用winsock控件得到了计算机的名字,在winme,win2000/xp下运行正常,可是在win98运行出错,另外,我不知道delphi中winsock是否要另外有控件或dll,activex等类东西,还是windows系统自带,我的系统里装有delphi6,和visual studio6这个控件原本在delphi的activex组件板上没有,是我加进去的。我不知道,这个控件来自何方,敬请各位网友,指点一二!

解决方案 »

  1.   

    Win API
    GetComputerNameBOOL GetComputerName(    LPTSTR lpBuffer, // address of name buffer 
        LPDWORD nSize  // address of size of name buffer 
       );
      

  2.   

    function get_name:string;
    var  ComputerName: PChar;  size: DWord;
    begin
        GetMem(ComputerName,255);
        size:=255;
        // 获取计算机名称
        if GetComputerName(ComputerName,size)=False then
             result:=''
        else
            result:=ComputerName;
        FreeMem(ComputerName);
    end;
      

  3.   

    var 
      ComputerName: PChar;
      Size: DWORD;
    begin   
      GetMem(ComputerName,255);
      Size:=255;
      GetComputerName(ComputerName,Size);
    end;
      

  4.   

    var 
      ComputerName: PChar;
      Size: DWORD;
    begin   
      GetMem(ComputerName,255);
      Size:=255;
      GetComputerName(ComputerName,Size);
      ShowMessage('计算机名:'+ComputerName);
    end;
      

  5.   

    坚决同意  joky1981() 
    我已试过,可以win2000
      

  6.   

    得到               Get
      计算机             Computer
    + 名                 Name
    -------------------------------------
     得到计算机名        GetComputerName()
      

  7.   

    两位网友:
      你们的方法在win98下是否行的通呢?在win2000下我的方法是取得win2000的系统变量,在msdn里有一个函数getv***(COMPUTERNAME)(抱歉,函数名我没有记全),在Delphi里对他进行了重载,可以得到计算机名,但在win98下,不行。GetComputerName(ComputerName,Size);这个函数,我也用过,可是都运行出错,报告内存某个地址不允许读写等等,不知是何原因!
      感谢二位!
      

  8.   

    function GetComputerName: string;
    var
      ComputerName: array[0..MAX_COMPUTERNAME_LENGTH + 1] of Char;
      nSize: DWORD;
    begin
      nSize := MAX_COMPUTERNAME_LENGTH + 1;
      FillChar(ComputerName, MAX_COMPUTERNAME_LENGTH, 0);
      Windows.GetComputerName(ComputerName, nSize);
      Result := ComputerName
    end;
      

  9.   

    win98肯定可以,都用了好几年了,没有问题的