La fermeture de la fenêtre parent entraine le blocage de mon appli

Résolu
clementio Messages postés 432 Date d'inscription samedi 18 mai 2002 Statut Membre Dernière intervention 17 février 2014 - 11 août 2005 à 04:13
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 - 11 août 2005 à 18:32
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

Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
11 août 2005 à 13:24
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
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
11 août 2005 à 08:06
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
0
clementio Messages postés 432 Date d'inscription samedi 18 mai 2002 Statut Membre Dernière intervention 17 février 2014 1
11 août 2005 à 13:10
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
0
clementio Messages postés 432 Date d'inscription samedi 18 mai 2002 Statut Membre Dernière intervention 17 février 2014 1
11 août 2005 à 13:36
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
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
clementio Messages postés 432 Date d'inscription samedi 18 mai 2002 Statut Membre Dernière intervention 17 février 2014 1
11 août 2005 à 14:13
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
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
11 août 2005 à 18:32
Content que ca fonctionne ^^

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