TService - глюк с сервисным приложением

  • Автор темы sCORpio80
  • Дата начала
Статус
Закрыто для дальнейших ответов.
S

sCORpio80

#1
Пишу программу с помощью таймера отслеживаю какие окна активын и сохраняю в текстовый файл, когда работа и дет в обычном приложении все нормально, после того как я это вставил в сервисное и запускаю как сервис не работает. Помогите, please, может кто-нить знает в чем причина?
Ошибка возникает где-то при работе с Handlt'ами
Код:

procedure TService1.Timer1Timer(Sender: TObject);
Var hWnd_a : THandle;
cap : array[0..255] of Char;
sText : string;
begin
hWnd_a := GetForegroundWindow();
if (hWnd_0 <> hWnd_a) {and (GetWindowText(hwnd_a, cap, SizeOf(cap))>0)} Then
begin
SetString(sText, cap, GetWindowText (hwnd_a, cap, SizeOf(cap)));
AssignFile(F, File_Name);
if FileExists(File_name) then Append(F)
else Rewrite(F);
Writeln(F, DateToStr(Now) +',' + TimeToStr(Now) + ',' + stext );
closefile(F);
end;
hWnd_0 := hWnd_a;
end;
end.
 
B

Barmutik

#2
Так и что конкретно не работает?

Может быть сервис не может в файл записать? Может у него просто прав не хватает?

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

Да и второй момент... у вас как видно процедура не реинтерабельная(т.е. опвторновходимая) и поэтому стоит в начале обработкт процедуры OnTimer отключать таймер а по окончании включать его опять... потенциально убережёт от ошибок ...
 
Статус
Закрыто для дальнейших ответов.