Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Создание ярлыка в меню пуск-автозагрузка [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]

Никто не знает чтоли???


Наверх

Титульная страница Поиск, карта сайта Написать письмо