Всем привет! Кто писал сервисы на Delphi, подскажите. Вот код сервиса:
Код:
unit Main;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, SvcMgr, Dialogs,
ExtCtrls, AppEvnts;
type
TService1 = class(TService)
Timer1: TTimer;
ApplicationEvents1: TApplicationEvents;
procedure ServiceAfterInstall(Sender: TService);
procedure ServiceStart(Sender: TService; var Started: Boolean);
procedure ServiceStop(Sender: TService; var Stopped: Boolean);
procedure Timer1Timer(Sender: TObject);
private
{ Private declarations }
public
function GetServiceController: TServiceController; override;
{ Public declarations }
end;
var
Service1: TService1;
f: TextFile;
Wnd: HWND;
Pos: TPoint;
buff: array[0..255] of char;
NameClass: string;
implementation
{$R *.DFM}
procedure ServiceController(CtrlCode: DWord); stdcall;
begin
Service1.Controller( CtrlCode );
end;
function TService1.GetServiceController: TServiceController;
begin
Result := ServiceController;
end;
procedure TService1.ServiceAfterInstall(Sender: TService);
var
s: string;
begin
s := ExtractFilePath( Application.GetNamePath ) + 'test.txt';
AssignFile( f, s );
if FileExists( s ) then
Append( f )
else
Rewrite( f );
end;
procedure TService1.ServiceStart(Sender: TService; var Started: Boolean);
begin
AfterInstall( Sender );
end;
procedure TService1.ServiceStop(Sender: TService; var Stopped: Boolean);
begin
CloseFile( f );
end;
procedure TService1.Timer1Timer(Sender: TObject);
begin
GetCursorPos( Pos );
Wnd := WindowFromPoint( Pos );
GetClassName( Wnd, buff, SizeOf( buff ) );
NameClass := StrPas( buff );
Writeln( f, DateTimeToStr( Now ) + ' ' + ClassName + Format( ' %d %d', [Pos.x,Pos.y] ) );
end;
end.
Ситуация следующая. При инсталляции сервиса файл test.txt создается в директории программы (как и задумано), однако во время работы (или при перезапуске) все пишется в c:\WINDOWS\system32\test.txt. Мне непонятно, почему меняется путь, и как этого не допустить? И еще момент. В файл должно писаться текущее время, класс окна под курсором и координаты курсора... А вот что пишется на самом деле
Цитата:
20.01.2007 2:31:01 TService1 261 253
20.01.2007 2:31:02 TService1 483 190
20.01.2007 2:31:03 TService1 342 464
20.01.2007 2:31:04 TService1 170 425
20.01.2007 2:31:05 TService1 170 425
20.01.2007 2:31:06 TService1 170 425
20.01.2007 2:31:07 TService1 175 423
20.01.2007 2:31:08 TService1 569 440
20.01.2007 2:31:09 TService1 832 521
20.01.2007 2:31:10 TService1 978 520
20.01.2007 2:31:11 TService1 994 519
20.01.2007 2:31:12 TService1 712 513
20.01.2007 2:31:13 TService1 267 455
20.01.2007 2:31:14 TService1 269 456
20.01.2007 2:31:15 TService1 264 456
20.01.2007 2:31:16 TService1 264 456
20.01.2007 2:31:17 TService1 264 456
20.01.2007 2:31:18 TService1 264 456
20.01.2007 2:31:19 TService1 264 456
20.01.2007 2:31:20 TService1 453 452
20.01.2007 2:31:21 TService1 501 313
|
тоесть, время и координаты курсора определяются нормально, а вот класс окна нифига. Кто сталкивался с подобным и решил это, помогите...