Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 06.09.2007, 19:57   #1
pentiumForever
][@|{eR
 
Регистрация: 06.09.2007
Сообщений: 8
Сообщение Скажите функцию которая будет запускать приложение при каждой загрузке винды

Скажите функцию которая будет запускать приложение при каждой загрузке винды .Срочно нада.Плиззз
pentiumForever вне форума Ответить с цитированием
Старый 06.09.2007, 19:58   #2
pentiumForever
][@|{eR
 
Регистрация: 06.09.2007
Сообщений: 8
По умолчанию

Мож кто-нить знает?а?
pentiumForever вне форума Ответить с цитированием
Старый 06.09.2007, 20:12   #3
Азазель
Пользователь
 
Аватар для Азазель
 
Регистрация: 04.09.2007
Сообщений: 12
По умолчанию

Можно через регистр: Итак, в ветвях реестра HKEY_CURRENT_USER и HKEY_LOCAL_MACHINE находятся разделы Software\Microsoft\Windows\CurrentV ersion\Run и Software\Microsoft\Windows\CurrentV ersion\RunOnce ; В Run сохраняются пути приложений, которые запускаются при КАЖДОМ старте ВинДовз, а в RunOnce - единожды.
Азазель вне форума Ответить с цитированием
Старый 06.09.2007, 20:18   #4
Азазель
Пользователь
 
Аватар для Азазель
 
Регистрация: 04.09.2007
Сообщений: 12
По умолчанию

От выбора ветвей реестра (HKEY_CURRENT_USER и HKEY_LOCAL_MACHINE) зависит , в сеансе всех ли пользователей будут запускаться приложение.

Пример: (Надо: 3 RadioButton + Button);
Код:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ExtCtrls, Registry;

type
  TForm1 = class(TForm)
    RadioGroup1: TRadioGroup;
    optRunNone: TRadioButton;
    optRunOnce: TRadioButton;
    optAutoRun: TRadioButton;
    cmbApply: TButton;
    procedure FormCreate(Sender: TObject);
    procedure cmbApplyClick(Sender: TObject);
  private
    { Private declarations }
    procedure GetRunMode();
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(sender: TObject);
begin
  GetRunMode();
end;

procedure TForm1.GetRunMode();
var
  reg: TRegistry;
begin
  reg := TRegistry.Create();
  reg.RootKey := HKEY_LOCAL_MACHINE;
  //Определение, как запускается программа (по наличию значений в
  //соответствующих разделах)
  if reg.OpenKey('Software\Microsoft\Windows\CurrentVersion\Run', False)
  then
  begin
    if reg.ValueExists(Application.Title) then
    begin
      //Программа есть в разделе Run - запускается при каждой загрузке
      //Windows
      optAutoRun.Checked := True;
      reg.CloseKey();
      Exit;
    end;
    reg.CloseKey();
  end;

  if reg.OpenKey('Software\Microsoft\Windows\CurrentVersion\RunOnce', False)
  then
  begin
    if reg.ValueExists(Application.Title) then
    begin
      //Программа есть в разделе RunOnce - запускается один раз при старте
      //Windows
      optRunOnce.Checked := True;
      reg.CloseKey();
      Exit;
    end;
    reg.CloseKey();
  end;

  //Автозапуск программы (рассматриваемым способом) не включен
  optRunNone.Checked := True;

  reg.Free();
end;

//Применение режима запуска программы
procedure TForm1.cmbApplyClick(Sender: TObject);
var
  reg: TRegistry;
begin
  reg := TRegistry.Create();
  reg.RootKey := HKEY_LOCAL_MACHINE;
  //Отмена прошлого режима
  //..удаление параметра из раздела Run
  if not optAutoRun.Checked then
    if reg.OpenKey('Software\Microsoft\Windows\CurrentVersion\Run', False)
    then
    begin
      reg.DeleteValue( Application.Title );
      reg.CloseKey();
    end;
  //..удаление параметра из раздела RunOnce
  if not optRunOnce.Checked then
    if reg.OpenKey('Software\Microsoft\Windows\CurrentVersion\RunOnce', False)
    then
    begin
      reg.DeleteValue( Application.Title );
      reg.CloseKey();
    end;

  //Установка нового режима (создание параметра в соответствующем разделе)
  if optAutoRun.Checked then
    //..добавление параметра в раздел Run
    if reg.OpenKey('Software\Microsoft\Windows\CurrentVersion\Run', True)
    then
    begin
      reg.WriteString( Application.Title, Application.ExeName);
      reg.CloseKey();
    end;
  if optRunOnce.Checked then
    //..добавление параметра в раздел RunOnce
    if reg.OpenKey('Software\Microsoft\Windows\CurrentVersion\RunOnce', True)
    then
    begin
      reg.WriteString( Application.Title, Application.ExeName);
      reg.CloseKey();
    end;

  GetRunMode();
  reg.Free();
end;

end.

Последний раз редактировалось Азазель; 06.09.2007 в 20:23. Причина: +Пример
Азазель вне форума Ответить с цитированием
Старый 06.09.2007, 20:36   #5
pentiumForever
][@|{eR
 
Регистрация: 06.09.2007
Сообщений: 8
По умолчанию

For Азазель: Спасибо конечно,но всё же я видел совсем мелкую функцию,и она запускала приложение при каждом запуске винды,я просто забыл её,точнее я её и не запоминал)))
pentiumForever вне форума Ответить с цитированием
Старый 06.09.2007, 20:47   #6
Азазель
Пользователь
 
Аватар для Азазель
 
Регистрация: 04.09.2007
Сообщений: 12
По умолчанию

Можно и покороче:
Код:
  
var
  reg: TRegistry;
begin
  reg := TRegistry.Create();
  reg.RootKey := HKEY_LOCAL_MACHINE;
 if reg.OpenKey('Software\Microsoft\Windows\CurrentVersion\Run', True)
    then
    begin
      reg.WriteString( Application.Title, Application.ExeName);
      reg.CloseKey();
    end;
   Reg.Free;
  end;
Но функцию не знаю

Последний раз редактировалось Азазель; 06.09.2007 в 20:52.
Азазель вне форума Ответить с цитированием
Старый 06.09.2007, 20:54   #7
UnD)eaD)Snake
Форумчанин Подтвердите свой е-майл
 
Аватар для UnD)eaD)Snake
 
Регистрация: 07.07.2007
Сообщений: 241
По умолчанию

Можна просто скопировать прогу в папку автозагрузки
(%SystemRoot%\Documents and Settings\All Users\Главное меню\Программы\Автозагрузка)
UnD)eaD)Snake вне форума Ответить с цитированием
Старый 07.09.2007, 00:04   #8
Ring0Sn
Форумчанин
 
Аватар для Ring0Sn
 
Регистрация: 06.09.2007
Сообщений: 239
По умолчанию

Цитата:
For Азазель: Спасибо конечно,но всё же я видел совсем мелкую функцию,и она запускала приложение при каждом запуске винды,я просто забыл её,точнее я её и не запоминал)))
жжешь, спец api функции нету, юзай реестр как те писал Азазель, или делай тоже самое тока на аpi!
Ring0Sn вне форума Ответить с цитированием
Старый 07.09.2007, 12:55   #9
pentiumForever
][@|{eR
 
Регистрация: 06.09.2007
Сообщений: 8
По умолчанию

Думаю это оптимальное решение для мелких приложений!
pentiumForever вне форума Ответить с цитированием
Старый 08.09.2007, 01:54   #10
Ring0Sn
Форумчанин
 
Аватар для Ring0Sn
 
Регистрация: 06.09.2007
Сообщений: 239
По умолчанию

Говорюже делай на аpi тогда если нужны маленькие приложения!
лови юнит и радуйся там все что тебе надо:
Вложения
Тип файла: rar advReg.rar (1.4 Кб, 17 просмотров)
Ring0Sn вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как создать обратную функцию, которая из уникального номера будет возвращать строку? SkAndrew Общие вопросы Delphi 8 06.04.2008 21:10
Работа с DLL - программа, которая будет общаться с файлами данных, представленных в текстовом виде SnakeMan Общие вопросы Delphi 31 02.11.2007 13:35
Автоматически запускать приложение лисенок БД в Delphi 3 17.04.2007 23:39
как вызвать в Dll по указателю функцию, которая определена в главном потоке? SaintRain Общие вопросы Delphi 1 25.11.2006 08:27
как вызвать из Dll функцию, которая определена в главном потоке? SaintRain Win Api 1 23.11.2006 20:08