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).aspx

    int 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


Anmelden zum Antworten