J'énumère par une fonction la liste des fenêtres Windows actives et lorsque
une correspond à mes critères je récupère son nom par une variable << NomF
>>... Le problème est que si je mets NomF en Global ou en Publi je ne
parvient pas à récupérer la donnée... Alors que par contre la fonction
LEnumWindowsProc me trouve bien une fenêtre correspondant à mes critères...
Voici ma fonction :
Global NomF As String
Private Function LEnumWindowsProc&(ByVal hwnd&, ByVal lParam&)
Dim SLength&, Buffer As String, RetVal&
Dim NomFtmp As String
NomF = ""
NomFtmp = ""
SLength = GetWindowTextLength(hwnd) + 1
If SLength > 1 Then
Buffer = Space(SLength)
RetVal = GetWindowText(hwnd, Buffer, SLength)
If CBool(IsWindowVisible(hwnd)) = True Then
NomFtmp = Left(Buffer, SLength - 1)
If Len(NomFtmp) > 4 Then
If IsNumeric(Right(NomFtmp, 4)) Then
NomF = Left(NomFtmp, Len(NomFtmp) - 4)
MsgBox NomF ' ici la donnée apparait bien
End If
End If
End If
End If
LEnumWindowsProc = 1
End Function
Sub WinList()
EnumWindows AddrOf("LEnumWindowsProc"), 0
MsgBox NomF 'la donnée a retrouvée sa valeur vide.... :-(
End Sub
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Michel Pierron
Bonjour HD; Bah oui, si tu ne sors pas de la boucle quand tu as trouvé ton fichier, l'énumération continue avec NomF="" que tu as réinitialisé dans ta fonction Function LEnumWindowsProc. Il faudrait un coup de pot pour que la fenêtre cherchée soit la dernière de la liste. Soit tu ne mets pas NomF dans la boucle, mais la sortie ne se fait pas quand tu as trouvé une valeur et si tu en as plusieurs qui répondent aux conditions, c'est la dernière qui est sauvegardée dans ta variable NomF qui doit être Public (Global, c'est pour les versions antédiluviennes), soit tu inclus un paramètre de sortie quand la condition est trouvée (i& qui passe à 0 et provoque la sortie).
Public NomF As String
Private Function LEnumWindowsProc&(ByVal hwnd&, ByVal lParam&) Dim SLength&, Buffer As String, RetVal& Dim NomFtmp As String, i& NomF = "": NomFtmp = "": i = 1 SLength = GetWindowTextLength(hwnd) + 1 If SLength > 1 Then Buffer = Space(SLength) RetVal = GetWindowText(hwnd, Buffer, SLength) If CBool(IsWindowVisible(hwnd)) = True Then NomFtmp = Left(Buffer, SLength - 1) If Len(NomFtmp) > 4 Then If IsNumeric(Right(NomFtmp, 4)) Then NomF = Left(NomFtmp, Len(NomFtmp) - 4) 'MsgBox NomF ' ici la donnée apparait bien i = 0 End If End If End If End If LEnumWindowsProc = i End Function
MP
"HD" a écrit dans le message de news: dccrop$1rdk$
Bonjour,
J'énumère par une fonction la liste des fenêtres Windows actives et lorsque
une correspond à mes critères je récupère son nom par une variable << NomF
... Le problème est que si je mets NomF en Global ou en Publi je ne parvient pas à récupérer la donnée... Alors que par contre la fonction
LEnumWindowsProc me trouve bien une fenêtre correspondant à mes critères...
Voici ma fonction :
Global NomF As String
Private Function LEnumWindowsProc&(ByVal hwnd&, ByVal lParam&) Dim SLength&, Buffer As String, RetVal& Dim NomFtmp As String
NomF = "" NomFtmp = "" SLength = GetWindowTextLength(hwnd) + 1 If SLength > 1 Then Buffer = Space(SLength) RetVal = GetWindowText(hwnd, Buffer, SLength) If CBool(IsWindowVisible(hwnd)) = True Then NomFtmp = Left(Buffer, SLength - 1) If Len(NomFtmp) > 4 Then If IsNumeric(Right(NomFtmp, 4)) Then NomF = Left(NomFtmp, Len(NomFtmp) - 4) MsgBox NomF ' ici la donnée apparait bien End If End If End If End If LEnumWindowsProc = 1 End Function
Sub WinList() EnumWindows AddrOf("LEnumWindowsProc"), 0 MsgBox NomF 'la donnée a retrouvée sa valeur vide.... :-( End Sub
Merci d'avance pour votre aide -- @+ HD
Bonjour HD;
Bah oui, si tu ne sors pas de la boucle quand tu as trouvé ton fichier,
l'énumération continue avec NomF="" que tu as réinitialisé dans ta fonction
Function LEnumWindowsProc. Il faudrait un coup de pot pour que la fenêtre
cherchée soit la dernière de la liste. Soit tu ne mets pas NomF dans la
boucle, mais la sortie ne se fait pas quand tu as trouvé une valeur et si tu
en as plusieurs qui répondent aux conditions, c'est la dernière qui est
sauvegardée dans ta variable NomF qui doit être Public (Global, c'est pour
les versions antédiluviennes), soit tu inclus un paramètre de sortie quand
la condition est trouvée (i& qui passe à 0 et provoque la sortie).
Public NomF As String
Private Function LEnumWindowsProc&(ByVal hwnd&, ByVal lParam&)
Dim SLength&, Buffer As String, RetVal&
Dim NomFtmp As String, i&
NomF = "": NomFtmp = "": i = 1
SLength = GetWindowTextLength(hwnd) + 1
If SLength > 1 Then
Buffer = Space(SLength)
RetVal = GetWindowText(hwnd, Buffer, SLength)
If CBool(IsWindowVisible(hwnd)) = True Then
NomFtmp = Left(Buffer, SLength - 1)
If Len(NomFtmp) > 4 Then
If IsNumeric(Right(NomFtmp, 4)) Then
NomF = Left(NomFtmp, Len(NomFtmp) - 4)
'MsgBox NomF ' ici la donnée apparait bien
i = 0
End If
End If
End If
End If
LEnumWindowsProc = i
End Function
MP
"HD" <hd@anti.spam.fr> a écrit dans le message de news:
dccrop$1rdk$1@biggoron.nerim.net...
Bonjour,
J'énumère par une fonction la liste des fenêtres Windows actives et
lorsque
une correspond à mes critères je récupère son nom par une variable << NomF
... Le problème est que si je mets NomF en Global ou en Publi je ne
parvient pas à récupérer la donnée... Alors que par contre la fonction
LEnumWindowsProc me trouve bien une fenêtre correspondant à mes
critères...
Voici ma fonction :
Global NomF As String
Private Function LEnumWindowsProc&(ByVal hwnd&, ByVal lParam&)
Dim SLength&, Buffer As String, RetVal&
Dim NomFtmp As String
NomF = ""
NomFtmp = ""
SLength = GetWindowTextLength(hwnd) + 1
If SLength > 1 Then
Buffer = Space(SLength)
RetVal = GetWindowText(hwnd, Buffer, SLength)
If CBool(IsWindowVisible(hwnd)) = True Then
NomFtmp = Left(Buffer, SLength - 1)
If Len(NomFtmp) > 4 Then
If IsNumeric(Right(NomFtmp, 4)) Then
NomF = Left(NomFtmp, Len(NomFtmp) - 4)
MsgBox NomF ' ici la donnée apparait bien
End If
End If
End If
End If
LEnumWindowsProc = 1
End Function
Sub WinList()
EnumWindows AddrOf("LEnumWindowsProc"), 0
MsgBox NomF 'la donnée a retrouvée sa valeur vide.... :-(
End Sub
Bonjour HD; Bah oui, si tu ne sors pas de la boucle quand tu as trouvé ton fichier, l'énumération continue avec NomF="" que tu as réinitialisé dans ta fonction Function LEnumWindowsProc. Il faudrait un coup de pot pour que la fenêtre cherchée soit la dernière de la liste. Soit tu ne mets pas NomF dans la boucle, mais la sortie ne se fait pas quand tu as trouvé une valeur et si tu en as plusieurs qui répondent aux conditions, c'est la dernière qui est sauvegardée dans ta variable NomF qui doit être Public (Global, c'est pour les versions antédiluviennes), soit tu inclus un paramètre de sortie quand la condition est trouvée (i& qui passe à 0 et provoque la sortie).
Public NomF As String
Private Function LEnumWindowsProc&(ByVal hwnd&, ByVal lParam&) Dim SLength&, Buffer As String, RetVal& Dim NomFtmp As String, i& NomF = "": NomFtmp = "": i = 1 SLength = GetWindowTextLength(hwnd) + 1 If SLength > 1 Then Buffer = Space(SLength) RetVal = GetWindowText(hwnd, Buffer, SLength) If CBool(IsWindowVisible(hwnd)) = True Then NomFtmp = Left(Buffer, SLength - 1) If Len(NomFtmp) > 4 Then If IsNumeric(Right(NomFtmp, 4)) Then NomF = Left(NomFtmp, Len(NomFtmp) - 4) 'MsgBox NomF ' ici la donnée apparait bien i = 0 End If End If End If End If LEnumWindowsProc = i End Function
MP
"HD" a écrit dans le message de news: dccrop$1rdk$
Bonjour,
J'énumère par une fonction la liste des fenêtres Windows actives et lorsque
une correspond à mes critères je récupère son nom par une variable << NomF
... Le problème est que si je mets NomF en Global ou en Publi je ne parvient pas à récupérer la donnée... Alors que par contre la fonction
LEnumWindowsProc me trouve bien une fenêtre correspondant à mes critères...
Voici ma fonction :
Global NomF As String
Private Function LEnumWindowsProc&(ByVal hwnd&, ByVal lParam&) Dim SLength&, Buffer As String, RetVal& Dim NomFtmp As String
NomF = "" NomFtmp = "" SLength = GetWindowTextLength(hwnd) + 1 If SLength > 1 Then Buffer = Space(SLength) RetVal = GetWindowText(hwnd, Buffer, SLength) If CBool(IsWindowVisible(hwnd)) = True Then NomFtmp = Left(Buffer, SLength - 1) If Len(NomFtmp) > 4 Then If IsNumeric(Right(NomFtmp, 4)) Then NomF = Left(NomFtmp, Len(NomFtmp) - 4) MsgBox NomF ' ici la donnée apparait bien End If End If End If End If LEnumWindowsProc = 1 End Function
Sub WinList() EnumWindows AddrOf("LEnumWindowsProc"), 0 MsgBox NomF 'la donnée a retrouvée sa valeur vide.... :-( End Sub
Merci d'avance pour votre aide -- @+ HD
HD
Bah oui, si tu ne sors pas de la boucle quand tu as trouvé ton fichier, l'énumération continue avec NomF="" que tu as réinitialisé dans ta fonction
Function LEnumWindowsProc. Il faudrait un coup de pot pour que la fenêtre cherchée soit la dernière de la liste. Soit tu ne mets pas NomF dans la boucle, mais la sortie ne se fait pas quand tu as trouvé une valeur et si tu
en as plusieurs qui répondent aux conditions, c'est la dernière qui est sauvegardée dans ta variable NomF qui doit être Public (Global, c'est pour les versions antédiluviennes), soit tu inclus un paramètre de sortie quand la condition est trouvée (i& qui passe à 0 et provoque la sortie).
Effectivement ta fonction tourne... Mais je ne vois pas où est la boucle ? Il n'y pas de do, de next ou autres...
-- @+ HD
Bah oui, si tu ne sors pas de la boucle quand tu as trouvé ton fichier,
l'énumération continue avec NomF="" que tu as réinitialisé dans ta
fonction
Function LEnumWindowsProc. Il faudrait un coup de pot pour que la fenêtre
cherchée soit la dernière de la liste. Soit tu ne mets pas NomF dans la
boucle, mais la sortie ne se fait pas quand tu as trouvé une valeur et si
tu
en as plusieurs qui répondent aux conditions, c'est la dernière qui est
sauvegardée dans ta variable NomF qui doit être Public (Global, c'est pour
les versions antédiluviennes), soit tu inclus un paramètre de sortie quand
la condition est trouvée (i& qui passe à 0 et provoque la sortie).
Effectivement ta fonction tourne... Mais je ne vois pas où est la boucle ?
Il n'y pas de do, de next ou autres...
Bah oui, si tu ne sors pas de la boucle quand tu as trouvé ton fichier, l'énumération continue avec NomF="" que tu as réinitialisé dans ta fonction
Function LEnumWindowsProc. Il faudrait un coup de pot pour que la fenêtre cherchée soit la dernière de la liste. Soit tu ne mets pas NomF dans la boucle, mais la sortie ne se fait pas quand tu as trouvé une valeur et si tu
en as plusieurs qui répondent aux conditions, c'est la dernière qui est sauvegardée dans ta variable NomF qui doit être Public (Global, c'est pour les versions antédiluviennes), soit tu inclus un paramètre de sortie quand la condition est trouvée (i& qui passe à 0 et provoque la sortie).
Effectivement ta fonction tourne... Mais je ne vois pas où est la boucle ? Il n'y pas de do, de next ou autres...
-- @+ HD
Michel Pierron
Re HD;
La boucle est initialisée par l'appel à la DLL EnumWindows que tu exécutes dans ta procédure Sub WinList. Tant que la fonction LEnumWindowsProc est True (1) et que l'arguement retourné hwnd est <> 0, le processus est itératif. Le processus s'arrête soit parce que l'argument hwnd est égal à 0 (cas où toute la liste des fenêtres a été explorée), soit parce que la fonction LEnumWindowsProc est False (0) quand tu as trouvé ce que tu cherchais.
MP
"HD" a écrit dans le message de news: dcd5pr$1vqm$
Bah oui, si tu ne sors pas de la boucle quand tu as trouvé ton fichier, l'énumération continue avec NomF="" que tu as réinitialisé dans ta fonction
Function LEnumWindowsProc. Il faudrait un coup de pot pour que la fenêtre
cherchée soit la dernière de la liste. Soit tu ne mets pas NomF dans la boucle, mais la sortie ne se fait pas quand tu as trouvé une valeur et si
tu
en as plusieurs qui répondent aux conditions, c'est la dernière qui est sauvegardée dans ta variable NomF qui doit être Public (Global, c'est pour
les versions antédiluviennes), soit tu inclus un paramètre de sortie quand
la condition est trouvée (i& qui passe à 0 et provoque la sortie).
Effectivement ta fonction tourne... Mais je ne vois pas où est la boucle ? Il n'y pas de do, de next ou autres...
-- @+ HD
Re HD;
La boucle est initialisée par l'appel à la DLL EnumWindows que tu exécutes
dans ta procédure Sub WinList.
Tant que la fonction LEnumWindowsProc est True (1) et que l'arguement
retourné hwnd est <> 0, le processus est itératif. Le processus s'arrête
soit parce que l'argument hwnd est égal à 0 (cas où toute la liste des
fenêtres a été explorée), soit parce que la fonction LEnumWindowsProc est
False (0) quand tu as trouvé ce que tu cherchais.
MP
"HD" <hd@anti.spam.fr> a écrit dans le message de news:
dcd5pr$1vqm$1@biggoron.nerim.net...
Bah oui, si tu ne sors pas de la boucle quand tu as trouvé ton fichier,
l'énumération continue avec NomF="" que tu as réinitialisé dans ta
fonction
Function LEnumWindowsProc. Il faudrait un coup de pot pour que la
fenêtre
cherchée soit la dernière de la liste. Soit tu ne mets pas NomF dans la
boucle, mais la sortie ne se fait pas quand tu as trouvé une valeur et
si
tu
en as plusieurs qui répondent aux conditions, c'est la dernière qui est
sauvegardée dans ta variable NomF qui doit être Public (Global, c'est
pour
les versions antédiluviennes), soit tu inclus un paramètre de sortie
quand
la condition est trouvée (i& qui passe à 0 et provoque la sortie).
Effectivement ta fonction tourne... Mais je ne vois pas où est la boucle ?
Il n'y pas de do, de next ou autres...
La boucle est initialisée par l'appel à la DLL EnumWindows que tu exécutes dans ta procédure Sub WinList. Tant que la fonction LEnumWindowsProc est True (1) et que l'arguement retourné hwnd est <> 0, le processus est itératif. Le processus s'arrête soit parce que l'argument hwnd est égal à 0 (cas où toute la liste des fenêtres a été explorée), soit parce que la fonction LEnumWindowsProc est False (0) quand tu as trouvé ce que tu cherchais.
MP
"HD" a écrit dans le message de news: dcd5pr$1vqm$
Bah oui, si tu ne sors pas de la boucle quand tu as trouvé ton fichier, l'énumération continue avec NomF="" que tu as réinitialisé dans ta fonction
Function LEnumWindowsProc. Il faudrait un coup de pot pour que la fenêtre
cherchée soit la dernière de la liste. Soit tu ne mets pas NomF dans la boucle, mais la sortie ne se fait pas quand tu as trouvé une valeur et si
tu
en as plusieurs qui répondent aux conditions, c'est la dernière qui est sauvegardée dans ta variable NomF qui doit être Public (Global, c'est pour
les versions antédiluviennes), soit tu inclus un paramètre de sortie quand
la condition est trouvée (i& qui passe à 0 et provoque la sortie).
Effectivement ta fonction tourne... Mais je ne vois pas où est la boucle ? Il n'y pas de do, de next ou autres...
-- @+ HD
HD
La boucle est initialisée par l'appel à la DLL EnumWindows que tu exécutes dans ta procédure Sub WinList.
Comment as tu accès à toutes ces descriptions de DLL ? -- @+ HD
La boucle est initialisée par l'appel à la DLL
EnumWindows que tu exécutes dans ta
procédure Sub WinList.
Comment as tu accès à toutes ces descriptions de DLL ?
--
@+
HD
La boucle est initialisée par l'appel à la DLL EnumWindows que tu exécutes dans ta procédure Sub WinList.
Comment as tu accès à toutes ces descriptions de DLL ? -- @+ HD
Michel Pierron
Bonsoir HD; Dans le cas présent, je dirais que c'est pratiquement implicite ou bien, c'est l'expérience. Tu peux télécharger une liste presque exhaustive des API (avec exemples) en anglais ici: http://users.chello.be/cr27630/3.7/agsetup.exe C'est la plus complète que je connaisse.
MP
"HD" a écrit dans le message de news: dckha7$25ks$
La boucle est initialisée par l'appel à la DLL EnumWindows que tu exécutes dans ta procédure Sub WinList.
Comment as tu accès à toutes ces descriptions de DLL ? -- @+ HD
Bonsoir HD;
Dans le cas présent, je dirais que c'est pratiquement implicite ou bien,
c'est l'expérience.
Tu peux télécharger une liste presque exhaustive des API (avec exemples) en
anglais ici:
http://users.chello.be/cr27630/3.7/agsetup.exe
C'est la plus complète que je connaisse.
MP
"HD" <hd@anti.spam.fr> a écrit dans le message de news:
dckha7$25ks$1@biggoron.nerim.net...
La boucle est initialisée par l'appel à la DLL
EnumWindows que tu exécutes dans ta
procédure Sub WinList.
Comment as tu accès à toutes ces descriptions de DLL ?
--
@+
HD
Bonsoir HD; Dans le cas présent, je dirais que c'est pratiquement implicite ou bien, c'est l'expérience. Tu peux télécharger une liste presque exhaustive des API (avec exemples) en anglais ici: http://users.chello.be/cr27630/3.7/agsetup.exe C'est la plus complète que je connaisse.
MP
"HD" a écrit dans le message de news: dckha7$25ks$
La boucle est initialisée par l'appel à la DLL EnumWindows que tu exécutes dans ta procédure Sub WinList.
Comment as tu accès à toutes ces descriptions de DLL ? -- @+ HD