Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.11.14;
Скачать: CL | DM;

Вниз

Хочу выбрать компьютер, но приведённый код выдаёт пустую строку!   Найти похожие ветки 

 
Alexander ©   (2002-10-04 11:16) [0]

В чём может быть дело?

function OpenDirExecute(Title: string; var Dir: string): Boolean;
var
BI: TBrowseInfo;
Browse: PItemIdList;
DisplayName : array[0..MAX_PATH] of Char;
TempPath: array[0..MAX_PATH] of Char;
begin
Result := False;
ZeroMemory(@BI, SizeOf(TBrowseInfo));
BI.hwndOwner := Applet.Handle;

SHGetSpecialFolderLocation(Application.Handle, CSIDL_NETWORK, BI.pidlRoot);
try
BI.pszDisplayName := @DisplayName;
BI.lpszTitle := PChar(Title);
BI.ulFlags := BIF_BROWSEFORCOMPUTER or BIF_BROWSEINCLUDEFILES or BIF_SHAREABLE;
Browse := SHBrowseForFolder(BI);
if Browse <> nil then
begin
SHGetPathFromIDList(Browse, TempPath);
Dir := TempPath;
CoTaskMemFree(Browse);
Result := True;
end;
finally
CoTaskMemFree(BI.pidlRoot);
end;
end;


 
Marcus   (2002-10-04 11:41) [1]

Вот 100% работающий пример:

function BrowseForComputer(Handle: HWND; var ComputerName: String): boolean;
var
BrowseInfo: TBrowseInfo;
Buffer: PChar;
RootItemIDList, ItemIDList: PItemIDList;
ShellMalloc: IMalloc;
begin
Result := false;
FillChar(BrowseInfo, SizeOf(BrowseInfo), 0);
if (ShGetMalloc(ShellMalloc) = S_OK) and (ShellMalloc <> nil) then
begin
Buffer := ShellMalloc.Alloc(MAX_PATH);
try
SHGetSpecialFolderLocation(0, CSIDL_NETWORK, RootItemIDList);
with BrowseInfo do
begin
hwndOwner := Handle;
pidlRoot := RootItemIDList;
pszDisplayName := Buffer;
lpszTitle := "Выберите компьютер:";
ulFlags := BIF_BROWSEFORCOMPUTER;
end;
ItemIDList := SHBrowseForFolder(BrowseInfo);
if ItemIDList <> nil then
begin
ComputerName := Buffer;
ShellMalloc.Free(ItemIDList);
Result := true;
end;
finally
ShellMalloc.Free(Buffer);
end;
end;
end;



Страницы: 1 вся ветка

Текущий архив: 2002.11.14;
Скачать: CL | DM;

Наверх




Память: 0.46 MB
Время: 0.017 c
7-46157
Dark Hunter
2002-09-12 17:32
2002.11.14
Запуск службы от имени...


1-45848
SS Galicia
2002-11-05 03:51
2002.11.14
СКОТСКИЙ ВОПРОС


1-45895
irmantukas
2002-11-03 17:53
2002.11.14
GRID+CALENDAR


7-46152
Comwad
2002-09-06 13:16
2002.11.14
Как сделать точную временную задержку менее 55 миллисекунд?


1-45852
BALU1111
2002-11-05 12:23
2002.11.14
Работа с файлами