Activapp - nom de l'application active

Description

[vb 5.0]
En relation avec mon programme Big Brother voici la partie du code concernant la liste des applications qui ont le focus.

Tout est commenté.

Source / Exemple :


/* Créez une form de et mettez y : 1 Listbox et 1 timer d'interval 1 et de nom Tmr */

Private Sub Tmr_Timer()
'Déclare 2 nouvelles variables :
'Entree qui contiendra la phrase finale à enregistrer
'hwnd qui recupere le handle de la fenêtre qui a le focus
Dim Entree As String, hwnd As Long
    
    'On définit pour valeur au handle celui de la fenêtre
    'avec laquelle l'utilisateur travaille (ou regarde :p)
    hwnd = GetForegroundWindow
    
        'Pour éviter de remettre chaque seconde la même
        'fenêtre on vérifie qu'elle n'a pas déja été
        'notée
        If hwnd <> App_hwnd Then
        App_hwnd = hwnd
        
        'Ici on défnit pour valeur a la variable string
        'le nom de l'application qui a le handle "hwnd"
        'et dont le nom est retourné par la fonction du
        'module
        App_Title = Titreapplication(hwnd)
    
            'Routine qui vérifie que l'application à bien
            'un titre, sinon ça fait polio d'afficher
            'un horaire avec du vide :p
            If App_Title <> "" Then
            'Ici c'est de la mise en forme : on met entre
            'crochet l'heure actuelle et on marque ensuite
            'le nom de l'application active
            Entree = "[" & DateTime.Time & "] " & App_Title
            'Ajoute le résultat à la fenêtre
            List1.AddItem Entree
            End If
        End If
End Sub

/* Placez ceci dans un module de nom quelconque

Option Explicit
'Variable pour récuperer le handle précédent de la fenêtre (voir Form1)
Global App_hwnd As Long
'Variable pour récupérer le nom de la fenêtre
Global App_Title As String

'Variable à déclarer
'Cette fonction recupere le text de la fenêtre avec 3 arguments :
' - le handle de la fenêtre
' - le buffer qui contiendra le texte
' - la longueur maximale du nom de l'application
Public Declare Function GetWindowText Lib "user32.dll" Alias "GetWindowTextA" (ByVal hwnd As Long, ByVal lpString As String, ByVal cch As Long) As Long

'Cette fonction recupere la longeur du titre de l'application
'par son handle. Ici elle servira a fournir la longueur
'maximale du titre a récupérer via GetWindowText (dernier argument)
Public Declare Function GetWindowTextLength Lib "user32" Alias "GetWindowTextLengthA" (ByVal hwnd As Long) As Long

'Cette fonction sert a renvoyer le handle de la fenêtre qui
'a le focus, ou bien si vous préferez sur laquelle on travaille
Public Declare Function GetForegroundWindow Lib "user32.dll" () As Long

'Fonction qui sert a obtenir le nom de l'application active.
'Son argument est le handle renvoyé dans le Timer via la
'fonction GetForegroundWindow
Function Titreapplication(hwnd As Long)
'Variable pour obtenir la longueur du titre ainsi que sont nom
Dim hWndlength As Long, hWndTitle As String, returnvalue As Long

    'Longeur du titre envoyée dans la variable via la fonction
    hWndlength = GetWindowTextLength(hwnd)
    'Création d'un buffer
    hWndTitle = String$(hWndlength, 0)
    'Recupere finalement le titre de la fenêtre de handle
    'hwnd, pour le mettre dans le buffer de taille adaptée, et
    'avec une longeur maximale de caractère obtenu plus haut
    '+ 1 avec le caractère NULL
    returnvalue = GetWindowText(hwnd, hWndTitle, (hWndlength + 1))
    'Finalement, on retourne le tout
    Titreapplication = hWndTitle
End Function

Conclusion :


Voila, en éspérant que ca vous sera d'un grand secours, si vous avez des questions ou autres, venez commentez :p

http://www.kephren.fr.fm/

Codes Sources

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.