Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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.008 c
8-35825
Doom
2002-03-21 12:21
2002.09.12
Анализ WAV - файла


14-35908
Song
2002-08-19 22:25
2002.09.12
Проблема: КАК может частное лицо продать своё ПО юр. лицу,


1-35801
VladP
2002-08-31 19:50
2002.09.12
Где ж его взять? (resource not found)


14-35877
bytebutcher
2002-08-16 14:19
2002.09.12
Matt Pietrek Windows 95 System Programming Secrets


1-35723
Борис
2002-09-02 09:22
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
Английский Французский Немецкий Итальянский Португальский Русский Испанский