La fermeture de la fenêtre parent entraine le blocage de mon appli [Résolu]

Signaler
Messages postés
432
Date d'inscription
samedi 18 mai 2002
Statut
Modérateur
Dernière intervention
17 février 2014
-
Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
-
Bonjour,

Voilà le problème:

J'encapsule la fenêtre de mon appli dans la fenêtre d'un logiciel commercial grâce à l'API SetParent (qui marche très bien ). Mon appli devient donc la fille de ce logiciel.

Le problème survient lors de la fermeture du logiciel, mon appli se bloque !!!

Et pourtant elle comporte un timer réglé à 1 seconde mais l'exécution du code ne passe plus dedans. Elle reste pourtant en execution puisqu'elle apparaît dans le gestionnaire de tâche.

Je voudrais evidemment qu'elle se ferme à la fermeture du logiciel.

Merci de m'aider, Clementio

PS: Je pense que la solution doit se trouver vers la récupération du message de fermeture du logiciel (hook du logiciel ou un truc comme ça mais je n'y arrive pas ).

6 réponses

Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
65
un hook est necessaire ici, une dll, pas forcément...


un hook de type WH_CBT me semble indiqué ici. tu pourras récupérer la notification HCBT_DESTROYWND
en provenance de ta fenetre parente...

fouilles MSDN si tu as besoin d'infos

Amusez-vous !
Renfield - thomas_reynald@msn.com
Admin CodeS-SourceS - MVP Visual Basic
3
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 123 internautes nous ont dit merci ce mois-ci

Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
65
Oui, il te suffit de récupérer le message WM_DESTROY de la fenetre Parente...

Amusez-vous !
Renfield - thomas_reynald@msn.com
Admin CodeS-SourceS - MVP Visual Basic
Messages postés
432
Date d'inscription
samedi 18 mai 2002
Statut
Modérateur
Dernière intervention
17 février 2014

Salut,


Merci pour ta réponse Renfield.


Du coup nouvelle question:


Comment en connaissant le Handle d'une fenêtre on peut intercepter le WM_DESTROY de celle-ci (sans utiliser de dll de hook si possible)?


Et pis après tout si c'est pas possible sans cette dll, où puis-je en trouver une qui hook les messages d'une fenêtre extrene à mon appli (et pas du clavier ou de la souris, ça je m'en fiche...)?


En tou cas, c'est vraiment pourri, je pensais que le fait de fermer une fenêtre parent engendrait forcement la fermeture de toutes ces filles (ou au moins ses évènements de fermeture --> QueryUnload, Unload, Terminate)!!!


Merci d'avance,

Clementio
Messages postés
432
Date d'inscription
samedi 18 mai 2002
Statut
Modérateur
Dernière intervention
17 février 2014

Merci, tu as prononcé les deux mots que je cherche en vain depuis hier soir!!!

Tu me sauves la vie, je vais tout de suite explorer tout ça...

Clm
Messages postés
432
Date d'inscription
samedi 18 mai 2002
Statut
Modérateur
Dernière intervention
17 février 2014

Ca y est j'y suis arrivé. Si ça peut intéresser certains:

Dans mon Form

Private Sub Form_Load()
mHookId = SetWindowsHookEx(5, AddressOf VB_HOOKCBTPROC, 0, App.ThreadID)
End Sub

Private Sub Form_Unload(Cancel As Integer)
UnhookWindowsHookEx mHookId
End Sub

Et dans le module

Public Declare Function SetWindowsHookEx Lib "user32" Alias "SetWindowsHookExA" (ByVal idHook As Long, ByVal lpfn As Long, ByVal hMod As Long, ByVal dwThreadId As Long) As Long
Public Declare Function UnhookWindowsHookEx Lib "user32" (ByVal hHook As Long) As Long
Private Declare Function CallNextHookEx Lib "user32" (ByVal hHook As Long, ByVal ncode As Long, ByVal wParam As Long, lParam As Any) As Long

Public Function VB_HOOKCBTPROC(ByVal Code As Long, ByVal wParam As Long, ByVal lParam As Long) As Long


On Local Error Resume Next

If Code = 4 Then
Unload Form1
End If

CallNextHookEx mHookId, Code, wParam, lParam


End Function

Ainsi, lors de la fermeture de la fenêtre parent, mon appli (fille) se termine!!!

Encore merci Renfield

A+, Clm
Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
65
Content que ca fonctionne ^^

Amusez-vous !
Renfield - thomas_reynald@msn.com
Admin CodeS-SourceS - MVP Visual Basic