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

Вниз

Опять сервисы !!!   Найти похожие ветки 

 
BigFoot   (2001-10-12 12:24) [0]

Народ, помогите с сервайсами !!!
Объясняю задачу: Мне нужен сервис, который бы постоянно убивал определённые процессы. Вернее, сервайс бы постоянно посылал сообщение WM_CLOSE окнам с определённым названием\классом окна, а так же валил собственно процессы. Список процессов\Окон он должен находить в файле config.ini, который лежит в том же каталоге, что и исполняемый файл сервиса.
Мой "сервис" выглядит так:

Unit BFServ;

Interface

Uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, SvcMgr, Dialogs, Inifiles, Forms;

Type
TMyServ = Class(TService)
Procedure ServiceExecute(Sender: TService);
Procedure ServiceStart(Sender: TService; Var Started: Boolean);
private
{ Private declarations }
wlist: TStrings;
clist: TStrings;
plist: TStrings;
WindowsList: TStrings;
ClassesList: TStrings;
ProcessesList: TStrings;
public
Function GetServiceController: TServiceController; override;
Procedure ReadDatas;
{ Public declarations }
End;
Var
MyServ : TMyServ;

Implementation

{$R *.DFM}

Procedure ServiceController(CtrlCode: DWord); stdcall;
Begin
MyServ.Controller(CtrlCode);
End;

Function TMyServ.GetServiceController: TServiceController;
Begin
Result:= ServiceController;
End;

Procedure TMyServ.ReadDatas;
Var
CfgFile : TIniFile;
s1 : String;
i : Integer;
Begin
wlist:= TStringList.Create;
clist:= TStringList.Create;
plist:= TStringList.Create;
WindowsList:= TStringList.Create;
ClassesList:= TStringList.Create;
ProcessesList:= TStringList.Create;

If (FileExists(ExtractFileDir(Application.ExeName) + "\config.cfg")) Then
Begin
CfgFile:= TIniFile.Create(s1);
CfgFile.ReadSection("WINDOWS", WList);
CfgFile.ReadSection("CLASSES", CList);
CfgFile.ReadSection("PROCESSES", PList);
If (Assigned(WList)) And (wlist.Count > 0) Then
For i:= 0 To wlist.Count - 1 Do
WindowsList.Add(CfgFile.ReadString("WINDOWS", "w" + IntToStr(i), ""));
If (Assigned(CList)) And (Clist.Count > 0) Then
For i:= 0 To Clist.Count - 1 Do
ClassesList.Add(CfgFile.ReadString("CLASSES", "c" + IntToStr(i), ""));
If (Assigned(PList)) And (Plist.Count > 0) Then
For i:= 0 To Plist.Count - 1 Do
ProcessesList.Add(CfgFile.ReadString("PROCESSES", "p" + IntToStr(i), ""));
CfgFile.Free;
ServiceThread.ProcessRequests(True);
End;
End;

Procedure TMyServ.ServiceExecute(Sender: TService);
Var
i : Integer;
Begin
While Not Terminated Do
Begin
For i:= 0 To WindowsList.Count - 1 Do
SendMessage(FindWindow(Nil, PChar(WindowsList[i])), WM_CLOSE, 0, 0);
ServiceThread.ProcessRequests(True);
If terminated Then Application.Terminate;
For i:= 0 To ClassesList.Count - 1 Do
SendMessage(FindWindow(PChar(ClassesList[i]), Nil), WM_CLOSE, 0, 0);
End;

End;

Procedure TMyServ.ServiceStart(Sender: TService; Var Started: Boolean);
Begin
ReadDatas;
Status:= csRunning;
End;

End.

Сервис стартует и останавливается, но за свою жизнь ничего послезного не делает. Почему ? Кто знает, помогите, плиз !!
Need help !!!


 
SKiwa   (2001-10-13 07:55) [1]

На вскидку приходит в голову следующее
ServiceThread.ProcessRequests(True);
Замени на
ServiceThread.ProcessRequests(False);

ProcessRequests(True) - ожидает сообщения, соответственно Execute у тебя фактически выполняется при старте и завершении и все.



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

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

Наверх





Память: 0.45 MB
Время: 0.004 c
3-75469
Buben
2001-12-19 09:48
2002.01.24
RDM + IBEvents


14-75675
Wonder
2001-11-30 17:03
2002.01.24
:^)


1-75556
Cobalt
2002-01-05 11:47
2002.01.24
Создание своих форм


3-75495
Havez
2001-12-19 18:52
2002.01.24
Постоянно портится Autoincrement поле


3-75480
vasilly
2001-12-20 09:12
2002.01.24
Как из дельфи изменить хранимую процедуру для IB6??? То что написано ниже не работает, хотя из консоли проходит при добавлении TERM





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский