PC SOFT

FORUMS PROFESSIONNELS
WINDEVWEBDEV et WINDEV Mobile

Accueil → WINDEV 2024 → Kernel32 attraper Evenement fermeture
Kernel32 attraper Evenement fermeture
Débuté par ricil, 21 avr. 2017 13:31 - 4 réponses
Membre enregistré
222 messages
Popularité : +8 (8 votes)
Posté le 21 avril 2017 - 13:31
Bonjour

j'aimerai me rattacher à un événement de fermeture d'une fenêtre d'un programme X qui ne m'appartient pas.
et cela pour faire une action de mon choix lors de la fermeture de la fenêtre.

ps : j'arrive à récupérer le handle de la fenêtre
Membre enregistré
355 messages
Popularité : +37 (39 votes)
Posté le 21 avril 2017 - 15:47
Bonjour,

Regarde en utilisant les API de "user32" avec un truc du genre

//Registers a specified Shell window to receive certain messages for events
// or notifications that are useful to Shell applications.
// BOOL RegisterShellHookWindow(
// HWND hWnd
// );
bRes=API("user32","RegisterShellHookWindow",Handle())
// The RegisterWindowMessage function defines a new window message that is
// guaranteed to be unique throughout the system.
// The message value can be used when sending or posting messages.
//
// UINT RegisterWindowMessage(
// LPCTSTR lpString
// );
//
Evénement(_GetShellHookMessage,"*.*",API("user32","RegisterWindowMessageA","SHELLHOOK"))

Avec la procédure d'interception ici "_GetShelHookMessage" de la forme

// Procédure appelée par l'évenement SHELLHOOK
// wMessage [in] : Message windows de l'appel
// wParam [in] : Premier paramètre du message : Type d'évenement envoyé (voir constante HSHELL_*)
// lParam [in] : Second paramètre du message : Le handle de la fenêtre concernée (pour les types gérés ici)
Procedure _GetShellHookMessage(wMessage,wParam,lParam)
...

A toi ensuite de gérer les messages arrivant pour définir si c'est la bonne fenêtre et le bon message.

Regarde le site MSDN "https://msdn.microsoft.com/en-us/library" pour plus de détails.

--
Francis MOREL
http://www.SoftProtect.fr
Message modifié, 21 avril 2017 - 15:50
Membre enregistré
222 messages
Popularité : +8 (8 votes)
Posté le 21 avril 2017 - 16:13
Merci beaucoup pour ta réponse. parfait :merci:

j'étais bien train de chercher sur les fonctions API et Evénement.
je ne trouvais pas quelle fonction appeler par API .
je cherchais comment détourner Evénement car la doc indique que ça fonctionne que pour les fenêtres windev

Tu as tout résolu !
Membre enregistré
222 messages
Popularité : +8 (8 votes)
Posté le 25 avril 2017 - 14:34
ce que tu m'as donnée m'a fait énormément fait avancé. :merci:

Dans le même esprit, sais tu comment attraper l’événement d'un champ en particulier (ex: Ajout d'une ligne dans une listview)
(j'ai le handle de la fenêtre et du champ)

j'ai cherché avec SetWindowsHookExA mais cela ne semble pas être la bonne piste
Membre enregistré
355 messages
Popularité : +37 (39 votes)
Posté le 26 avril 2017 - 09:07
Bonjour,

Désolé je n'ai pas testé dans cet esprit.
Cependant à la lecture de la doc "SetWindowsHookExA" semble bien être la solution.

--
Francis MOREL
http://www.SoftProtect.fr