Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как выбрать удаленный компьютер в диалоге [D6, Win2k]


AlexS76 ©   (2004-03-11 09:53:00) 

Господа! Надо в диалоге выбрать компьютер в сети и UNC имя получить как String.
SHBrowseForFolder - позволяет выбирать но строку выдает пустую, хотя если выбрать в диалоге директорию на удаленном компьютере все нормально работает.(естественно с флагом BIF_RETURNONLYFSDIRS).


Игорь Шевченко   (2004-03-11 14:56:00) [1]

BOOL SHGetPathFromIDList(          LPCITEMIDLIST pidl,
   LPTSTR pszPath
);

pidl -
Address of an item identifier list that specifies a file or directory location relative to the root of the namespace (the desktop).

Вроде, про компьютеры ничего не написано...


Игорь Шевченко   (2004-03-11 14:54:00) [2]


> при выборе удаленного компьютера SHGetPathFromIDList возвращает
> пустую строку


А к DisplayName приделать \\ спереди не поможет ?


AlexS76   (2004-03-11 14:30:00) [3]

Я Все понимаю - меня считают за придурка не умеющего читать хелпы. Но повторяю с флагом BIF_BROWSEFORCOMPUTER
при выборе удаленного компьютера SHGetPathFromIDList возвращает пустую строку. Я подозреваю что нужно пользоваться другой функцией но этот код работает только для директорий
var
TitleName : string;
Pidl,lpItemID : PItemIDList;
BrowseInfo : TBrowseInfo;
DisplayName : array[0..MAX_PATH] of char;
s:pchar;
begin
FillChar(BrowseInfo, sizeof(TBrowseInfo), #0);
BrowseInfo.hwndOwner := Form1.Handle;
BrowseInfo.pszDisplayName := @DisplayName;
TitleName := '???????? ???????';
SHGetSpecialFolderLocation(Form1.Handle, CSIDL_NETWORK, PIDL);
BrowseInfo.lpszTitle := PChar(TitleName);
s := StrAlloc(1024);
BrowseInfo.pidlRoot:=Pidl;
If Brws=0 then
       BrowseInfo.ulFlags := BIF_RETURNONLYFSDIRS

else
       BrowseInfo.ulFlags := BIF_BROWSEFORCOMPUTER;
LpItemID:= SHBrowseForFolder(BrowseInfo);
if lpItemId <> nil then
  If Brws=0 then begin
       SHGetPathFromIDList(lpItemID, s);
       result:=s;
       GlobalFreePtr(lpItemID);
       GlobalFreePtr(Pidl);
  end;
end;


clickmaker   (2004-03-11 12:06:00) [4]

BIF_BROWSEFORCOMPUTER


Наверх

Титульная страница Поиск, карта сайта Написать письмо