bonjour/soir à tous ...
y a t il une possibilité pour, lorsqu'on ferme programmatiquement une
fenêtre qui n'a pas été créée par le projet en cours, de fermer
aussi ses fenêtres filles ? (toutes ...)
par exemple, Outlook Express :-)
la première partie fonctionne, j'arrive bien à détecter OE et à le
faire fermer (respectueusement, avec WM_CLOSE et bien entendu, après
avoir averti l'utilisateur)
mais je souhaiterais maintenant aller plus loin et pouvoir fermer ses
fenêtres filles (respectueusement aussi, c'est à dire par exemple,
si une fenêtre de composition de message est ouverte, proposer son
enregistrement, etc .... exactement comme si l'utilisateur fermait
lui même ces fenêtres
merci d'avance
bonjour/soir à tous ...
y a t il une possibilité pour, lorsqu'on ferme programmatiquement une
fenêtre qui n'a pas été créée par le projet en cours, de fermer
aussi ses fenêtres filles ? (toutes ...)
par exemple, Outlook Express :-)
la première partie fonctionne, j'arrive bien à détecter OE et à le
faire fermer (respectueusement, avec WM_CLOSE et bien entendu, après
avoir averti l'utilisateur)
mais je souhaiterais maintenant aller plus loin et pouvoir fermer ses
fenêtres filles (respectueusement aussi, c'est à dire par exemple,
si une fenêtre de composition de message est ouverte, proposer son
enregistrement, etc .... exactement comme si l'utilisateur fermait
lui même ces fenêtres
merci d'avance
bonjour/soir à tous ...
y a t il une possibilité pour, lorsqu'on ferme programmatiquement une
fenêtre qui n'a pas été créée par le projet en cours, de fermer
aussi ses fenêtres filles ? (toutes ...)
par exemple, Outlook Express :-)
la première partie fonctionne, j'arrive bien à détecter OE et à le
faire fermer (respectueusement, avec WM_CLOSE et bien entendu, après
avoir averti l'utilisateur)
mais je souhaiterais maintenant aller plus loin et pouvoir fermer ses
fenêtres filles (respectueusement aussi, c'est à dire par exemple,
si une fenêtre de composition de message est ouverte, proposer son
enregistrement, etc .... exactement comme si l'utilisateur fermait
lui même ces fenêtres
merci d'avance
L'exemple suivant retrouve le thread a partir de la classe de fenêtre
qu'on lui passe (par défaut la fenêtre principale d'OE), au travers
de FindWindow et GetWindowThreadProcessId.
Ensuite l'énumération est lancée et la listbox remplie par toutes les
fenêtre du thread portant un titre (celles sans titre sont ignorées
dans cet exemple).
Un click sur le second boutton de commande permet alors de fermer la
fenêtre sélectionnée dans la listbox
J'espère ne pas avoir été trop long, trop sybillin, trop étallant -
comme la confiture ;-)
L'exemple suivant retrouve le thread a partir de la classe de fenêtre
qu'on lui passe (par défaut la fenêtre principale d'OE), au travers
de FindWindow et GetWindowThreadProcessId.
Ensuite l'énumération est lancée et la listbox remplie par toutes les
fenêtre du thread portant un titre (celles sans titre sont ignorées
dans cet exemple).
Un click sur le second boutton de commande permet alors de fermer la
fenêtre sélectionnée dans la listbox
J'espère ne pas avoir été trop long, trop sybillin, trop étallant -
comme la confiture ;-)
L'exemple suivant retrouve le thread a partir de la classe de fenêtre
qu'on lui passe (par défaut la fenêtre principale d'OE), au travers
de FindWindow et GetWindowThreadProcessId.
Ensuite l'énumération est lancée et la listbox remplie par toutes les
fenêtre du thread portant un titre (celles sans titre sont ignorées
dans cet exemple).
Un click sur le second boutton de commande permet alors de fermer la
fenêtre sélectionnée dans la listbox
J'espère ne pas avoir été trop long, trop sybillin, trop étallant -
comme la confiture ;-)
Bonjour François Picalausa, dans le message
news:%
tu disais :
[...]L'exemple suivant retrouve le thread a partir de la classe de fenêtre
qu'on lui passe (par défaut la fenêtre principale d'OE), au travers
de FindWindow et GetWindowThreadProcessId.
Ensuite l'énumération est lancée et la listbox remplie par toutes les
fenêtre du thread portant un titre (celles sans titre sont ignorées
dans cet exemple).
Un click sur le second boutton de commande permet alors de fermer la
fenêtre sélectionnée dans la listbox
certaines des fenêtres que je veux fermer ne se ferment pas par ce
code ? notament une fenêtre de composition (ou de réponse ) de
message ...
Bonjour François Picalausa, dans le message
news:%23jDDpqxYFHA.1412@TK2MSFTNGP12.phx.gbl
tu disais :
[...]
L'exemple suivant retrouve le thread a partir de la classe de fenêtre
qu'on lui passe (par défaut la fenêtre principale d'OE), au travers
de FindWindow et GetWindowThreadProcessId.
Ensuite l'énumération est lancée et la listbox remplie par toutes les
fenêtre du thread portant un titre (celles sans titre sont ignorées
dans cet exemple).
Un click sur le second boutton de commande permet alors de fermer la
fenêtre sélectionnée dans la listbox
certaines des fenêtres que je veux fermer ne se ferment pas par ce
code ? notament une fenêtre de composition (ou de réponse ) de
message ...
Bonjour François Picalausa, dans le message
news:%
tu disais :
[...]L'exemple suivant retrouve le thread a partir de la classe de fenêtre
qu'on lui passe (par défaut la fenêtre principale d'OE), au travers
de FindWindow et GetWindowThreadProcessId.
Ensuite l'énumération est lancée et la listbox remplie par toutes les
fenêtre du thread portant un titre (celles sans titre sont ignorées
dans cet exemple).
Un click sur le second boutton de commande permet alors de fermer la
fenêtre sélectionnée dans la listbox
certaines des fenêtres que je veux fermer ne se ferment pas par ce
code ? notament une fenêtre de composition (ou de réponse ) de
message ...
Hello,
Ici, avec le bout de code suivant, toutes les fenêtres sans exception
sont fermées et le process est terminé...
Je ne suis pas sûr de bien comprendre où se situe le problème?
peut-être dans la fenêtre de confirmation d'enregistrement des
modifications?
Hello,
Ici, avec le bout de code suivant, toutes les fenêtres sans exception
sont fermées et le process est terminé...
Je ne suis pas sûr de bien comprendre où se situe le problème?
peut-être dans la fenêtre de confirmation d'enregistrement des
modifications?
Hello,
Ici, avec le bout de code suivant, toutes les fenêtres sans exception
sont fermées et le process est terminé...
Je ne suis pas sûr de bien comprendre où se situe le problème?
peut-être dans la fenêtre de confirmation d'enregistrement des
modifications?
Bonjour François Picalausa, dans le message
news:Hello,
Ici, avec le bout de code suivant, toutes les fenêtres sans exception
sont fermées et le process est terminé...
Je ne suis pas sûr de bien comprendre où se situe le problème?
peut-être dans la fenêtre de confirmation d'enregistrement des
modifications?
ben là, avec ce code ci, ça fonctionne ...
j'ai rajouté ça, dans un module ??
Public Function EnumThreadWndProc(ByVal hWnd As Long, _
ByVal lParam As Long) As Long
EnumThreadWndProc = Form1.EnumThreadWindowsCallback(hWnd, lParam)
End Function
Public Function EnumWndProc(ByVal hWnd As Long, _
ByVal lParam As Long) As Long
EnumWndProc = Form1.EnumWindowsCallback(hWnd, lParam)
End Function
et de fait, ça fonctionne ....
si OE est ouvert !
parce que sinon, plantage garanti ....
mais là, je dois t'avouer très honnêtement que je suis largué dans ces
callback, handle, et autres threadId :-(
Bonjour François Picalausa, dans le message
news:OVmNeK5YFHA.2768@tk2msftngp13.phx.gbl
Hello,
Ici, avec le bout de code suivant, toutes les fenêtres sans exception
sont fermées et le process est terminé...
Je ne suis pas sûr de bien comprendre où se situe le problème?
peut-être dans la fenêtre de confirmation d'enregistrement des
modifications?
ben là, avec ce code ci, ça fonctionne ...
j'ai rajouté ça, dans un module ??
Public Function EnumThreadWndProc(ByVal hWnd As Long, _
ByVal lParam As Long) As Long
EnumThreadWndProc = Form1.EnumThreadWindowsCallback(hWnd, lParam)
End Function
Public Function EnumWndProc(ByVal hWnd As Long, _
ByVal lParam As Long) As Long
EnumWndProc = Form1.EnumWindowsCallback(hWnd, lParam)
End Function
et de fait, ça fonctionne ....
si OE est ouvert !
parce que sinon, plantage garanti ....
mais là, je dois t'avouer très honnêtement que je suis largué dans ces
callback, handle, et autres threadId :-(
Bonjour François Picalausa, dans le message
news:Hello,
Ici, avec le bout de code suivant, toutes les fenêtres sans exception
sont fermées et le process est terminé...
Je ne suis pas sûr de bien comprendre où se situe le problème?
peut-être dans la fenêtre de confirmation d'enregistrement des
modifications?
ben là, avec ce code ci, ça fonctionne ...
j'ai rajouté ça, dans un module ??
Public Function EnumThreadWndProc(ByVal hWnd As Long, _
ByVal lParam As Long) As Long
EnumThreadWndProc = Form1.EnumThreadWindowsCallback(hWnd, lParam)
End Function
Public Function EnumWndProc(ByVal hWnd As Long, _
ByVal lParam As Long) As Long
EnumWndProc = Form1.EnumWindowsCallback(hWnd, lParam)
End Function
et de fait, ça fonctionne ....
si OE est ouvert !
parce que sinon, plantage garanti ....
mais là, je dois t'avouer très honnêtement que je suis largué dans ces
callback, handle, et autres threadId :-(
ben là, avec ce code ci, ça fonctionne ...
C'est ce que je croyais... j'avais pas été ci clair dans mes
explications précédentes :-)
Exact... les joies du copier-coller...
Analysons ce qui se passe:
Dans un premier temps,
EnumWindows AddressOf EnumWndProc, ByVal 0&
tente de retrouver une fenêtre de OE. Si une fenêtre est trouvée, son
handle est stoqué dans
m_OEWnd
Cependant, quel que soit le résultat, on énumère les fenêtres du
thread... il faudrait ajouter un test du style
If OEWnd Then
Ensuite seulement on peut tenter de récupérer le thread qui a créé
toutes les fenêtres d'OE
WindowThread = GetWindowThreadProcessId(m_OEWnd, ByVal 0&)
Pour énumérer les fenêtres créées par ce thread
EnumThreadWindows WindowThread, AddressOf EnumThreadWndProc, ByVal
Async End Ifmais là, je dois t'avouer très honnêtement que je suis largué dans
ces callback, handle, et autres threadId :-(
Essaye peut être de reprendre le code en pas à pas voir comment il
tourne?
ben là, avec ce code ci, ça fonctionne ...
C'est ce que je croyais... j'avais pas été ci clair dans mes
explications précédentes :-)
Exact... les joies du copier-coller...
Analysons ce qui se passe:
Dans un premier temps,
EnumWindows AddressOf EnumWndProc, ByVal 0&
tente de retrouver une fenêtre de OE. Si une fenêtre est trouvée, son
handle est stoqué dans
m_OEWnd
Cependant, quel que soit le résultat, on énumère les fenêtres du
thread... il faudrait ajouter un test du style
If OEWnd Then
Ensuite seulement on peut tenter de récupérer le thread qui a créé
toutes les fenêtres d'OE
WindowThread = GetWindowThreadProcessId(m_OEWnd, ByVal 0&)
Pour énumérer les fenêtres créées par ce thread
EnumThreadWindows WindowThread, AddressOf EnumThreadWndProc, ByVal
Async End If
mais là, je dois t'avouer très honnêtement que je suis largué dans
ces callback, handle, et autres threadId :-(
Essaye peut être de reprendre le code en pas à pas voir comment il
tourne?
ben là, avec ce code ci, ça fonctionne ...
C'est ce que je croyais... j'avais pas été ci clair dans mes
explications précédentes :-)
Exact... les joies du copier-coller...
Analysons ce qui se passe:
Dans un premier temps,
EnumWindows AddressOf EnumWndProc, ByVal 0&
tente de retrouver une fenêtre de OE. Si une fenêtre est trouvée, son
handle est stoqué dans
m_OEWnd
Cependant, quel que soit le résultat, on énumère les fenêtres du
thread... il faudrait ajouter un test du style
If OEWnd Then
Ensuite seulement on peut tenter de récupérer le thread qui a créé
toutes les fenêtres d'OE
WindowThread = GetWindowThreadProcessId(m_OEWnd, ByVal 0&)
Pour énumérer les fenêtres créées par ce thread
EnumThreadWindows WindowThread, AddressOf EnumThreadWndProc, ByVal
Async End Ifmais là, je dois t'avouer très honnêtement que je suis largué dans
ces callback, handle, et autres threadId :-(
Essaye peut être de reprendre le code en pas à pas voir comment il
tourne?
Bonjour François Picalausa, dans le message
news:
tu disais :
je suppose que la fenêtre de demande d'enregistrement est provoquée
par le SendMessage, au fait ? :-)
moi, dès qu'on manipule un peu trop les handle je suis à la ramasse :-(
Bonjour François Picalausa, dans le message
news:ui9soc7YFHA.2796@TK2MSFTNGP09.phx.gbl
tu disais :
je suppose que la fenêtre de demande d'enregistrement est provoquée
par le SendMessage, au fait ? :-)
moi, dès qu'on manipule un peu trop les handle je suis à la ramasse :-(
Bonjour François Picalausa, dans le message
news:
tu disais :
je suppose que la fenêtre de demande d'enregistrement est provoquée
par le SendMessage, au fait ? :-)
moi, dès qu'on manipule un peu trop les handle je suis à la ramasse :-(