Komunikaty Windows a Usługi

0

Witam!

Nie byłem pewien czy opisywać ten problem na forum, bo może okazać się on banalny. Mianowicie chodzi o usługi. Chciałbym, aby moja usługa reagowała na zmiane czasu w systemie. Tworze więc nową usługe, czyli File->New->Service Application. Następnie w klasie TService1 deklaruje procedure:

procedure WMTIMECHANGE(var Msg: TMessage); message WM_TIMECHANGE;

potem jej treść:

procedure TService1.WMTIMECHANGE(var Msg: tMessage);
begin
//Kod procedury
end;

następnie instaluje usługę, czyli z wiersza poleceń Project1.exe /install. Wyskakuje komunikat, że wszystko OK, potem przechodze do listy Usług w systemie i uruchamiam swoją usługe(usługa się uruchamia). Jednak po zmianie systemowego czasu nie dzieje się to co ma się dziać, właściwie nic się nie dzieje

Bardzo, bardzo prosze o pomoc

Pozdrawiam

0

Nie widzę rozgłaszania komunikatu, a to może być problemem...

0

nie, cokolwiek wpisze w treść procedure - nie działa

0

hej!

Zwykła aplikacja działa wporządku.

0

A chcesz aby twoja usługa "wykrywała" komunikat zmiany czasu i wykonywała jakąs procedurę. Aplikacja działa a usługa nie? Jak usługę napisałeś i czy jest uruchamiona. Najlepiej (z doświadczenia) usługi pisać jako aplikacje z formą ale w osobnym pliku, a na formie masz tylko 2 przyciski start i stop (ew. inne jeśli obsługujesz wstrzymaj itp) które wywołują z tamtego pliku procedury. Potem trywialnie łatwo jest przejść na usługę (o ile kompilator się nie zbiesi tak miałem w D5 czasem nie chciał kompilować pliku pas usługi choć kompilowął to samo w aplikacji). Jeśli tak zrobisz i nadal usługa nie będzie działała to tzreba sprawdzić co się dzieje z dochodzeniem do niej komunikatów - nie używałem ich w usłudze więc nie mam pojęcia czy "docierają" też do usług - na zdrowy rozsadek powinny.

0

Chyba masz racje, ten komunikat nie dochodzi do usługi (An application sends the WM_TIMECHANGE message to all top-level windows after changing the system time. ). W związku z powyższym mam pytanie: w jaki sposób można w usłudze umieścić formularz, aby otrzymywał on ten komunikat?

0

z tego zo pamietam to w uslugach nie moze byc zadnych formularzy bo wywola to "blad wewnetrzny"....
kiedys probowalem napisac usluge key-loggera i tez nie docieraly zadne komunikaty...
hmmm... a jak by formularz wywolac z dlla?

pozdro.

0

Hej! Dzięki bardzo Cimak!!! W sumie rozwiązanie bardzo proste, ale na takie czasami najtrudniej wpaść. Jeszcze raz dziękuje.

Pozdrawiam serdecznie.

1 użytkowników online, w tym zalogowanych: 0, gości: 1