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

API, COM et SDKs Delphi Discussion :

Intercepter le kill process


Sujet :

API, COM et SDKs Delphi

  1. #1
    Membre à l'essai
    Inscrit en
    Mai 2002
    Messages
    24
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 24
    Points : 11
    Points
    11
    Par défaut Intercepter le kill process
    Bonjour
    Je suis en Delphi 5 sous windows XP.

    J'aimerais savoir s'il est possible d'intercepter le message window qui permet de killer un processus (par le gestionnaire des tâches).

    Ainsi, si mon appli est tuée, cela me permettrait d'écrire dans un journal juste avant qu'elle meurt.

    Merci

  2. #2
    Membre chevronné
    Avatar de Clorish
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    2 474
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 2 474
    Points : 2 158
    Points
    2 158
    Par défaut
    Tu cherche a ecrire dans le journal que l'application a ete killé ? ou bien juste ecrire des choses dans un journal ?

    Si c'est la 2e solution (genre log) il faut ecrire dans le fichier a fure et a mesure que les données arrive et fermer le fichier apres chaques ecriture (ou eventuelement faire un flush) pour vider le tampon.

    Sinon le principe du kill etant de fermer uen application qui a planté, ca m'etonnerais qu'il puisse le detecter et en plus pendre le temps d'ecrire un journal
    On passe du temps a vous repondre, alors soyez sympas, passez du temps ..... a vous relire !
    --
    Pourquoi tant de haine pour cette pauvre aide Delphi ????
    Aiiimezzz laaaaa .... Si-Non-Cham-Pi-Gnon !!!
    --
    Pour plus de Renseignements : Venez me rejoindre sur Msn .... Promis je mords pas

  3. #3
    Membre à l'essai
    Inscrit en
    Mai 2002
    Messages
    24
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 24
    Points : 11
    Points
    11
    Par défaut
    Oui, c'est la 2ème solution.
    Lorsque mon processus se termine, j'écris le résultat dans un journal (échec ou succès).
    L'ennui c'est que je n'ai aucune trace dans mon journal si quelqu'un kill ce processus...

    En tout cas sur la dernière phrase, je pense que tu as raison.
    Citation Envoyé par Clorish Voir le message
    Sinon le principe du kill etant de fermer uen application qui a planté, ca m'etonnerais qu'il puisse le detecter et en plus pendre le temps d'ecrire un journal
    Vois-tu une solution de contournement ?

    En fait j'ai une application principale qui lance des processus simultanés pour exécuter des éditions.
    Les utilisateurs de cette appli peuvent, en cas de problème, fermer cette application principale. Le but est alors de killer tout les processus qui en découle et d'obtenir un message d'erreur dans le journal pour chacun.

    Merci de ton intérêt

  4. #4
    Membre chevronné
    Avatar de Clorish
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    2 474
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 2 474
    Points : 2 158
    Points
    2 158
    Par défaut
    pourquoi "killer" et non "fermer proprement" les processus ?

    Sinon il y a bien le message WM_Kill je crois qui peut etre intercepter si l'application ou precessus possede encore une jambe pour le traiter
    On passe du temps a vous repondre, alors soyez sympas, passez du temps ..... a vous relire !
    --
    Pourquoi tant de haine pour cette pauvre aide Delphi ????
    Aiiimezzz laaaaa .... Si-Non-Cham-Pi-Gnon !!!
    --
    Pour plus de Renseignements : Venez me rejoindre sur Msn .... Promis je mords pas

  5. #5
    Membre à l'essai
    Inscrit en
    Mai 2002
    Messages
    24
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 24
    Points : 11
    Points
    11
    Par défaut
    "Killer" c'est pour garantir le résultat.
    Si mon utilisateur demande à fermer l'application, l'effet doit être immédiat.
    Les processus lancés doivent donc tous s'arrêter en même temps (qu'ils soient plantés ou non).

    Je n'ai trouvé malheureusement aucun exemple d'utilisation de WM_KILL.
    C'est pour ça que j'ai posté ici.

  6. #6
    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
    Tu voudrais faire comme sous Linux, killer les processus zombies, non?
    Tu devrais pouvoir t'en sortir avec la FAQ et TerminateProcess.

  7. #7
    Membre à l'essai
    Inscrit en
    Mai 2002
    Messages
    24
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 24
    Points : 11
    Points
    11
    Par défaut
    Pas du tout, je sais killer les processus.
    Avant de mourir, je veux qu'ils écrivent dans mon journal "qu'ils ont été tué".

    Il faut donc que j'intercepte le message (s'il s'agit d'un message) qui permet à windows de killer un processus.

    Est-ce quelqu'un sait si un message windows est envoyé au processus lorsqu'on le tue avec "terminateprocess" ?

  8. #8
    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
    Citation Envoyé par yves_fuji
    "Killer" c'est pour garantir le résultat.
    Ca reste drôlement radical. Je me demande si à la longue, tu ne fera pas face
    à d'autres problèmes plus délicats.

    Citation Envoyé par yves_fuji
    Est-ce quelqu'un sait si un message windows est envoyé au processus lorsqu'on le tue avec "terminateprocess" ?
    je ne crois pas que ce soit possible...

    parcontre, à l'inverse, si ton application se termine proprement, tu peux
    inscrire un message "Je me suis terminé comme un grand sans avoir été Killé!"

    si tu ajoute un message dans ton log "Je commence à travailler"
    au démarrage de ton application, tu pourra avec une petite analyse du log,
    détecté le nombre de fois que ton application à été Killer?
    Comment dupliquer un disque...ça vous intéresse?
    Tutoriel et code source delphi ici

  9. #9
    Membre à l'essai
    Inscrit en
    Mai 2002
    Messages
    24
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 24
    Points : 11
    Points
    11
    Par défaut
    Je vais effectivement modifier mon appli principale pour mettre l'heure de démarrage en plus de l'heure de fin dans le journal.

    L'ennui c'est que lorsque l'appli principale (c'est un service d'impression) recoit le message de retour de ces processus (les éditions), elle envoi également ce message au demandeur de l'édition.

    Donc si l'édition est "killée", le demandeur n'en ai jamais averti.

    Merci à tous

  10. #10
    Membre chevronné
    Avatar de Clorish
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    2 474
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 2 474
    Points : 2 158
    Points
    2 158
    Par défaut
    Dans ces cas la, on met en place un systeme de "ping" recurent pour verifier que les applis tournent toujours.

    En fait j'ai l'impression que tout ce que tu veux faire suppose que l'application est active. Car un vrai "kill" est fait sur une application bloqué, planté, shootée .... donc incapable de faire quoi que ce soit.

    Si elle est active, pas besoin de killer, mais termine proprement le processus.
    Apres, penche toi sur la detection d'application plantées pour eventuelement killer les dits processus de maniere plus brutale.
    On passe du temps a vous repondre, alors soyez sympas, passez du temps ..... a vous relire !
    --
    Pourquoi tant de haine pour cette pauvre aide Delphi ????
    Aiiimezzz laaaaa .... Si-Non-Cham-Pi-Gnon !!!
    --
    Pour plus de Renseignements : Venez me rejoindre sur Msn .... Promis je mords pas

  11. #11
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    68
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 68
    Points : 45
    Points
    45
    Par défaut
    Je tombe sur ce post par hasard..

    Il y a une solution, et même un exemple, avec les bibliothèque/composant madsoft (mad_code_hook).

    Dans son exemple l'utilisateur Windows se voit devoir confirmer manuellement le kill du process.

    Je suppose qu'on peut le limiter à l'application visé et écrire dans le journal avant d'accepter le kill, le tout en automatique.

    Alekhine.

  12. #12
    Membre à l'essai
    Inscrit en
    Mai 2002
    Messages
    24
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 24
    Points : 11
    Points
    11
    Par défaut
    Citation Envoyé par Alekhine Voir le message
    Il y a une solution, et même un exemple, avec les bibliothèque/composant madsoft (mad_code_hook).
    Bonjour,
    Ca m'a l'air très interressant.
    Peux-tu m'indiquer où trouver ces bibliothèques ?

  13. #13
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    68
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 68
    Points : 45
    Points
    45
    Par défaut
    Citation Envoyé par yves_fuji Voir le message
    Bonjour,
    Ca m'a l'air très interressant.
    Peux-tu m'indiquer où trouver ces bibliothèques ?
    Bonsoir,

    C'est ici : http://www.madshi.net/

    MadCodeHook n'est plus gratuit par contre, étant donné que son travail a été utilisé par des gens peu scrupuleux pour coder des cochoneries à infecter les PC ....

    En tout cas ça tient la route son truc.

    Alek.

Discussions similaires

  1. Réponses: 12
    Dernier message: 09/08/2007, 12h48
  2. Réponses: 2
    Dernier message: 09/08/2007, 12h35
  3. Evenement Kill process
    Par eliek_9 dans le forum VB 6 et antérieur
    Réponses: 8
    Dernier message: 01/08/2006, 10h40
  4. Kill Process TSE
    Par eguillot dans le forum Delphi
    Réponses: 1
    Dernier message: 22/06/2006, 17h11
  5. [net*8] Kill process Oracle
    Par Filippo dans le forum Oracle
    Réponses: 2
    Dernier message: 18/11/2005, 10h39

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