Модераторы: Poseidon, Snowy, bems, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Запуск программы, в определенное время 
:(
    Опции темы
JohnnY
Дата 6.12.2005, 22:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 65
Регистрация: 20.8.2005
Где: Калининград

Репутация: нет
Всего: нет



Подскажите, как можно в Delphi сделать так, чтобы в какое-то определённое время (например в 21:30) запускалась какая нибудь программа (*.exe файл)...
PM MAIL WWW   Вверх
Snowy
Дата 6.12.2005, 22:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: 192
Всего: 484



Самый простой способ:
Код

repeat
  Sleep(1000);
  Application.ProcessMessages;
until copy(TimeToStr(now),1,5)='21:30';
WinExec('C:\Windows\system32\winmine.exe');

Добавлено @ 22:50
либо аналогично проверять по таймеру.
PM MAIL   Вверх
Демо
Дата 6.12.2005, 22:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1278
Регистрация: 3.11.2005

Репутация: 30
Всего: 50



Цитата(Snowy @ 6.12.2005, 23:49)
Самый простой способ


Есть еще проще - воспользоваться стандартным шедулером Windows
smile


--------------------
    
PM MAIL ICQ Skype   Вверх
Snowy
Дата 6.12.2005, 23:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: 192
Всего: 484



Цитата
Есть еще проще - воспользоваться стандартным шедулером Windows

Стандартный шедуллер не входит в состав дельфи.
И не у всех он работает.
У меня, например, он прибивается сразу после установки системы.
И использовать его из дельфи далеко не самый простой способ.
PM MAIL   Вверх
Демо
Дата 6.12.2005, 23:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1278
Регистрация: 3.11.2005

Репутация: 30
Всего: 50



Цитата(Snowy @ 7.12.2005, 00:08)
И использовать его из дельфи далеко не самый простой способ.


А, ну да. Автору нужно из своей программы.
Вот тут тоже один сударь над темой работает:

http://forum.vingrad.ru/index.php?showtopic=71613&view=all
Добавлено @ 23:14
Кстати, вот наша совместная с ним заготовка - по-существу, шаблон сервиса. Для простейшего шедулера уже все готово, только вычистить лишнее:
Код

unit uShdService;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, SvcMgr, Dialogs,
  ExtCtrls, uIni;

type

  TThreadTimer=class(TThread)
  protected
    procedure Execute; override;
  end;

  TShdS = class(TService)
    procedure ServiceExecute(Sender: TService);
    procedure ServiceStart(Sender: TService; var Started: Boolean);
    procedure ServiceStop(Sender: TService; var Stopped: Boolean);
    procedure ServiceContinue(Sender: TService; var Continued: Boolean);
    procedure ServicePause(Sender: TService; var Paused: Boolean);
  private
    { Private declarations }
  public
    function GetServiceController: TServiceController; override;
    { Public declarations }
  end;

  TJob=record
    StartTime: TDateTime;
    LastTime: TDateTime;
    Interval: Integer;
    CountRepeat: Integer; //-1 - неограниченное число повторов
    LastStarted,LastEnded: TDateTime;
    HProcess,HThread: THandle;
  end;

  TJobs=array of TJob;

  TParamShd=record
    isRegistry: Boolean;
    isLog: Boolean;
    LogFilePath: String;
    Jobs: TJobs;
  end;

var
  ShdS: TShdS;
  ThrTimer: TThreadTimer;
  isLog: Boolean;
  LogFilePath: String;
  PS: TParamShd;

implementation

{$R *.DFM}

procedure LoadRegParam;
begin

  if uIni.KeyExists('isLog')
    then PS.isLog := uIni.GetRegBool('isLog')
    else uIni.SetRegBool('isLog',False);

  if PS.isLog then
  begin
    if uIni.KeyExists('LogFilePath') then PS.LogFilePath := uIni.GetRegStr('LogFilePath');
    if PS.LogFilePath='' then
    begin
      PS.isLog := False;
    end;
  end;
end;

procedure LoadIniParam;
begin
end;

function LoadParam: Boolean;
begin
  Result := False;

  try
    if uIni.KeyExists('isRegistry')
      then PS.isRegistry := uIni.GetRegBool('isRegistry')
      else uIni.SetRegBool('isLog',False);

    if PS.isRegistry
      then LoadRegParam
      else LoadIniParam;
    Result := True;
  except
  end;
end;

procedure CheckJobs;
begin
  LoadParam;
end;

{TShdS}

procedure ServiceController(CtrlCode: DWord); stdcall;
begin
  ShdS.Controller(CtrlCode);
end;

function TShdS.GetServiceController: TServiceController;
begin
  Result := ServiceController;
end;

procedure TShdS.ServiceExecute(Sender: TService);
begin
    while not terminated do
    begin
      ServiceThread.ProcessRequests(True);
    end;
end;

procedure TShdS.ServiceStart(Sender: TService; var Started: Boolean);
begin
  ThrTimer := TThreadTimer.Create(True);
  ThrTimer.FreeOnTerminate := True;
  try
    Started := True;
  except
    ThrTimer.Terminate;
    Started := False;
  end;
  ThrTimer.Resume;
end;

procedure TShdS.ServiceStop(Sender: TService; var Stopped: Boolean);
begin
  ThrTimer.Terminate;
  Stopped := True;
end;

procedure TShdS.ServiceContinue(Sender: TService;
  var Continued: Boolean);
begin
  ThrTimer.Resume;
  Continued := True;
end;

procedure TShdS.ServicePause(Sender: TService; var Paused: Boolean);
begin
 ThrTimer.Suspend;
 Paused := True;
end;

{ TThreadTimer }

procedure TThreadTimer.Execute;
var
  s: String;
begin
  while not Terminated do
  begin
    try
      s := FormatDateTime('hh:nn:ss',Now)+#13#10;
      CheckJobs;
      Sleep(1000);
    except
    end;
  end;
end;


end.




--------------------
    
PM MAIL ICQ Skype   Вверх
JohnnY
Дата 7.12.2005, 00:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 65
Регистрация: 20.8.2005
Где: Калининград

Репутация: нет
Всего: нет



Snowy, это в Timer писать надо???
Цитата(Snowy @ 6.12.2005, 22:49)
1:
repeat
  Sleep(1000);
  Application.ProcessMessages;
until copy(TimeToStr(now),1,5)='21:30';
WinExec('C:\Windows\system32\winmine.exe');


Это сообщение отредактировал(а) JohnnY - 7.12.2005, 00:32
PM MAIL WWW   Вверх
Albinos_x
Дата 7.12.2005, 00:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Evil Skynet
****


Профиль
Группа: Комодератор
Сообщений: 3288
Регистрация: 28.5.2004
Где: X-6120400 Y-1 4624650

Репутация: 26
Всего: 108



судя по содержании оно и есть таймер...


--------------------
"Кто владеет информацией, тот владеет миром"    
Уинстон Черчилль
PM MAIL ICQ   Вверх
Snowy
Дата 7.12.2005, 01:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: 192
Всего: 484



Нет, это надо писать куда-нибудь. Только не в таймер.
Куда напишешь, там и будет работать.
PM MAIL   Вверх
Albinos_x
Дата 7.12.2005, 01:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Evil Skynet
****


Профиль
Группа: Комодератор
Сообщений: 3288
Регистрация: 28.5.2004
Где: X-6120400 Y-1 4624650

Репутация: 26
Всего: 108



Цитата(Albinos_x @ 7.12.2005, 00:42)
судя по содержании оно и есть таймер...

если вдруг меня не поняли... хотел сказать, что оно само реализует функцию таймера... код ждёт пока не настанет время Ч, а потом только запускает приложение


--------------------
"Кто владеет информацией, тот владеет миром"    
Уинстон Черчилль
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0514 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.