Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2002.09.12;
Скачать: [xml.tar.bz2];

Вниз

Почему я немогу найти спецпапку?   Найти похожие ветки 

 
Егор   (2002-08-27 15:33) [0]

Добрый день. В файле справки сказано, что с помощью функции SHGetSpecialFolderLocation можно найти следующие папки:

{
CSIDL_BITBUCKET
CSIDL_CONTROLS
CSIDL_DESKTOP
CSIDL_DESKTOPDIRECTORY
CSIDL_DRIVES
CSIDL_FONTS
CSIDL_NETHOOD
CSIDL_NETWORK
CSIDL_PERSONAL
CSIDL_PRINTERS
CSIDL_PROGRAMS
CSIDL_RECENT
CSIDL_SENDTO
CSIDL_STARTMENU
CSIDL_STARTUP
CSIDL_TEMPLATES
}

function GetSystemPath(Folder: Integer): string;
var
PIDL: PItemIDList;
Path: LPSTR;
AMalloc: IMalloc;
begin
Path := StrAlloc(MAX_PATH);
SHGetSpecialFolderLocation(Application.Handle, Folder, PIDL);
if SHGetPathFromIDList(PIDL, Path) then
Result := Path;
SHGetMalloc(AMalloc);
AMalloc.Free(PIDL);
StrDispose(Path);
end;

Label1.Caption := GetSystemPath(CSIDL_BITBUCKET);


Пытаясь найти папку Recycle bin (CSIDL_BITBUCKET) ничего не получаю и с некоторыми другими таже .... Что неправильно?


 
Ученик   (2002-08-27 16:01) [1]

uses
ActiveX, ShellApi, ShlObj;

type
TFolderType = (ftDesktop, ftRecycleBin, ftControlPanel, ftDesktopDir,
ftDrives, ftFavoriteURLs, ftFonts, ftNetwork, ftNetHoodDir,
ftDocumentDir, ftPrinters, ftPrograms, ftRecentDir, ftSendTo,
ftStartMenu, ftStartup, ftTemplates, ftFileSystem, ftCustom);

function GetFolderID(FolderType : TFolderType) : Integer;
const
CSIDL_CUSTOM = $EAFE;
FOLDERID : array[ftDesktop..ftCustom] of integer = (
CSIDL_DESKTOP, CSIDL_BITBUCKET, CSIDL_CONTROLS, CSIDL_DESKTOPDIRECTORY,
CSIDL_DRIVES, CSIDL_FAVORITES, CSIDL_FONTS, CSIDL_NETWORK, CSIDL_NETHOOD,
CSIDL_PERSONAL, CSIDL_PRINTERS, CSIDL_PROGRAMS, CSIDL_RECENT, CSIDL_SENDTO,
CSIDL_STARTMENU, CSIDL_STARTUP, CSIDL_TEMPLATES, CSIDL_DRIVES, CSIDL_CUSTOM
);
begin
Result := FOLDERID[FolderType]
end;

function ShellFolderName(FolderType : TFolderType) : string;
var
IShellMalloc : IMalloc;
IDesktopFolder : IShellFolder;
ItemIDList: PItemIDList;
StrRet: TStrRet;
begin
Result := "";
if (ShGetMalloc(IShellMalloc) = S_OK) and (IShellMalloc <> nil) then begin
if SHGetDesktopFolder(IDesktopFolder) = NOERROR then begin
if SHGetSpecialFolderLocation(0, GetFolderID(FolderType), ItemIDList) = NOERROR then try
if IDesktopFolder.GetDisplayNameOf(ItemIDList, SHGDN_FORPARSING, StrRet) = NOERROR then begin
case StrRet.uType of
STRRET_WSTR: Result := WideCharToString(StrRet.pOleStr);
STRRET_OFFSET: Result := PChar(UINT(ItemIDList) + StrRet.uOffset);
STRRET_CSTR: Result := StrRet.cStr;
end
end
finally
IShellMalloc.Free(ItemIDList);
end
end
end
end;


 
Егор   (2002-08-27 16:08) [2]

Спасибо.


 
Anatoly Podgoretsky   (2002-08-27 16:13) [3]

Ученик © (27.08.02 16:01)
Удобнее так писать и меньше ошибок будет в будущем

FOLDERID : array[TFolderType] of integer =


 
Ученик   (2002-08-27 16:22) [4]

>Anatoly Podgoretsky © (27.08.02 16:13)
Спасибо, исправил :-)


 
Егор   (2002-08-31 15:26) [5]

2Ученик and All

Мужики!!! Не работает. Вместо пути к папке Recycled выдает -
"Корзина".


 
Ученик   (2002-08-31 20:48) [6]

У меня выдает ::{645FF040-5081-101B-9F08-00AA002F954E}
Какая операционка ?


 
Егор   (2002-08-31 20:53) [7]

Win98

А как ты вызываешь? Может, я неправильно делаю.


 
Ученик   (2002-08-31 20:53) [8]

Edit1.Text := ShellFolderName(ftRecycleBin);


 
Егор   (2002-08-31 20:56) [9]

Всё правильно, но у меня пишет "Корзина".


 
Ученик   (2002-08-31 21:09) [10]

Почему так происходит не знаю, может так задумано :-), но использовать можно ::{645FF040-5081-101B-9F08-00AA002F954E}, это стандартное значение для Recycle Bin (Корзины)



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

Форум: "Основная";
Текущий архив: 2002.09.12;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.46 MB
Время: 0.007 c
14-35885
stany
2002-08-18 13:04
2002.09.12
Windows Commander


14-35891
VictorT
2002-08-19 13:05
2002.09.12
*.swf


14-35856
AL2002
2002-08-16 18:00
2002.09.12
Чем переконвертить Ogg в Mp3?


1-35770
TTCustomDelphiMaster
2002-08-30 20:19
2002.09.12
Regional and Language Options


1-35759
[lamer]Barmaglot
2002-08-30 17:46
2002.09.12
Помогите разобраться с динамическим созданием процедур...





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский