![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Создание ярлыка в меню пуск-автозагрузка [D7]
zero-g © (2005-07-14 02:25:00)Доброго времени суток!
Скажите пожалуйста, как получить путь к папке StartUp(Автозагрузка) и поместить туда ярлык своего приложения?
Спасибо.
zero-g (2005-07-20 02:38:00) [1]Спасибо всем.
Но я сделал так
----
= сдесь указаны пути к программе, чтоб глюков с автораном небыло =
uses Registry;
...
var
mypath : string; //глобальная переменная пути,
где физически лежит прога
...
procedure TForm1.FormCreate(Sender: TObject);
var r : Tregistry;
begin
mypath := '';
r := Tregistry.Create; //создаем объект
r.RootKey := HKey_Current_User;//ставим ветвь реестра
r.OpenKey('Software\<мое приложение>',false);//открываем ключ
mypath := r.ReadString('<имя ключа>'); //считываем занчение ключа
r.Free;//убиваем объект
if mypath = '' then //если нифига нет
begin
mypath := GetCurrentDir; //присваеваем пути значение текущего каталога
r := Tregistry.Create;
r.RootKey := HKey_Current_User;
r.OpenKey('Software\<мое приложение(навзание каталога)>',true);
r.WriteString('<имя ключа>',mypath);//записываем значения ключа
r.Free;
end;
end;
= далее ... =
procedure TForm1.SpeedButton1Click(Sender: TObject);
var reg : TRegIniFile;
begin
{----- пихаем в авторан -----}
reg := TRegIniFile.Create('SOFTWARE\Microsoft\Windows\CurrentVersion\Run');
reg.WriteString('','<имя ключа>',mypath+'\<имя приложения>.exe');
reg.Free;
{-----------------------------}
end;
procedure TForm1.SpeedButton2Click(Sender: TObject);
var reg : TRegIniFile;
begin
{----- убиваем из авторана -----}
reg := TRegIniFile.Create('SOFTWARE\Microsoft\Windows\CurrentVersion\Run');
reg.DeleteKey('','<имя ключа>');
reg.Free;
{-------------------------------}
end;
Экспериментатор (2005-07-15 14:33:00) [2]
ShortcutType = (_DESKTOP, _PROGRAMS, _QUICKLAUNCH, _STARTMENU, _OTHERFOLDER);
function CreateIrrVerbsShortcut(Location: ShortcutType) : string;
implementation
uses Inifiles, uConst,
Windows, Registry, ShlObj, ComObj, ActiveX;
function CreateShortcut(SourceFileName: string; ALinkName : string;
Location: ShortcutType; // shortcut location
SubFolder, // subfolder of location
WorkingDir, // working directory property of the shortcut
Parameters,
Description: string): // description property of the shortcut
string;
const
SHELL_FOLDERS_ROOT = 'Software\MicroSoft\Windows\CurrentVersion\Explorer';
QUICK_LAUNCH_ROOT = 'Software\MicroSoft\Windows\CurrentVersion\GrpConv';
var
MyObject: IUnknown;
MySLink: IShellLink;
MyPFile: IPersistFile;
Directory, LinkName: string;
WFileName: WideString;
Reg: TRegIniFile;
begin
try
MyObject := CreateComObject(CLSID_ShellLink);
MySLink := MyObject as IShellLink;
MyPFile := MyObject as IPersistFile;
MySLink.SetPath(PChar(SourceFileName));
MySLink.SetArguments(PChar(Parameters));
MySLink.SetDescription(PChar(Description));
if ALinkName<>'' then LinkName:=ALinkName+'.lnk'
else
begin
LinkName := ChangeFileExt(SourceFileName, '.lnk');
LinkName := ExtractFileName(LinkName);
end;
// Quicklauch
if Location = _QUICKLAUNCH then
begin
Reg := TRegIniFile.Create(QUICK_LAUNCH_ROOT);
try
Directory := Reg.ReadString('MapGroups', 'Quick Launch', '');
finally
Reg.Free;
end;
end
else
// Other locations
begin
Reg := TRegIniFile.Create(SHELL_FOLDERS_ROOT);
try
case Location of
_OTHERFOLDER : Directory := SubFolder;
_DESKTOP : Directory := Reg.ReadString('Shell Folders', 'Desktop', '');
_PROGRAMS : Directory := Reg.ReadString('Shell Folders', 'Programs', '');
_STARTMENU : Directory := Reg.ReadString('Shell Folders', 'Start Menu', '');
end;
finally
Reg.Free;
end;
end;
if Directory <> '' then
begin
if (SubFolder <> '') and (Location <> _OTHERFOLDER) then
WFileName := Directory + '\' + SubFolder + '\' + LinkName
else
WFileName := Directory + '\' + LinkName;
if WorkingDir = '' then
MySLink.SetWorkingDirectory(PChar(ExtractFilePath(SourceFileName)))
else
MySLink.SetWorkingDirectory(PChar(WorkingDir));
MyPFile.Save(PWChar(WFileName), False);
Result := WFileName;
end;
except
MessageDlg('Не могу создать ярлык!'
+#13+#10+'Нет доступа.', mtWarning, [mbOK], 0);
end;
end;
ПРИМЕР ИСПОЛЬЗОВАНИЯ
function CreateIrrVerbsShortcut(Location: ShortcutType) : string;
begin
Result:=CreateShortcut(ParamStr(0), 'Irregular Verbs', Location, '', '', '', 'Irregular Verbs(с)');
end;
zero-g (2005-07-15 08:25:00) [3]Спасибо, сеня попробую.
dmitry501 (2005-07-15 05:24:00) [4]zero-g © (15.07.05 2:33) [1]
HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders\Startup
для текущего пользователя
HKLM\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders\Common Startup
для всех пользователей
zero-g (2005-07-15 02:33:00) [5]Никто не знает чтоли???