Форум: "Основная";
Текущий архив: 2002.09.12;
Скачать: [xml.tar.bz2];
ВнизПереименовать Пуск Программы <Группа> <ярлык> Найти похожие ветки
← →
France (2002-09-02 12:43) [0]Как переименовать группу или ярлык в группе программ в ПУСК\Программы? Группа, имя ярлыка, естественно, известны. Вариант, как "Rename(C:\Windows\...)" меня не устраивает. Я спросил тут недалеко, мне предложили CSIDL_COMMON_PROGRAMS и SHGetSpecialFolderPath. Но как ими пользоваться, не знаю. Подскажите, пожалуйста, на примере, как это сделать, скажем, на стандартном "Калькуляторе". Или где помощь почитать. Спасибо.
← →
Poirot (2002-09-02 13:18) [1]SHGetSpecialFolderPath+F1
Ломает что-ли!!!
var PStr:array[0..127]of Char;
Folder:String;
begin
SHGetSpecialFolderPathForm1.Handle,PStr,CSIDL_COMMON_PROGRAMS,False);
Folde:=StrPas(PStr);
end;
что-то в этом роде!!!!
А можно глупый вопрос - ВЫ ЛАМЕР, или просто нечего делать???
← →
Ученик (2002-09-02 13:18) [2]uses
ActiveX, ShellApi, ShlObj;
type
TFolderType = (ftDesktop, ftRecycleBin, ftControlPanel, ftDesktopDir,
ftDrives, ftFavoriteURLs, ftFonts, ftNetwork, ftNetHoodDir,
ftDocumentDir, ftPrinters, ftPrograms, ftRecentDir, ftSendTo,
ftStartMenu, ftStartup, ftTemplates, ftFileSystem, ftCommonPrograms,
ftCustom);
function GetFolderID(FolderType : TFolderType) : Integer;
const
CSIDL_CUSTOM = $EAFE;
FOLDERID : array[TFolderType] 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_COMMON_PROGRAMS, 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
sPath : string;
SHFileOpStruct : TSHFileOpStruct;
begin
sPath := ShellFolderName(ftCommonPrograms) + "\Accessories\";
FillChar(SHFileOpStruct, SizeOf(SHFileOpStruct), 0);
SHFileOpStruct.wFunc := FO_RENAME;
SHFileOpStruct.pFrom := PChar(sPath + "Calculator.lnk"#0);
SHFileOpStruct.pTo := PChar(sPath + "Калькулятор.lnk"#0);
SHFileOperation(SHFileOpStruct)
end;
← →
France (2002-09-02 13:28) [3]> Poirot © (02.09.02 13:18)
F1 пробовал, не показывает того, чего хотелось-бы. Вот так.
А насчет ламера, ну пусть я буду ламером, так и быть. Я не обидчивый. И зачем так горячиться? А вообще, мне больше нечего делать, как в сетке глупые вопросы разным умникам задавать. :-(((
> Ученик © (02.09.02 13:18)
Спасибо. Буду изучать. :-)
← →
Poirot (2002-09-02 16:09) [4]
> F1 пробовал, не показывает того, чего хотелось-бы. Вот так.
Вам бы на русском, да ещё и с примером... да? Причём по вашей задаче!
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2002.09.12;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.007 c