Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.09.04;
Скачать: CL | DM;

Вниз

Создание ярлыка в меню пуск-автозагрузка   Найти похожие ветки 

 
zero-g ©   (2005-07-14 02:25) [0]

Доброго времени суток!

Скажите пожалуйста, как получить путь к папке StartUp(Автозагрузка) и поместить туда ярлык своего приложения?

Спасибо.


 
zero-g ©   (2005-07-15 02:33) [1]

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


 
dmitry501 ©   (2005-07-15 05:24) [2]

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 08:25) [3]

Спасибо, сеня попробую.


 
Экспериментатор   (2005-07-15 14:33) [4]

 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-20 02:38) [5]

Спасибо всем.

Но я сделал так
----

= сдесь указаны пути к программе, чтоб глюков с автораном небыло =

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;



Страницы: 1 вся ветка

Текущий архив: 2005.09.04;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.043 c
1-1124015109
Ви талька 2005
2005-08-14 14:25
2005.09.04
Прозрачный фрейм


3-1122465407
Shopot
2005-07-27 15:56
2005.09.04
ADO и Access. Как приконектиться?


1-1124189750
chili
2005-08-16 14:55
2005.09.04
Помогите с алгоритмом переноса по пробелу для Button.Caption


14-1123629715
SoftX
2005-08-10 03:21
2005.09.04
Опрос.


14-1123759636
Павел
2005-08-11 15:27
2005.09.04
Delphi &amp; КПК