Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » Delphi - Delphi 7 написание сервиса (службы)

Ответить
Настройки темы
Delphi - Delphi 7 написание сервиса (службы)

Пользователь


Сообщения: 89
Благодарности: 0

Профиль | Отправить PM | Цитировать


Добрый день!
Пишу службу на Delphi 7 (ОС Windows 7), идея такова: идет таймер, в событиях таймера прописано, например: if timetostr(time)='02:00:00' then ... что-то делать.
Службу компилировал, зарегистрировал, когда запускаю - пишет сразу что служба остановлена т.к. ей нечего делать. Конечно не сразу стал тут писать, загуглил, прочел что надо что-нибудь написать в процедуре ServiceExecute, но ни один из предложенных вариантов у меня не заработал. Пробовал писать в той процедуре следующее:
1. timer1.enabled=true (хотя изначально я это писал на процедуре старта)
2. ServiceThread.ProcessRequests(true); и false тоже
3. Разные вариации на тему while not Terminated do (так же таймер запускал, писал ServiceThread.ProcessRequests с true и false)
4. Пытался по-своему извращаться, присваивал какой-нить переменной какое-нить значение, даже проверки какие-то пытался писать в качестве заглушки.
Результат один: при запуске службы она сразу же останавливается. Сразу говорю, дабы исключить ошибку в коде пробовал те же самые телодвижения делать в обычном приложении (не в службе) - и оно работает!
Подскажите пожалуйста, как все-таки эту заразу заставить заработать? Спасибо!

Отправлено: 19:10, 03-01-2014

 

Ветеран


Сообщения: 27449
Благодарности: 8087

Профиль | Отправить PM | Цитировать


Приведите Ваш код. Весь.

Отправлено: 21:18, 03-01-2014 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Пользователь


Сообщения: 89
Благодарности: 0

Профиль | Отправить PM | Цитировать


Вот привожу код. Основные события должны были выполняться в TService1.Timer1Timer - на данный момент мне нужно чтоб строка записывалась в файлы для проверки работы службы, я думаю если я добьюсь того что оно начнет работать и писать в файл тогда можно будет и другие события добавлять.

unit Unit1;

interface

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

type
TService1 = class(TService)
Timer1: TTimer;
adocon: TADOConnection;
procedure ServiceStart(Sender: TService; var Started: Boolean);
procedure ServiceExecute(Sender: TService);
procedure Timer1Timer(Sender: TObject);
procedure ServiceStop(Sender: TService; var Stopped: Boolean);
private
{ Private declarations }
public
function GetServiceController: TServiceController; override;
{ Public declarations }
end;

var
Service1: TService1;
t:integer;
f: textfile;
cs: textfile;

implementation

{$R *.DFM}

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

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

procedure TService1.ServiceStart(Sender: TService; var Started: Boolean);
var strcon:string;
begin
started:=true;
t:=0;
AssignFile(F, 'D:\Progs\test_service\test.txt');
AssignFile(cs, 'connectionstring.txt');
rewrite(f);
reset(cs);
read(cs, strcon);
adocon.ConnectionString:=strcon;
adocon.Connected:=true;
timer1.Enabled:=true;
end;

procedure TService1.ServiceExecute(Sender: TService);
//var a:byte;
begin
//while not Terminated do
// a:=1;
//timer1.Enabled:=true;
//if timetostr(time)='00:00:00' then
timer1.Enabled:=true;
ServiceThread.ProcessRequests(true);
end;

procedure TService1.Timer1Timer(Sender: TObject);
begin
if timetostr(time)='16:10:00' then Writeln(f, 'õóé');
//t:=t+1;
//if t mod 5 =0 then
//begin
// Writeln(f, 'õóé');
// showmessage('test');
// end;
//if t>1000 then t:=0;
end;

procedure TService1.ServiceStop(Sender: TService; var Stopped: Boolean);
begin
closefile(f);
closefile(cs);
stopped:=true;
end;

end.

Отправлено: 15:48, 05-01-2014 | #3



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » Delphi - Delphi 7 написание сервиса (службы)

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Написание сайта PulSar.CE194694 Вебмастеру 6 18-06-2013 14:36
Delphi - [решено] Написание проги в delphi Rock Star Программирование и базы данных 1 07-04-2011 15:08
Написание вирусов... JCooper Программирование и базы данных 11 07-08-2002 12:42
Написание прог Apis.NET Программирование и базы данных 13 28-06-2002 19:00




 
Переход