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

MFC Discussion :

Service Windows et Alt+F4


Sujet :

MFC

  1. #1
    Membre confirmé 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
    Par défaut Service Windows et Alt+F4
    Bonjour à tous,

    je viens de récupérer une appli: c'est un service sous windows, avec une fenetre qui se ferme avec un bouton OK (IDOK), et qui s'ouvre en cliquant sur l'icone.

    Or quand on clique sur "Alt+F4", l'appli crashe. J'ai l'impression que les données veulent etre rafraichies mais que la fenetre est détruite (et non pas fermée ??).

    Je n'arrive pas à trouver comment supprimer la commande Alt+F4 ou alors comment la gérer !!

    Si quelqu'un a une idée, merci de votre aide !

  2. #2
    Rédacteur
    Avatar de farscape
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    9 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2003
    Messages : 9 055
    Par défaut
    salut,
    la il y a quelque chose de pas correct dans ton énoncé.., un service windows n'a pas d'interface graphique.
    tu as essayé de te mettre en mode debug / trace pour identifier le problème ?

  3. #3
    Membre confirmé 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
    Par défaut
    Si si, il y a une fenetre :

    //////////////////////////////////////////////////////////////////////////////////////////////////
    // CServiceDialog class
    //
    // Cette classe fournit l'interface de base pour la gestion d'une boite
    // de dialogue d'un Service Windows interactif.
    //
    En débug, j'ai une exception windows, la fenetre doit etre détruite, je suppose. Or on veut la rafraichir .... Pas top !!

  4. #4
    Rédacteur

    Avatar de ram-0000
    Homme Profil pro
    Consultant en sécurité
    Inscrit en
    Mai 2007
    Messages
    11 517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultant en sécurité
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2007
    Messages : 11 517
    Par défaut
    Wahh !!

    Un service Windows avec une fenêtre, quelle horreur.

    En tout cas, il me semble que cela ne peux plus marcher sous Vista (ce n'est peut être pas encore ton problème) pour des raisons de sécurité.

    En effet, un service tourne souvent avec l'identité LocalSystem qui est un utilisateur très privilégié du système.

    Imagine maintenant que ton programme (LocalSystem donc) te permette de lancer une fenêtre Save As avec un FileBrowserDialog (et cela s'est déjà vu sur un antivirus bien connu) et tu te retrouves à pouvoir écrire/créer/modifier des fichiers pour lesquels tu n'as normalement pas le droit.
    Raymond
    Vous souhaitez participer à la rubrique Réseaux ? Contactez-moi

    Cafuro Cafuro est un outil SNMP dont le but est d'aider les administrateurs système et réseau à configurer leurs équipements SNMP réseau.
    e-verbe Un logiciel de conjugaison des verbes de la langue française.

    Ma page personnelle sur DVP
    .

  5. #5
    Membre confirmé 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
    Par défaut
    J'ai implémenté ca:

    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
    BOOL CMonServiceDld::PreTranslateMessage(MSG* pMsg) 
    {
    	// TODO: Add your specialized code here and/or call the base class
    // Disable closing dialog when Alt+F4
       if (pMsg->message >= WM_KEYFIRST && pMsg->message <= WM_KEYLAST)
       {
          BOOL altkey = GetKeyState(VK_MENU) < 0;
          if (altkey)
          {
    		if(pMsg->wParam==VK_F4)
    		pMsg->wParam=NULL ;
    	  }
    	}
     
    	return CDialog::PreTranslateMessage(pMsg);
    }
    Ca fonctionne. Enfin, ca empeche que la fenetre ne se ferme et plante l'appli.

    Mais si je souhaite fermer la fenetre ? (comme en cliquant sur le bouton OK ? Je suppose que je ne peux pas appeler OnOK() ????)
    Merci

  6. #6
    Membre confirmé 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
    Par défaut
    Bonjour ram_0000,

    En fait, il s'agit simplement d'un service et sa fenetre pour gérer l'alimentation du PC (deux batteries / secteur).

    Pour l'instant, effectivement, pas de probleme avec Vista ... Mais je tiens compte de ta remarque, ca servira surement un jour

    merci

  7. #7
    Membre confirmé 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
    Par défaut
    Voila:

    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
    BOOL CMonServiceDld::PreTranslateMessage(MSG* pMsg) 
    {
    	// TODO: Add your specialized code here and/or call the base class
    // Disable closing dialog when Alt+F4
       if (pMsg->message >= WM_KEYFIRST && pMsg->message <= WM_KEYLAST)
       {
          BOOL altkey = GetKeyState(VK_MENU) < 0;
          if (altkey)
          {
    		if(pMsg->wParam==VK_F4)
                            {
    		    //pMsg->wParam=NULL ;
                                  OnOK();
                                  return TRUE;
                            }
    	  }
    	}
     
    	return CDialog::PreTranslateMessage(pMsg);
    }
    Et la ca fonctionne comme je veux ...
    Bon, je me suis finalement débrouillée seule mais bon ... Merci quand même à tous.

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

Discussions similaires

  1. [WinService][C#] Comment déployer un service windows ?
    Par sokette dans le forum Windows Forms
    Réponses: 5
    Dernier message: 27/04/2005, 16h38
  2. Planifier le démarrage d'un service Window
    Par tscoops dans le forum Windows XP
    Réponses: 2
    Dernier message: 29/03/2005, 14h56
  3. [WD7.5] Service Windows
    Par cqfd dans le forum WinDev
    Réponses: 1
    Dernier message: 29/03/2005, 08h58
  4. [VB6]Arreter un service windows
    Par bouboussjunior dans le forum VB 6 et antérieur
    Réponses: 1
    Dernier message: 04/10/2004, 17h03
  5. [C#] Icône, barre des tâches et Service Windows
    Par SErhio dans le forum Windows Forms
    Réponses: 17
    Dernier message: 03/09/2004, 12h56

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