Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

comment activer avec vba une fenêtre de windows ?

15 réponses
Avatar
Gadget
Bonjour.
J'aimerais connaître le code à utiliser pour rendre active une fenêtre déjà
ouverte sur le bureau Windows, afin de lui passer des codes de touches à
l'aide de VBA.
Comment on fait?
Merci de vos réponses.

5 réponses

1 2
Avatar
Gadget
J'ai fait des essais avec le bloc-notes, mais rien ne se passe.
m_hWnd renvoie 0.
J'ai oublié quelque chose ?

Sub Mamacro()
m_hWnd = FindWindow(vbNullString, "Sans titre - Bloc-notes")
Call SetForegroundWindow(m_hWnd)
MsgBox m_hWnd
Attendre 5
End Sub

"FFO" a écrit dans le message de news:

Rebonjour à toi

Dans un Module mets ce code :

Private Declare Function FindWindow Lib "user32" Alias "FindWindowA"
(ByVal
lpClassName As String, ByVal lpWindowName As Any) As Long
Private Declare Function SetForegroundWindow Lib "user32" (ByVal hwnd As
Long) As Long
Sub Mamacro()
m_hWnd = FindWindow(vbNullString, "Boîte de réception - Microsoft
Outlook")
Call SetForegroundWindow(m_hWnd)
End Sub

En l'état à son exécution ce code active la boîte de réception Outlook si
elle est ouverte

Tu dois actualiser la partie :

m_hWnd = FindWindow(vbNullString, "Boîte de réception - Microsoft
Outlook")
Call SetForegroundWindow(m_hWnd)

et plus précisément :

"Boîte de réception - Microsoft Outlook"

du libellé exacte Windows (voir en haut à gauche de la fenêtre Windows de
la
fenêtre concerné) que tu souhaites mettre à l'écran

Et ceci au caractère prés
Dans mon exemple il faut entre autre l'accent circonflexe sur le i de
Boîte
et un espace de chaque côté du tiret

Fais des essais et dis moi !!!!!



Avatar
Gadget
Ca marche très bien !

merci!

"MichDenis" a écrit dans le message de news:
OLAI597$
Bonjour Gadget,

Une façon de faire :

Dans un module standard :


'Déclaration des API et des constantes dans le haut d'un module standard :

Public Declare Function FindWindow Lib "user32" Alias "FindWindowA" _
(ByVal lpClassname As String, ByVal lpWindowName As String) As Long
Declare Function SetForegroundWindow Lib "user32" _
(ByVal hwnd As Long) As Long
Declare Function ShowWindow Lib "user32" _
(ByVal hwnd As Long, ByVal nCmdShow As Long) As Long

' ShowWindow() Commands
Public Const SW_HIDE = 0
Public Const SW_SHOWNORMAL = 1
Public Const SW_NORMAL = 1
Public Const SW_SHOWMINIMIZED = 2
Public Const SW_SHOWMAXIMIZED = 3
Public Const SW_MAXIMIZE = 3
Public Const SW_SHOWNOACTIVATE = 4
Public Const SW_SHOW = 5
Public Const SW_MINIMIZE = 6
Public Const SW_SHOWMINNOACTIVE = 7
Public Const SW_SHOWNA = 8
Public Const SW_RESTORE = 9
Public Const SW_SHOWDEFAULT = 10
Public Const SW_MAX = 10
'-----------------------------------

Sub Activer_Voir_Fenêtre()
Dim hwnd As Long, Voir_Fenêtre As String

'Exemple, tu ouvres une fenêtre de
' l'application NotePad
'Texte de la barre de titre de la fenêtre
Voir_Fenêtre = "Sans Titre - Bloc-notes"
hwnd = FindWindow(vbNullString, Voir_Fenêtre)

If hwnd = 0 Then Exit Sub
SetForegroundWindow hwnd
'SW_SHOWDEFAULT tu peux remplacer par une
'des constantes énumérées pour l'état de
'la fenêtre
ShowWindow hwnd, SW_SHOWDEFAULT
End Sub
'-----------------------------------





"Gadget" a écrit dans le message de groupe de discussion :
4a545238$0$17095$
Bonjour.
J'aimerais connaître le code à utiliser pour rendre active une fenêtre
déjà
ouverte sur le bureau Windows, afin de lui passer des codes de touches à
l'aide de VBA.
Comment on fait?
Merci de vos réponses.



Avatar
FFO
Rebonjour à toi

Ton code en l'état avec les 2 fonctions :

Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal
lpClassName As String, ByVal lpWindowName As Any) As Long
Private Declare Function SetForegroundWindow Lib "user32" (ByVal hwnd As
Long) As Long


et un bloc note ouvert

Fonctionne chez moi parfaitement et m'a renvoyé le Handle Windows : 3213866

Le bloc note au moment de l'exécution du code doit rester ouvert sinon le
Handle Windows retombe à 0

Vérifies bien car si celà fonctionne chez moi il doit en être de même chez toi

Dis moi !!!!!
Avatar
Gadget
J'ai bien refait avec le bloc-note ouvert, toujours 0 en handle...

"FFO" a écrit dans le message de news:


Rebonjour à toi

Ton code en l'état avec les 2 fonctions :

Private Declare Function FindWindow Lib "user32" Alias "FindWindowA"
(ByVal
lpClassName As String, ByVal lpWindowName As Any) As Long
Private Declare Function SetForegroundWindow Lib "user32" (ByVal hwnd As
Long) As Long


et un bloc note ouvert

Fonctionne chez moi parfaitement et m'a renvoyé le Handle Windows :
3213866

Le bloc note au moment de l'exécution du code doit rester ouvert sinon le
Handle Windows retombe à 0

Vérifies bien car si celà fonctionne chez moi il doit en être de même chez
toi

Dis moi !!!!!



Avatar
FFO
Rebonjour à toi

Si donc tu as bien respecté la procédure l'anomalie doit se situer au niveau
du nom de la fenêtre Windows concernant le bloc note
Vérifies scrupuleusement à l'accent, l'espace etc.... prés

Si le Handle Windows ramène 0 c'est qu'aucune fenêtre Windows posséde le
nom que tus à mis dans le code ici :

m_hWnd = FindWindow(vbNullString, "Sans titre - Bloc-notes")

es tu certain du tiret entre Bloc et notes et celui entre titre et Bloc
De même pour tous les espaces, Majuscule etc ....

Il doit y avoir une erreur à ce niveau

Tiens moi informé !!!!!
1 2