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

Вниз

Как в Проводнике открыть Панель Управления и Принтеры?   Найти похожие ветки 

 
MSknyaz   (2002-07-10 17:51) [0]

Как из Дельфей заставить Проводник открыть специальную папку (Панель
управления, принтеры и т.д.)?

Пытался разобраться с функцией SHGetSpecialFolderPath //Вычитал в
КД, но в своем MSDNе не нашел :(((
А также с функцией SHGetSpecialFolderLocation, но опять не
разобрался :(((((

Помогите...


 
Александр ©   (2002-07-10 18:53) [1]

Некоторые специальные папки (Панель управления, Принтеры и др.) можно представить в виде каскадных меню, если создать в меню Пуск или в одном из вложенных подменю (открыв его в окне) папку и присвоить ей одно из следующих имён:
для Панели управления — Имя.{21EC2020-3AEA-1069-A2DD-08002B30309D}
для папки Принтеры — Имя.{2227A280-3AEA-1069-A2DE-08002B30309D}
для папки Удаленный доступ к сети — Имя.{992CFFA0-F557-101A-88EC-00DD010CCC48}
для Корзины — Имя.{645FF040-5081-101B-9F08-00AA002F954E}

для папки Подписка — Имя.{F5175861-2688-11d0-9C5E-00AA00A45957}
для папки Шрифты — Имя.{BD84B380-8CA2-1069-AB1D-08000948F534}
для папки History — Имя.{FF393560-C2A7-11CF-BFF4-444553540000}
Имя для каждого из этих объектов вы можете задать абсолютно любое. Не забудьте только поставить точку (без пробелов) между именем и открывающей фигурной скобкой.


 
Eugene Lachinov ©   (2002-07-10 20:02) [2]

uses
FileCtrl, ActiveX, 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;

procedure TForm1.Button1Click(Sender: TObject);
var
S : string;
begin
SelectDirectory("", ShellFolderName(ftStartMenu), S)
end;



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

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

Наверх




Память: 0.47 MB
Время: 0.015 c
3-60973
Skel
2002-08-28 11:49
2002.09.19
Как продублировать запись в таблице Paradox??


7-61320
voronkov
2002-07-02 14:25
2002.09.19
Подскажите как сделать ActiveX на базе TNMSMTP?


1-61100
Aristarh
2002-09-06 14:13
2002.09.19
Определить путь к Common Files


1-61050
KIR
2002-09-09 11:46
2002.09.19
Case вызывает Stack Overflow...


1-61188
Guzz
2002-09-08 13:24
2002.09.19
Глупый такой вопрос