Кто может выслать пример программного добавления папки и программ в меню Start->Programs для Windows.
Ситуация: во время работы собственноручно написанного инсталлятора необходимо программно в Start->Programs создать папку «ABC Company» и в этой папки создать ссылку на программу «ABC Company». Программа написана на Delphi 5.0. Инсталлятор работает под Win9X, Win NT, Win2000, Win XP.
Как поместить программно ссылку на программу «ABC Company» на Desktop?
Спасибо.
Здравствуйте, PeregudSergey, Вы писали:
PS>Кто может выслать пример программного добавления папки и программ в меню Start->Programs для Windows.
PS>Ситуация: во время работы собственноручно написанного инсталлятора необходимо программно в Start->Programs создать папку «ABC Company» и в этой папки создать ссылку на программу «ABC Company». Программа написана на Delphi 5.0. Инсталлятор работает под Win9X, Win NT, Win2000, Win XP.
PS>Как поместить программно ссылку на программу «ABC Company» на Desktop?
PS>Спасибо.
Эта что новый прикол такой косит под тормаза ! Объясняю в n-1 раз !
[pascal]
Наиболее простой и гибкий путь — использование DDE. При этом посылаются запросы к PROGMAN. Для этого необходимо поместить на форму компонент для посылки DDE запросов — объект типа TDdeClientConv. Для определенности назовем его DDEClient. Затем добавим метод для запросов к PROGMAN:
Function TForm2.ProgmanCommand(Command:string):boolean;
var
macrocmd:array[0..88] of char;
begin
DDEClient.SetLink('PROGMAN','PROGMAN');
DDEClient.OpenLink; { Устанавливаем связь по DDE }
strPCopy(macrocmd,'['+Command+']'); { Подготавливаем ASCIIZ строку }
ProgmanCommand :=DDEClient.ExecuteMacro(MacroCmd,false);
DDEClient.CloseLink; { Закрываем связь по DDE }
end;
При вызове ProgmanCommand возвращает true, если посылка макроса была успешна. Система команд (основных) приведена ниже:
Create(Имя группы, путь к GRP файлу) — Создать группу с именем "Имя группы", причем в нем могут быть пробелы и знаки препинания. Путь к GRP файлу можно не указывать, тогда он создастся в каталоге Windows.
Delete(Имя группы) — Удалить группу с именем "Имя группы"
ShowGroup(Имя группы, состояние) — Показать группу в окне, причем состояние — число, определяющее параметры окна: 1-нормальное состояние + активация; 2-миним.+ активация; 3-макс. + активация; 4-нормальное состояние; 5-Активация
AddItem(командная строка, имя раздела, путь к иконке, индекс иконки (с 0), Xpos,Ypos, рабочий каталог, HotKey, Mimimize) — Добавить раздел к активной группе. В командной строке, имени размера и путях допустимы пробелы, Xpos и Ypos — координаты иконки в окне, лучше их не задавать, тогда PROGMAN использует значения по умолчанию для свободного места. HotKey — виртуальный код горячей клавиши. Mimimize — тип запуска, 0-в обычном окне, 0 — в минимизированном.
DeleteItem(имя раздела) — Удалить раздел с указанным именем в активной группе
Пример использования:
ProgmanCommand('CreateGroup(Комплекс программ для каталогизации литературы,)');
ProgmanCommand('AddItem('+path+'vbase.hlp,Справка по VBase,'+ path +
' vbase.hlp, 0, , , '+ path + ',,)');
где path — строка типа String, содержащая полный путь к каталогу 'C:\Catalog\'
Наиболее распространенная задача — создание ярлыка на рабочем столе. Для этого необходимо определить полный путь к системной папке Windows Desctop через реестр и передать его в качестве параметра PathLink.
uses ShlObj, ComObj, ActiveX;
procedure CreateLink(const PathObj, PathLink, Desc, Param: string);
var
IObject: IUnknown;
SLink: IShellLink;
PFile: IPersistFile;
begin
IObject := CreateComObject(CLSID_ShellLink);
SLink := IObject as IShellLink;
PFile := IObject as IPersistFile;
with SLink do begin
SetArguments(PChar(Param));
SetDescription(PChar(Desc));
SetPath(PChar(PathObj));
end;
PFile.Save(PWChar(WideString(PathLink)), FALSE);
end;
Здравствуйте, Аноним, Вы писали:
А>Эта что новый прикол такой косит под тормаза ! Объясняю в n-1 раз !
Спасибо, за ответ.
Если тебя так так напрягало отвечать зачем тогда отвечал?
Я не нуждаюсь в твоих ответах и твоей помощи если тебя это так напрягает.
И тем более в твоих комментариях. Если мне надо будет узнать твое мнение я так и спрошу.
Ты поступил по хамски не зависимо от того на сколько ты хороший программист.
Здравствуйте, xst_psergey, Вы писали:
XP>Здравствуйте, Аноним, Вы писали:
А>>Эта что новый прикол такой косит под тормаза ! Объясняю в n-1 раз !
XP>Спасибо, за ответ.
XP>Если тебя так так напрягало отвечать зачем тогда отвечал?
совершенно без напряга
XP>Я не нуждаюсь в твоих ответах и твоей помощи если тебя это так напрягает.
XP>И тем более в твоих комментариях. Если мне надо будет узнать твое мнение я так и спрошу.
я не давал коментарии
XP>Ты поступил по хамски не зависимо от того на сколько ты хороший программист.
и я галимы програмист.
НО фак, этот вопрос есть в любом хелпе и даже на этом фороуме, и вааще
http://rsdn.ru/howtoask.htm