Problem mit Windows-Dienst
-
Hi
Zuerst informiere Dich mal hier.
http://msdn.microsoft.com/en-us/library/ms687098(v=VS.85).aspx
http://msdn.microsoft.com/en-us/library/ms681928(v=VS.85).aspxint interaction(void) { HWINSTA m_hWinsta; HDESK m_hDesk; /* Interaction -------------------------------------------- */ m_hWinsta = OpenWindowStation("winsta0", FALSE, WINSTA_ACCESSCLIPBOARD | WINSTA_ACCESSGLOBALATOMS | WINSTA_CREATEDESKTOP | WINSTA_ENUMDESKTOPS | WINSTA_ENUMERATE | WINSTA_EXITWINDOWS | WINSTA_READATTRIBUTES | WINSTA_READSCREEN | WINSTA_WRITEATTRIBUTES ); if(m_hWinsta == NULL) { printf("error"); return 1; } SetProcessWindowStation(m_hWinsta); m_hDesk = OpenInputDesktop( DF_ALLOWOTHERACCOUNTHOOK, FALSE, DESKTOP_CREATEMENU | DESKTOP_CREATEWINDOW | DESKTOP_ENUMERATE | DESKTOP_HOOKCONTROL | DESKTOP_JOURNALPLAYBACK | DESKTOP_JOURNALRECORD | DESKTOP_READOBJECTS | DESKTOP_SWITCHDESKTOP | DESKTOP_WRITEOBJECTS ); if(m_hDesk == NULL) { printf("error"); return 1; } SetThreadDesktop(m_hDesk); return 0; }lowbyte
-
Hab es nun mit nem anderen Code gelöst.
Quelle:
http://www.codeproject.com/KB/system/xyntservice.aspx
(Sehr empfehlenswert)
-
Versuch mal ein Log-File einzubauen und dieses dann mit DebugAusgaben zu füttern.
Sollte dein Code also ausgeführt werden wirst du es so erkennen(So eine Log-Datei ist wirklich eine lohnenswerte Zusatzklasse
).
Außerdem würde ich entweder einen Breakpoint setzen und Debuggen(Attach) oder für die faulen unter uns ein DebugBreak(); einfügen.
Sollte das System dort tatsächlich ankommen
- Ein Service hat von Natur aus einfach weniger Möglichkeiten (Schließlich startet derselbige ja auch schon mit dem System hoch) - deswegen mußt du dann ein wenig tricksen - dazu aber dann später mehr wenn du weißt ob das System dort ankommt.MfG
Sönke