PC SOFT

FORUMS PROFESSIONNELS
WINDEVWEBDEV et WINDEV Mobile

Accueil → WINDEV 22 → Kernel32 attraper Evenement fermeture
Kernel32 attraper Evenement fermeture
Débuté par ricil, 21 avr. 2017 13:31 - 4 réponses
//hostimage.webdev.info/avatars/T8KLcJOxNcIccYOsBkopg
Membre enregistré
134 messages
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
//hostimage.webdev.info/avatars/9N12XBLy72f5jzVYwoKpzQ
Membre enregistré
239 messages
Popularité : +9 (9 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
//hostimage.webdev.info/avatars/T8KLcJOxNcIccYOsBkopg
Membre enregistré
134 messages
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 !
//hostimage.webdev.info/avatars/T8KLcJOxNcIccYOsBkopg
Membre enregistré
134 messages
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
//hostimage.webdev.info/avatars/9N12XBLy72f5jzVYwoKpzQ
Membre enregistré
239 messages
Popularité : +9 (9 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