Не. Вы меня не поняли..
Мне надо примостырить только вот это!!
/// Выбор каталога.
function SelectDirPlus(hWnd: HWND; const Caption: string; const Root: WideString): String;
var
WindowList: Pointer;
BrowseInfo : TBrowseInfo;
Buffer: PChar;
RootItemIDList, ItemIDList: PItemIDList;
ShellMalloc: IMalloc;
IDesktopFolder: IShellFolder;
Eaten, Flags: LongWord;
Cmd: Boolean;
begin
FillChar( BrowseInfo, SizeOf( BrowseInfo ), 0 );
if ( ShGetMalloc( ShellMalloc ) = S_OK ) and ( ShellMalloc <> nil ) then
begin
Buffer := ShellMalloc.Alloc( MAX_PATH );
try
RootItemIDList := nil;
if Root <> '' then
begin
SHGetDesktopFolder( IDesktopFolder );
IDesktopFolder.ParseDisplayName( hWnd, nil,
POleStr( Root ), Eaten, RootItemIDList, Flags );
end;
with BrowseInfo do
begin
hwndOwner := hWnd;
pidlRoot := RootItemIDList;
pszDisplayName := Buffer;
lpfn := BrowseCallbackProc;
lpszTitle := PChar( Caption );
ulFlags := BIF_RETURNONLYFSDIRS or $0040 or BIF_EDITBOX or BIF_STATUSTEXT;
end;
WindowList := DisableTaskWindows( 0 );
try
ItemIDList := ShBrowseForFolder( BrowseInfo );
finally
EnableTaskWindows( WindowList );
end;
Cmd := ItemIDList <> nil;
if Cmd then
begin
ShGetPathFromIDList( ItemIDList, Buffer );
ShellMalloc.Free( ItemIDList );
Result:= Buffer;
end;
finally
ShellMalloc.Free( Buffer );
end;
end;
end;
OpenDialog никатит никак!!
Мне надо в строку только каталог..
Мне вообще только каталог надо.
Потому что я файл копирую из плейлиста..
Мне ненадо просто файл копировать, это я и сам знаю как.
Мне надо выбрать только каталог..
С опендиалогом я сам делал нормально, но эта нгадость ну никак недает форму открыть.. Как буд то все блокирует после себя.
|