Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 07.08.2007, 00:33
killerkill killerkill вне форума
Новичок
 
Регистрация: 07.07.2007
Сообщения: 86
Репутация: 10
Вопрос Автозапуск

Как программно сделать так, чтобы программа запускалась вместе с windows????
Ответить с цитированием
  #2  
Старый 07.08.2007, 00:44
Аватар для zip000
zip000 zip000 вне форума
Начинающий
 
Регистрация: 24.07.2007
Сообщения: 194
Репутация: 25
По умолчанию

Самый простой способ (на мой взгляд) прописать путь к ЕХЕшнику в реестре в разделе HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\Curr entVersion\Run. Создаешь строковой параметр с любым именем, и записываешь в его зачение путь к своему ЕХЕ. Работа с реестром через обьект TRegistry, в список Uses надо добавить модуль Registry.
__________________
Не профи, но и не чайник . D6 - лучше не придумали. Пока.
Ответить с цитированием
  #3  
Старый 07.08.2007, 00:48
Аватар для zip000
zip000 zip000 вне форума
Начинающий
 
Регистрация: 24.07.2007
Сообщения: 194
Репутация: 25
По умолчанию

И да, доступ на запись в раздел HKEY_LOCAL_MACHINE только под учетной записью с правами админа, насколько я знаю
__________________
Не профи, но и не чайник . D6 - лучше не придумали. Пока.
Ответить с цитированием
  #4  
Старый 07.08.2007, 00:58
Аватар для zip000
zip000 zip000 вне форума
Начинающий
 
Регистрация: 24.07.2007
Сообщения: 194
Репутация: 25
По умолчанию

Вот пример функции, добавляющей ЕХЕшник в автозапуск

uses
Registry;

function AddExeToAutoRun : Boolean;
var
reg : TRegistry;
begin
Result := False;
reg := TRegistry.Create;
try
if reg.OpenKey('HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft \Windows\CurrentVersion\Run', True) then begin
reg.WriteString('MyEXE', ParamStr(0));
Result := True;
end;
finally
reg.Free;
end;
end;
__________________
Не профи, но и не чайник . D6 - лучше не придумали. Пока.

Последний раз редактировалось zip000, 07.08.2007 в 01:01.
Ответить с цитированием
  #5  
Старый 07.08.2007, 13:10
killerkill killerkill вне форума
Новичок
 
Регистрация: 07.07.2007
Сообщения: 86
Репутация: 10
По умолчанию

а куда именно вставлять эту функцию?(я в них почти не разбираюсь)
__________________
Иногда думаешь, что Фортуна тебе улыбнулась, а оказывается – ты её просто насмешил.
Ответить с цитированием
  #6  
Старый 07.08.2007, 13:48
Аватар для Winny
Winny Winny вне форума
Продвинутый
 
Регистрация: 26.05.2007
Адрес: Планета земля, Россия, Москва
Сообщения: 620
Репутация: 30
По умолчанию

А можно и без функций. Вот:
Код:
uses Registry;

procedure TForm1.Button1Click(Sender: TObject);
var
reg:TRegistry;
begin
reg:=TRegistry.Create;
reg.RootKey:=HKEY_CURRENT_USER;
if reg.KeyExists('Software\Microsoft\Windows\CurrentVersion\Run') then 
reg.OpenKey('Software\Microsoft\Windows\CurrentVersion\Run',false); 
reg.WriteString('Your Program','"'+Application.ExeName+'"'); 
reg.CloseKey;
reg.CloseKey;
reg.Free;
if not reg.KeyExists('Software\Microsoft\Windows\CurrentVersion\Run') then
reg.Free;
end;

end.
__________________


Последний раз редактировалось Winny, 07.08.2007 в 13:53.
Ответить с цитированием
  #7  
Старый 07.08.2007, 14:26
Аватар для zip000
zip000 zip000 вне форума
Начинающий
 
Регистрация: 24.07.2007
Сообщения: 194
Репутация: 25
По умолчанию

Функцию вставляешь в любое место прграммы (между другими функциями и процедурами), главное чтоб она находилась по тексту выше чем сам вызов этой процедуры. Например

function AddExeToAutoRun : Boolean;
begin
.............
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
if AddExeToAutoRun then
ShowMessage('Файл был добавлен в автозапуск.');
end;

Winny if reg.KeyExists необязательно проверять, т.к. если второй параметр reg.OpenKey установить True, то открываемый раздел будет автоматом создан если его не существует.
__________________
Не профи, но и не чайник . D6 - лучше не придумали. Пока.
Ответить с цитированием
  #8  
Старый 07.08.2007, 14:32
Аватар для Winny
Winny Winny вне форума
Продвинутый
 
Регистрация: 26.05.2007
Адрес: Планета земля, Россия, Москва
Сообщения: 620
Репутация: 30
По умолчанию

Спасиб zip000 возьму на заметку
__________________

Ответить с цитированием
  #9  
Старый 07.08.2007, 14:35
Аватар для zip000
zip000 zip000 вне форума
Начинающий
 
Регистрация: 24.07.2007
Сообщения: 194
Репутация: 25
По умолчанию

Кстати Winny твой код не совсем корректен надо так

if reg.KeyExists then begin
.......
end else
reg.Free;

Т.к. обращение к удаленному обьекту это не есть хорошо
__________________
Не профи, но и не чайник . D6 - лучше не придумали. Пока.
Ответить с цитированием
  #10  
Старый 07.08.2007, 14:43
Аватар для Winny
Winny Winny вне форума
Продвинутый
 
Регистрация: 26.05.2007
Адрес: Планета земля, Россия, Москва
Сообщения: 620
Репутация: 30
По умолчанию

Ещё раз спасибо )))
__________________

Ответить с цитированием
  #11  
Старый 07.08.2007, 17:39
killerkill killerkill вне форума
Новичок
 
Регистрация: 07.07.2007
Сообщения: 86
Репутация: 10
По умолчанию

блин....
когда windows запускаеться моя программа запускается, но выдаёт ошибку!(что то с адресом). Заглянул в реестр всё нормально... НЕЗНАЮ ЧТО ДЕЛАТЬ! *?????
__________________
Иногда думаешь, что Фортуна тебе улыбнулась, а оказывается – ты её просто насмешил.
Ответить с цитированием
  #12  
Старый 07.08.2007, 17:57
Аватар для Dimanus
Dimanus Dimanus вне форума
Прохожий
 
Регистрация: 20.11.2006
Адрес: Россия г.Братск
Сообщения: 33
Репутация: 10
По умолчанию

Что то у вас не клеется, сколько наблюдаю за вашим диалогам. Попробуй так:
procedure TForm1.Button1Click(Sender: TObject);
var
reg: TRegistry;
begin
Reg := nil;
try
reg := TRegistry.Create;
reg.RootKey := HKEY_LOCAL_MACHINE;
reg.LazyWrite := false;
reg.OpenKey('Software\Microsoft\Windows\CurrentVer sion\Run',
false);
reg.WriteString('My App', Application.ExeName);
reg.CloseKey;
reg.free;
except
if Assigned(Reg) then Reg.Free;
end;
end;
Это от админа, а отпользвателя меняешь
reg.RootKey := HKEY_CURRENT_USER;
Ответить с цитированием
  #13  
Старый 07.08.2007, 18:29
killerkill killerkill вне форума
Новичок
 
Регистрация: 07.07.2007
Сообщения: 86
Репутация: 10
По умолчанию

Короче(дело к ночи)
я понял в чём проблема.

Когда моя программа запускается, она создает иконку в трее с адресом иконки :"./icon2.ico". Если программу запустить в ручную все работает! Но если через авто запуск, то выдается ошибка о том что файл (C:\Documents and Settings\user\icon2.ico) нельзя найти ! Спрашивается: какого х... он ставит этот каталог("C:\Documents and Settings\user\") и как это исправить? Спасибо...
__________________
Иногда думаешь, что Фортуна тебе улыбнулась, а оказывается – ты её просто насмешил.
Ответить с цитированием
  #14  
Старый 07.08.2007, 19:54
Аватар для Winny
Winny Winny вне форума
Продвинутый
 
Регистрация: 26.05.2007
Адрес: Планета земля, Россия, Москва
Сообщения: 620
Репутация: 30
По умолчанию

Даже не знаю... У меня с моим кодом всё работает. Я тебе скажу одно, убери из программы функцию сворачивания в трей и всё будет ОК.
__________________

Ответить с цитированием
  #15  
Старый 07.08.2007, 20:00
killerkill killerkill вне форума
Новичок
 
Регистрация: 07.07.2007
Сообщения: 86
Репутация: 10
По умолчанию

нельзя! это фишка моей программы.
Как я понял надо задать начальный каталог чтоли.....
__________________
Иногда думаешь, что Фортуна тебе улыбнулась, а оказывается – ты её просто насмешил.
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 16:16.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter