Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
KANSoftWare

Автоматический запуск процедуры в Delphi 2010 на Windows без изменения реестра

Delphi , ОС и Железо , Windows

При разработке приложений на Delphi 2010 часто возникает потребность в автоматическом выполнении определённых процедур при старте операционной системы Windows, независимо от запуска программ. В данной статье мы рассмотрим, как можно реализовать такой функционал, не изменяя при этом реестр системы, что может быть важно с точки зрения безопасности и удобства установки.

Варианты решения

Существует несколько подходов к решению данной задачи, и все они требуют прав администратора. Рассмотрим наиболее популярные из них:

  1. Создание сервиса, который будет запускаться автоматически при старте системы до входа любого пользователя.
  2. Добавление записи в реестр HKLM\Software\Microsoft\Windows\CurrentVersion\Run, что выполнит процедуру при входе интерактивного пользователя.
  3. Создание запланированной задачи с соответствующим триггером, например, "При старте".

Пример кода сервиса на Object Pascal

Для создания сервиса можно использовать следующий пример кода на Object Pascal, который будет запускаться в фоновом режиме при старте системы:

program WinService;

{$APPTYPE CONSOLE}

uses
  Servers,
  Classes,
  SysUtils;

// Сервисный объект
TMyService = class(TService)
public
  procedure Execute(ASrv: TService; var ATerminated: Boolean);
end;

// Конструктор сервиса
constructor CreateService;
begin
  with TService.Create(ParamStr(0), TMyService) do
    try
      Name := 'MyService';
      DisplayName := 'My Service';
      Description := 'This service runs a procedure on system startup';
      StartType := stAutoStart;
      StartParams.SecureStart := ssLocalSystem;
      if not Install then
        raise Exception.Create('The service failed to install');
    finally
      Free;
    end;
end;

{ TMyService }

procedure TMyService.Execute(ASrv: TService; var ATerminated: Boolean);
begin
  // Здесь разместите код процедуры, которая должна быть выполнена при старте системы
  // Например, можно написать цикл, который будет выполняться до остановки сервиса
  while not ATerminated do
  begin
    Sleep(5000); // Задержка в 5 секунд
    // Ваш код
  end;
end;

begin
  CreateService;
  ServiceManager.RunServices;
end.

Запуск процедуры с использованием запланированной задачи

Для создания запланированной задачи, которая будет запускать вашу процедуру при старте системы, можно передать аргумент в командной строке, который будет указывать, что задача запущена при старте системы:

program StartupProcedure;

uses
  Classes,
  SysUtils;

function IsStartup: Boolean;
begin
  Result := CommandLineParams[0] = 'Startup'; // Проверяем, передан ли аргумент 'Startup'
end;

procedure PerformStartupProcedure;
begin
  // Здесь разместите код процедуры, которую нужно выполнить при старте системы
  if IsStartup then
  begin
    // Ваш код для выполнения при старте системы
  end;
end;

begin
  PerformStartupProcedure;
end.

После этого, создайте задачу в планировщике задач Windows, указав соответствующий триггер "При старте" и передайте в качестве аргумента командной строки значение 'Startup'.

Заключение

В данной статье мы рассмотрели, как можно автоматически запускать процедуры в Delphi 2010 на Windows без изменения реестра, создавая сервисы или запланированные задачи. Приведённые примеры кода помогут вам реализовать необходимый функционал. Выбирайте подход, который лучше всего подходит под ваши требования и условия работы приложения.

Создано по материалам из источника по ссылке.

Автоматический запуск процедуры в Delphi 2010 на Windows без внесения изменений в реестр достигается через создание сервиса или запланированных задач.


Комментарии и вопросы

Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.


:: Главная :: Windows ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-12-22 20:14:06
2025-05-01 10:37:27/0.00360107421875/0