Usługa systemowa i GetAsyncKeyState

0

Witam!
Osoby które programują troszkę więcej pewnie od razu po opisie domyślą się o co chodzi.
Mianowicie jako zaliczenie projektu z programowania mam napisać usługę systemową logującą interakcje użytkownika z komputerem, a mianowicie wciskane klawisze, w skrócie keylogger.

Stworzenie usługi jakoś się udało, używam Visual Studio 2010 i skorzystałem z szablonu.
Z tutków i opisów na necie wyczytałem, że mogę użyć funkcji GetAsyncKeyState i wywoływać ją co chwile, następnie sprawdzić w pętli jaki klawisz został wciśnięty i zapisywać go do pliku (pomysł ze strony http://www.pinvoke.net/default.aspx/user32.getasynckeystate).

Niestety GetAsyncKeyState zwraca za każdym razem 0, tak się dzieje w przypadku gdy tworzę usługę, w aplikacji okienkowej sposób działa.

Modlę się już drugi dzień nad tym czymś i nie mam pomysłu jak to zrobić poprawnie. Mógłbym zrobić normalną aplikację okienkową i ukryć formatkę, nazwę aplikacji z paska i takie tam, ale przyczepił się do mnie że ma być usługa i tyle :/

Prosił bym o pomoc, podpowiedz, ew jakiegoś linka do lektury :)

0

http://social.msdn.microsoft.com/forums/en-US/csharpgeneral/thread/084cf74c-0c1c-4284-bc0f-2914e6917ec8/

Znalazłem takie objaśnienie. Wg którego wynika że nie można użyć tej funkcji ponieważ proces pracuje na innym pulpicie niż aktualny użytkownik.

Services run in a different desktop than the user see; therefore you can't use GetAsyncKeyState to peek at the keyboard for the "active" user.

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