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

Вниз

ShGetSpecialFolderLocation   Найти похожие ветки 

 
TBeginner   (2002-09-15 21:01) [0]

Люди! Помогите!

В unit"е ShlObj есть такая функция:

function ShGetSpecialFolderLocation(hwndOwner: HWNd, nFolder: Integer, var ppidl: PItemIdList);

hwndOwner - понятно, nFolder - понятно, непонятно: как из переменной ppidl получить путь к специальной папке?


 
Poirot ©   (2002-09-16 07:48) [1]

SHGetSpecialFolderPath
Попробуй эту


 
Eugene ©   (2002-09-16 10:03) [2]


Const
F_DESKTOP = 0;
F_FONTS = 1;
F_PERSONAL = 2;
F_PROGRAMS = 3;
F_RECENT = 4;
F_SENDTO = 5;
F_STARTUP = 6;
F_FAVORITES = 7;
F_TEMP = 8;
F_SYSTEM = 9;
F_WINDOWS = 10;

Function FssGetSpecialDir(Const F_Folder: Integer): String;
Var
A : array [0..max_path] of Char;
P : PChar;
PIDL : pItemIdList;
Begin
Result:="";
P:=@A;
case F_Folder of
F_DESKTOP : SHGetSpecialFolderLocation(0,CSIDL_DESKTOP,PIDL);
F_FONTS : SHGetSpecialFolderLocation(0,CSIDL_FONTS,PIDL);
F_PERSONAL : SHGetSpecialFolderLocation(0,CSIDL_PERSONAL,PIDL);
F_PROGRAMS : SHGetSpecialFolderLocation(0,CSIDL_PROGRAMS,PIDL);
F_RECENT : SHGetSpecialFolderLocation(0,CSIDL_RECENT,PIDL);
F_SENDTO : SHGetSpecialFolderLocation(0,CSIDL_SENDTO,PIDL);
F_STARTUP : SHGetSpecialFolderLocation(0,CSIDL_STARTUP,PIDL);
F_FAVORITES : SHGetSpecialFolderLocation(0,CSIDL_FAVORITES,PIDL);
F_TEMP : GetTempPath(max_path,P);
F_SYSTEM : GetSystemDirectory(P,max_path);
F_WINDOWS : GetWindowsDirectory(P,max_path);
else
Exit;
end;
if (F_Folder in [0..7]) and SHGetPathFromIDList(PIDL,P) then Result:=String(P);
if (F_Folder in [8..10]) then Result:=String(P);
if (Result[Length(Result)] = "\") then Delete(Result,Length(Result),1);
end;


 
Alx2 ©   (2002-09-16 11:41) [3]

Вот еще вариант без PItemIdList (с SHGetSpecialFolderPath):

var path: array[byte] of char;
begin
if SHGetSpecialFolderPath(Handle,path,CSIDL_COMMON_DESKTOPDIRECTORY,false) then
// показываем папку с элементами рабочего стола.
ShowMessage(path);
end;


В этом примере:
Handle - хэндл родительского окошка для возможных диалоговых окон.
path - буфер для приема.
CSIDL_COMMON_DESKTOPDIRECTORY - идентификатор трубемой папки
false - признак того, что нужно создать папку в случае ее отсутствия.

Вот список идентификаторов папок:

CSIDL_DESKTOP = $0000;
CSIDL_INTERNET = $0001;
CSIDL_PROGRAMS = $0002;
CSIDL_CONTROLS = $0003;
CSIDL_PRINTERS = $0004;
CSIDL_PERSONAL = $0005;
CSIDL_FAVORITES = $0006;
CSIDL_STARTUP = $0007;
CSIDL_RECENT = $0008;
CSIDL_SENDTO = $0009;
CSIDL_BITBUCKET = $000a;
CSIDL_STARTMENU = $000b;
CSIDL_DESKTOPDIRECTORY = $0010;
CSIDL_DRIVES = $0011;
CSIDL_NETWORK = $0012;
CSIDL_NETHOOD = $0013;
CSIDL_FONTS = $0014;
CSIDL_TEMPLATES = $0015;
CSIDL_COMMON_STARTMENU = $0016;
CSIDL_COMMON_PROGRAMS = $0017;
CSIDL_COMMON_STARTUP = $0018;
CSIDL_COMMON_DESKTOPDIRECTORY = $0019;
CSIDL_APPDATA = $001a;
CSIDL_PRINTHOOD = $001b;
CSIDL_ALTSTARTUP = $001d; // DBCS
CSIDL_COMMON_ALTSTARTUP = $001e; // DBCS
CSIDL_COMMON_FAVORITES = $001f;
CSIDL_INTERNET_CACHE = $0020;
CSIDL_COOKIES = $0021;
CSIDL_HISTORY = $0022;



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

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

Наверх




Память: 0.48 MB
Время: 0.013 c
14-92705
savva
2002-10-08 12:50
2002.10.28
Никто не знает что это за файл (заголовок привожу).


14-92683
Undert
2002-10-07 21:46
2002.10.28
Кто может предложить ...


1-92606
AL2002
2002-10-17 11:54
2002.10.28
Ini создаётся где попало.


14-92737
Tornado
2002-10-09 12:49
2002.10.28
Уважаемые Мастера, очень нужна ваша помощь !!!


3-92324
wHammer
2002-10-05 11:09
2002.10.28
Как программно установить NET DIR для Paradox?