IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VBA Discussion :

Récupérer le Handle de la dernière fenêtre non Excel ouverte lorsqu'on ne connait pas son nom


Sujet :

VBA

  1. #1
    Candidat au Club
    Femme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2019
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 46
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2019
    Messages : 3
    Points : 3
    Points
    3
    Par défaut Récupérer le Handle de la dernière fenêtre non Excel ouverte lorsqu'on ne connait pas son nom
    Bonjour,

    Quelqu'un sait-il comment récupérer le Handle de la dernière fenêtre non Excel ouverte lorsqu'on ne connait pas son nom?

    Moins important : j'aurais besoin de connaitre l'état de cette fenêtre (à partir de son Handle) : savoir si elle est affichée ou rabaissée.

    Cordialement,

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Février 2010
    Messages
    194
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 194
    Points : 378
    Points
    378
    Par défaut
    Bonjour,

    y a longtemps que je n'avait pas fait cela...

    essai ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    Option Explicit
     
    #If VBA7 Then
        Declare PtrSafe Function GetForegroundWindow Lib "User32" () As Long
        Declare PtrSafe Function GetWindowText Lib "User32" Alias "GetWindowTextA" (ByVal hwnd As Long, ByVal lpString As String, ByVal cch As Long) As Long
        Declare PtrSafe Function GetWindowTextLength Lib "User32" Alias "GetWindowTextLengthA" (ByVal hwnd As Long) As Long
    #Else
        Declare Function GetForegroundWindow Lib "User32" () As Long
        Declare Function GetWindowText Lib "User32" Alias "GetWindowTextA" (ByVal hwnd As Long, ByVal lpString As String, ByVal cch As Long) As Long
        Declare Function GetWindowTextLength Lib "User32" Alias "GetWindowTextLengthA" (ByVal hwnd As Long) As Long
    #End If
     
    Function GetForGroundWindowTitle() As String
        Dim fgwhwnd As Long
        Dim sTitle As String
        fgwhwnd = GetForegroundWindow
        'on détermine la longueur de la chaine du titre de fenêtre
        sTitle = Space$(GetWindowTextLength(fgwhwnd) + 1)
        'on récupère le titre de la fenêtre
        GetWindowText fgwhwnd, sTitle, Len(sTitle)
        'Supprime le dernier Chr$(0)
        sTitle = Left$(sTitle, Len(sTitle) - 1)
        GetForGroundWindowTitle = sTitle
    End Function
     
    Sub Tempo(ByVal TempPause As Single) 'utile uniquement pour la démo ci-dessous
        Dim start As Single
        start = Timer
        Do While Timer < start + TempPause
            DoEvents    ' Donne le contrôle à d'autres processus.
        Loop
    End Sub
    Sub demo()
        Dim NomFenetreActive As String
        Tempo 3 'une petite tempo de 3" pour avoir le temps d'ouvrir une fenetre externe à excel
        NomFenetreActive = GetForGroundWindowTitle()
        MsgBox "Vous avez ouvert la fenêtre : " & NomFenetreActive
    End Sub
    Edit : ah oui pour la partie facultative de ta question je ne l'ai jamais fait et je me demande quel en est l’intérêt ?
    D’ailleurs je me demande comment une fenêtre rabaissé pourrait en même temps avoir le focus car windows bascule automatiquement sur la fenêtre de derrière il me semble... enfin jusqu'à preuve du contraire.

    A+

Discussions similaires

  1. Réponses: 16
    Dernier message: 11/11/2018, 18h28
  2. Réponses: 4
    Dernier message: 05/03/2016, 00h47
  3. [XL-2003] Récupérer une cellule de la dernière ligne non vide d'un tableau
    Par christoff916 dans le forum Macros et VBA Excel
    Réponses: 10
    Dernier message: 17/08/2011, 14h22
  4. Handle de fenêtre non valide
    Par bernie.noel dans le forum Langage
    Réponses: 5
    Dernier message: 18/03/2008, 18h48
  5. Coment récupérer le handle d'une fenêtre
    Par robocop2776 dans le forum MFC
    Réponses: 2
    Dernier message: 30/10/2005, 22h21

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo