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 :

[DELPHI6] et hook sur fenêtres windows


Sujet :

API, COM et SDKs Delphi

  1. #1
    Membre confirmé
    Inscrit en
    Mai 2003
    Messages
    81
    Détails du profil
    Informations forums :
    Inscription : Mai 2003
    Messages : 81
    Par défaut [DELPHI6] et hook sur fenêtres windows
    Bonjour,

    Je souhaiterai empêcher l'ouverture de boîte de dialogue comme celle d'Enregistrer sous de Notepad.

    J'ai mis en place une dll pour détecter la création de fénêtre.
    J'ai noté la classe de la fenêtre Enregistrer sous (#32770).

    Quand j'empêche la création de la fenêtre (HCBT_CREATEWND) j'ai une erreur système qui dit que la mémoire est insuffisante pour terminer l'opération.

    Comment faire pour empêcher certaines fenêtres de s'afficher ?

    Merci.

  2. #2
    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
    Par défaut
    moi j'utiliserais plutot la fonction EnumWindows à intervalles réguliers pour tester la présence de ladite fenêtre.
    une fois j'ai essayé la méthode des hooks avec delphi mais je n'ai jamais réussi
    autre chose, si tu fermes toutes les fenêtres ayant la classe #32770 tu vas au devant de gros ennuis, car toutes les boites de dialogue l'utilisent je crois bien. je crois qu'il faudrait aussi vérifier le titre de la boite de dialogue ?

  3. #3
    Membre confirmé
    Inscrit en
    Mai 2003
    Messages
    81
    Détails du profil
    Informations forums :
    Inscription : Mai 2003
    Messages : 81
    Par défaut
    Merci pour tes infos.

    J'ai donc réalisé une autre procedure qui n'est pas dans la dll du hook et qui utilise EnumWindows à intervalles réguliers. Mais je rencontre un autre problème. Comme je suis un programme externe DestroyWindow ne peut détruire la fenêtre souhaitée. En effet le thread qui exécute DestroyWindow doit être le thread de la fenêtre.

  4. #4
    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
    Par défaut
    tu peux envoyer le message WM_QUIT à la fenêtre en question dans le cas d'une application
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SendMessage(handle_fenetre,WM_CLOSE,0,0);
    ou alors le message WM_SYSCOMMAND avec le paramètre SC_CLOSE
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SendMessage(handle_fenetre,WM_SYSCOMMAND,SC_CLOSE,0);

  5. #5
    Membre confirmé
    Inscrit en
    Mai 2003
    Messages
    81
    Détails du profil
    Informations forums :
    Inscription : Mai 2003
    Messages : 81
    Par défaut
    Merci.

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 30/06/2010, 01h06
  2. Réponses: 1
    Dernier message: 22/08/2008, 11h11
  3. méthode set_policy sur une fenêtre Window
    Par astrotouf dans le forum GTK+ avec C & C++
    Réponses: 2
    Dernier message: 22/11/2007, 22h27
  4. Réponses: 7
    Dernier message: 31/10/2006, 18h29
  5. [DELPHI6] et gestion des fenêtres windows
    Par Desraux dans le forum API, COM et SDKs
    Réponses: 2
    Dernier message: 27/03/2006, 16h47

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