Форум: "WinAPI";
Текущий архив: 2005.09.04;
Скачать: [xml.tar.bz2];
ВнизСоздание ярлыка в меню пуск-автозагрузка Найти похожие ветки
← →
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 вся ветка
Форум: "WinAPI";
Текущий архив: 2005.09.04;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.019 c