Показать сообщение отдельно
  #2  
Старый 09.11.2022, 20:58
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,051
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Если мне не изменяет память, то в последних версиях служба не может создавать окна, соотв., таймер работать не будет. Как решение - создать дополнительный поток, который будет ждать нужного времени и запускать соотв. программу. Только надо сделать проверку, что бы не запускалось много копий. Например, по дате последнего запуска.
Что-то типа:
Код:
unit RunAppThread;

unterface

uses ...

type
  TRunAppThread = class(TThread)
    FLastRunDate : TDateTime;
    procedure Execure; override
  end;

implementation

procedure TRunAppThread.Execure;
begin
  While Not Terminated Do
    begin
      if (FLastRunDate <> Date) And (HourOf(Time) = 23) And (MinuteOf(Time) = 20) Then
        Begin
          ShellExecute(...); // тут, возможно, придется делать через CreateProcess
          FLastRunDate := Date;
        End;
      Sleep(15000); // Пауза в 15 секунд, можно сделать в 30 секунд
    end;
end;
Ответить с цитированием