Главная страница
    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.46 MB
Время: 0.006 c
14-35907
Agent Smith
2002-08-19 20:00
2002.09.12
ASUS GF3 Ti200 Deluxe - как писать с TV на комп?


3-35582
Tornado
2002-08-22 10:49
2002.09.12
ADO.StringConnection ?


4-35967
v2k
2002-07-19 19:11
2002.09.12
кто знает


3-35566
Виталий Панасенко
2002-08-20 18:28
2002.09.12
FIBPlus


6-35844
Дельфятник
2002-07-04 11:37
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
Английский Французский Немецкий Итальянский Португальский Русский Испанский