Odbieranie wiadomości systemu Windows w usłudze

Napisałem usługę w VC ++. Poszedłem zatutorial tutaj. Teraz próbuję dowiedzieć się, jak odbierać wiadomości takie jak DBT_DEVICEARRIVAL, DBT_DEVICEREMOVECOMPLETE, WM_COPYDATA itp., Tak jak zwykła aplikacja, która ma okno najwyższego poziomu. Szukając go, natknąłem sięten artykuł MSDN

W sekcji „Wiadomości nadawcze” w ostatnich akapitach:

Aplikacje odbierają wiadomości za pośrednictwem procedury okien swoich okien najwyższego poziomu. Wiadomości nie są wysyłane do okien potomnych.Usługi mogą odbierać wiadomości za pośrednictwem procedury okna lub programów obsługi kontroli usług.

Ale prawie niemożliwe jest znalezienie jakiegokolwiek przykładu, jak to zrobić.

Jak mogę skojarzyć WndProc z moją usługą, aby otrzymywać wiadomości?

Lub, jak mogę sprawić, aby moja funkcja obsługi sterowania usługami otrzymywała komunikaty systemu Windows? Mój program obsługi kontroli usług ma tylko jeden parametr DWORD, a nie UINT, WPARAM, LPARAM itp. WndProc.

Przeczytałem o 1) używając ukrytego okna i 2) okna tylko do wiadomości itp., Ale nie sądzę, żebym mógł ich użyć w usłudze; nie chcę. Byłoby miło, gdyby udało mi się to osiągnąć na dwa sposoby, o których wspomina MSDN.

Opis usługi:

Usługa wykryje włożenie urządzenia USB i skopiuje do niego niektóre pliki. Musi także śledzić zmiany w niektórych katalogach i plikach, aby wiedział, które z nich należy skopiować.

Ta podstawowa funkcjonalność może zostać rozszerzona w przyszłości o inne rzeczy. Może więc będę musiał odbierać wiele innych komunikatów systemu Windows, o których teraz nie wiem.

Wspomniane wyżej przykładowe wiadomości są po prostu pobierane z tego, do czego przywykłem, podczas tworzenia zwykłej aplikacji Windows. Rozumiem, czy nie są odpowiednie lub bezpieczne podczas pisania usługi.

questionAnswers(2)

yourAnswerToTheQuestion