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

Delphi Discussion :

Détecter en premier la fin d'une session


Sujet :

Delphi

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Mars 2002
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 5
    Points : 2
    Points
    2
    Par défaut Détecter en premier la fin d'une session
    Salut,

    Voilà mon problème :
    Lors ce que j'éteins mon pc, il arrive par fois que certaine application en charge de piloté mon imprimante réseau ne réponde plus (merci HP).

    Je me suis donc fait une petite application qui se lance au démarrage de windows et reste ensuite caché sans rien faire. Desque qu'elle détecte la fermeture de la session, elle tue les applications récalcitrantes et se ferme à son tour.

    Jusque là vous allez me dire tout va pour le mieux, et bien pas vraiment. Certe le programme en lui-même fonctionne bien, mais le problème c'est que ce "c.n" de windows demande toujours applications de mon imprimante de se fermer en premier. Bref mon programme ne sert à rien puisqu'il entre en action toujours trop tard.

    Ma question est donc la suivante : Il y a t'il un moyen d'obligé windows a fermé mon programme en premier ?

    D'avance merci pour vos réponses.
    Frédo

  2. #2
    Expert éminent sénior

    Avatar de sjrd
    Homme Profil pro
    Directeur de projet
    Inscrit en
    Juin 2004
    Messages
    4 517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : Suisse

    Informations professionnelles :
    Activité : Directeur de projet
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2004
    Messages : 4 517
    Points : 10 154
    Points
    10 154
    Par défaut
    Où fais-tu ton traitement ? Dans un WM_QUERYENDSESSION ? Si ce n'est pas le cas, jette un oeil dessus et dis si ça va mieux.
    Si c'est le cas, alors je crois pas que tu puisses faire grand chose

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Mars 2002
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 5
    Points : 2
    Points
    2
    Par défaut
    Je le faisais avec TForm1.EndSession mais cela fait pareil avec WM_QUERYENDSESSION

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2006
    Messages
    624
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 624
    Points : 754
    Points
    754
    Par défaut
    Bonjour,

    Une idée à tester: modifier la priorité de ton processus et la passer à RealTime.

    @+

  5. #5
    Rédacteur
    Avatar de evarisnea
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Juin 2005
    Messages
    1 957
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : Transports

    Informations forums :
    Inscription : Juin 2005
    Messages : 1 957
    Points : 4 384
    Points
    4 384
    Par défaut

    a mon avis, ce n'est pas possible de contrôler l'ordre de (demande de) fermeture des programmes en cours d'exécution par Windows.
    ce que tu pourrais peut-être faire, c'est d'annuler l'arrêt de windows une première fois, t'assurer d'arrêter (ou qu'ils sont arrêtés) les programmes que tu désire, puis lancer toi même l'arrêt de windows.
    hé je viens de me rendre compte de quelque chose! il n'est pas possible de savoir si windows s'éteint, redémarre ou ferme une session! alors c'est impossible d'effectuer l'action annulée plus haut ...
    dommage, je pensais t'aider

  6. #6
    Membre éprouvé

    Profil pro
    Inscrit en
    Mai 2003
    Messages
    582
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Mai 2003
    Messages : 582
    Points : 915
    Points
    915
    Par défaut
    À mon humble avis, tu dois passer par les "Hooks" de windows
    ( très utiles pour effectuer de la surveillance )

    Regarde avec F1 sur l'API suivant
    SetWindowsHookEx
    probablement le que le Hook: WH_SHELL te serais utile pour capter
    l'évènement suivant: HSHELL_WINDOWDESTROYED
    Citation Envoyé par Microsoft Win32 Helps
    A top-level, unowned window is about to be destroyed. The window still exists when the system calls a ShellProc function.
    Étant donnée que tu veux "écouter" les autres applications,
    tu devra installer un Hook de type Syteme...et donc mettre le tout
    dans une DLL...

    Par contre, j'ignore si tu pourra capter cette évènement pour un driver
    qui n'a pas de fenêtre visible...?

    tu aurais peut-être plus de chance avec un hook de type
    WH_CALLWNDPROC

    Citation Envoyé par Microsoft Win32 Helps
    Installs a hook procedure that monitors messages before the system sends them to the destination window procedure. For more information, see the CallWndProc hook procedure.
    de toute façon, avec les Hooks, Je crois que c'est là ta seule chance...

Discussions similaires

  1. Détecter la fin d'une SESSION
    Par boteha dans le forum Langage
    Réponses: 10
    Dernier message: 31/08/2010, 15h55
  2. fin d'une session et instruction MySql
    Par stanlefor dans le forum Langage
    Réponses: 1
    Dernier message: 04/12/2006, 11h12
  3. Détecter la fin d'une session
    Par gazza dans le forum Langage
    Réponses: 3
    Dernier message: 11/10/2006, 12h47
  4. [Servlet] Comment détecter la fin d'une session HTTP
    Par cocula dans le forum Servlets/JSP
    Réponses: 2
    Dernier message: 18/04/2005, 18h27

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