1,请问怎么样得到本台电脑的所在的工作组或域(一般Setup程序中常常有),及Ip地址?
2。怎么样实现windows98里面的网上邻居的功能????(得到所有计算机的名称)

解决方案 »

  1.   

    得到局域网上所有计算机的名称unit Unit1;interfaceuses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, StdCtrls, Menus;type
      TForm1 = class(TForm)
        Button1: TButton;
        ListBox1: TListBox;
        procedure Button1Click(Sender: TObject);
      private
        { Private declarations }
      public
        { Public declarations }
      end;var
      Form1: TForm1;function FindComputers: DWORD; var 
      Computers: TStringList;
      const 
      MaxEntries = 250;
    implementation{$R *.dfm}
    function FindComputers: DWORD;var 
      EnumWorkGroupHandle, EnumComputerHandle: THandle; 
      EnumError: DWORD; 
      Network: TNetResource; 
      WorkGroupEntries, ComputerEntries: DWORD; 
      EnumWorkGroupBuffer, EnumComputerBuffer: array[1..MaxEntries] of TNetResource; 
      EnumBufferLength: DWORD; 
      I, J: DWORD; begin   Computers.Clear;   FillChar(Network, SizeOf(Network), 0); 
      with Network do 
      begin 
        dwScope := RESOURCE_GLOBALNET; 
        dwType := RESOURCETYPE_ANY; 
        dwUsage := RESOURCEUSAGE_CONTAINER; 
      end; 
       
      EnumError := WNetOpenEnum(RESOURCE_GLOBALNET, RESOURCETYPE_ANY, 0, @Network, EnumWorkGroupHandle);   if EnumError = NO_ERROR then 
      begin 
        WorkGroupEntries := MaxEntries; 
        EnumBufferLength := SizeOf(EnumWorkGroupBuffer); 
        EnumError := WNetEnumResource(EnumWorkGroupHandle, WorkGroupEntries, @EnumWorkGroupBuffer, EnumBufferLength);     if EnumError = NO_ERROR then 
        begin 
          for I := 1 to WorkGroupEntries do 
          begin 
            EnumError := WNetOpenEnum(RESOURCE_GLOBALNET, RESOURCETYPE_ANY, 0, @EnumWorkGroupBuffer[I], EnumComputerHandle); 
            if EnumError = NO_ERROR then 
            begin 
              ComputerEntries := MaxEntries; 
              EnumBufferLength := SizeOf(EnumComputerBuffer); 
              EnumError := WNetEnumResource(EnumComputerHandle, ComputerEntries, @EnumComputerBuffer, EnumBufferLength); 
              if EnumError = NO_ERROR then 
                for J := 1 to ComputerEntries do 
                  Computers.Add(Copy(EnumComputerBuffer[J].lpRemoteName, 3, Length(EnumComputerBuffer[J].lpRemoteName) - 2));
              WNetCloseEnum(EnumComputerHandle); 
            end; 
          end; 
        end; 
        WNetCloseEnum(EnumWorkGroupHandle); 
      end;   if EnumError = ERROR_NO_MORE_ITEMS then 
        EnumError := NO_ERROR; 
      Result := EnumError; end;procedure TForm1.Button1Click(Sender: TObject);
    begin
      FindComputers;
      ListBox1.Items.Text:=Computers.Text;
    end;initialization  Computers := TStringList.Create;finalization   Computers.Free;
    end.
      

  2.   

    gethostbyname ( const char FAR * name );
     gethostname (char FAR * name,int namelen);
    别忘了uses shellapi
      

  3.   

    //==============================================================================
    //取得客户端‘主机名’‘IP地址’************************************************
    //==============================================================================
    procedure GetClientInfo(var ClientName, IPAddress: string);
    var WSAData: TWSAData;
        HostEnt: PHostEnt;
    begin
      {no error checking...}
      WSAStartup(2, WSAData);
      SetLength(ClientName, 255);
      Gethostname(PChar(ClientName), 255);
      SetLength(ClientName, StrLen(PChar(ClientName)));
      HostEnt := GetHostByName(PChar(ClientName));
      with HostEnt^ do IPAddress := Format('%d.%d.%d.%d',[Byte(h_addr^[0]), Byte(h_addr^[1]), Byte(h_addr^[2]), Byte(h_addr^[3])]);
      WSACleanup;
    end;