IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Windows Discussion :

VC++ et evenements windows


Sujet :

Windows

  1. #1
    Membre régulier Avatar de Joccy
    Profil pro
    Inscrit en
    Août 2007
    Messages
    153
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 153
    Points : 81
    Points
    81
    Par défaut VC++ et evenements windows
    bonjour,

    Je suis en train de corriger du code d'un service interactif sous VC++ 6.0 (avec fenetre: je sais c'est moche et ca ne fonctionnera pas sous Vista ..).

    Bref, je me met en mode tout éteint (ecran, led, ...) et en cliquant sur mon ecran tactile une fois, ca revient à la normale. Ca, ca fonctionne.

    Par contre, lorsque l'écran de veille est en route, le premier click est pour la veille , le deuxième pour mon appli. D'ou probleme en cas de mot de passe après ecran de veille (mon ecran reste noir (en mode tout eteint) et tant que je n'ai pas mon mot de passe je ne peux pas revenir à la normale, mais comme l'ecran est noir, je n'ai pas acces à mon mot de passe ... On se mord la queue comme dirait le serpent !!)

    Savez-vous comment récupérer les évenements windows dans ce cas là ? Y a t il une gestion des priorités ??? ou autre ?

    Merci de votre aide.

    EDIT: est ce que Windows envoie des messages/evenements aux services ?

    EDIT 2 : J'ai réussi à capturer l'evenement de lancement de l'ecran de veille:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    	LRESULT CMainFrame::WindowProc (UINT   p_uiMessage,
                                        WPARAM wParam,
                                        LPARAM lParam)
    {
    
    if (p_uiMessage == WM_SYSCOMMAND)
    {
    	if ((wParam == SC_SCREENSAVE) || ((wParam & 0xfff0) == SC_SCREENSAVE))
    	{
    		trace("Ecran de veille activé");
    		if (m_bIsMute)
    		{
    			bEcranVeille = true;
    		}
    	}
    }
    
    return CServiceWindow::WindowProc (p_uiMessage, wParam, lParam);
    
    }
    Comment savoir que l'ecran de veille a été désactivé ? enfin, en cours d'arret ? L'evenement WM_LBUTTONDOWN ne nous parvient pas lorsque l'ecran de veille est activé. Il doit etre intercepté par windows et non broadcasté ... Une idée SVP ?
    Merci

  2. #2
    Membre régulier Avatar de Joccy
    Profil pro
    Inscrit en
    Août 2007
    Messages
    153
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 153
    Points : 81
    Points
    81
    Par défaut
    Bon, après plein de recherches sur internet, je suis passée par un hook global sans DLL pour capturer le WM_LBUTTONDOWN en cas d'ecran de veille SANS mot de passe et par une fonction executeBackgroundTask() de mon service qui, elle, appelle la fonction suivante régulièremement pour un ecran de veille AVEC mot de passe (on recherche sur le desktop, le winlogon):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    // ATTENTION :
    // si on active la case à cocher "A la reprise, proteger par mot de passe" sous l'onglet
    // "ecran de veille" de la boite de dialogue "Propriété d'affichage", l'ecran de veille s'execute 
    // sur son propre bureau
    // Si cette case à cocher est décochée, l'ecran de veille s'execute sur le bureau par defaut
    // Cette fonction n'est executée que lors de l'ecran de veille AVEC mot de passe
    // (sinon, on sort du mode secret avec le Hook)
    BOOL CMonService::monitor_desktop()
    {
    	BOOL ret;
    	CString Desktop;
    	HDESK hDesktop;
    	TCHAR tmp[256];
    	DWORD lpnLengthNeeded;
    	CString str_winlogon = _T("Winlogon");
    	CString str_tmp;
    	BOOL winlogon_desktop;		
    
    	if (m_etat_mouse == MOUSE_INIT)	// En mode secret
    	{
    		// Determiner le desktop actif
    		Desktop = _T("WinSta0\\");
    		   // Récupération du Desktop actif
    		hDesktop = OpenInputDesktop(0,TRUE,GENERIC_READ|GENERIC_WRITE);
    		ret = (hDesktop != NULL);
    
    		if (ret) 
    		{
    			ret = GetUserObjectInformation(hDesktop,UOI_NAME,tmp,256,&lpnLengthNeeded);
    			if (!ret) CloseHandle(hDesktop);
    		}
    
    		if (ret)
    		{
    			// Determiner si le desktop est Winlogon.
    		   str_tmp = tmp;
    		   winlogon_desktop = (str_tmp.CompareNoCase(str_winlogon) == 0);
    
    		   // Si le mode veille possede un mot de passe
    		   // Revenir en mode NON secret
    		   if (m_bMuteStatus && winlogon_desktop )
    		   {
    			   m_etat_mouse = MOUSE_OFF;
    			   // Fin du mode secret
    			   SendNotifyMessage (m_hWnd, MONMSG_MUTE_END, 0, 0);
    		     }
    
    		}
    	}
    	return ret;
    
    }
    Bon, je n'ai pas eu d'aide mais bon, ce n'était peut-être pas le bon forum ou alors ... tout le monde est en vacances !!!

    @+

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. journal evenements windows
    Par thoms dans le forum C#
    Réponses: 0
    Dernier message: 27/05/2010, 12h58
  2. scripter un evenement windows
    Par exosse dans le forum Scripts/Batch
    Réponses: 0
    Dernier message: 26/11/2009, 13h43
  3. comment gerer l'evenement "window.close" en java
    Par facilus68 dans le forum JSF
    Réponses: 1
    Dernier message: 22/06/2009, 23h08
  4. Evenement Window et javascript
    Par silatchom dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 18/06/2007, 18h11
  5. [C#][2.0]Eventlog et observateur evenements windows
    Par Sodangbe dans le forum Windows Forms
    Réponses: 3
    Dernier message: 18/12/2006, 00h25

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo