*** 加急 ***, 如何用delphi 调出, 浏览网络计算机的对话框, 并得到返回值!(有点像, “网络邻居”)请指点!  不胜感激!  绝对给分!

解决方案 »

  1.   

    function ComputerName: String;
    var
      BrowseInfo: TBrowseInfo;
      ItemIDList: PItemIDList;
      ComputerName: array[0..MAX_PATH] of Char;
      Title: string;
      WindowList: Pointer;
      R: Boolean;
    begin
      if Failed(SHGetSpecialFolderLocation(Application.Handle, CSIDL_NETWORK, ItemIDList)) then
        raise Exception.Create('網絡出錯,請設置网絡!');
      FillChar(BrowseInfo, SizeOf(BrowseInfo), 0);
      BrowseInfo.hwndOwner := Application.Handle;
      BrowseInfo.pidlRoot := ItemIDList;
      BrowseInfo.pszDisplayName := ComputerName;
      Title := '選擇計算機名稱:';
      BrowseInfo.lpszTitle := PChar(Pointer(Title));
      BrowseInfo.ulFlags := BIF_BROWSEFORCOMPUTER;
      WindowList := DisableTaskWindows(0);
      try
        R := SHBrowseForFolder(BrowseInfo) <> nil;
      finally
        EnableTaskWindows(WindowList);
      end;
      if R then Result := ComputerName;
    end;procedure TForm1.Button1Click(Sender: TObject);
    begin
      label1.Caption := ComputerName;
    end;
      

  2.   

    function  BrowseForComputer(const  winhandle  :  THANDLE;  const  title  :  string)  :  string;      //浏览网络中的机子
    var
      BrowseInfo  :  TBrowseInfo;
      IDRoot      :  PItemIDList;
      Path        :  array[0..MAX_PATH]  of  Char;
    begin
         SHGetSpecialFolderLocation(winHandle,  CSIDL_NETWORK,  IDRoot);
         ZeroMemory(@BrowseInfo,  SizeOf(TBrowseInfo));
         ZeroMemory(@path,  MAX_PATH);
         BrowseInfo.hwndOwner  :=  winhandle;
         BrowseInfo.pidlRoot  :=  IDRoot;
         BrowseInfo.lpszTitle  :=  PChar(title);
         BrowseInfo.pszDisplayName  :=  @path;
         BrowseInfo.ulFlags  :=  BIF_BROWSEFORCOMPUTER;
         SHBrowseForFolder(BrowseInfo);
         result := strpas(path) ;
    end;procedure Tform.Button1Click(Sender: TObject);
    begin
         ComboBox1.Text :=  BrowseForComputer(Form1.Handle,'Select a Computer') ;
         //Button2Click(Sender);
    end;