Titre d'un fenetre

Résolu
cs_bobo91 Messages postés 107 Date d'inscription dimanche 27 juin 2004 Statut Membre Dernière intervention 12 novembre 2006 - 3 août 2004 à 16:33
cs_bobo91 Messages postés 107 Date d'inscription dimanche 27 juin 2004 Statut Membre Dernière intervention 12 novembre 2006 - 3 août 2004 à 19:39
bonjour tout le monde.

apres avoir ete visiter le forum sur ce sujet je n'est trouve
aucune source satisfaisante pour moi.
mon probleme est simple et pourtant je n'arrive pas a trouver une solution courte.
je cherche je cherche je cherche...

PROBLEME:
mon probleme et que je veux recuperer le titre de n'importe quelle fenetre d'une application exterieur au moment ou je clique dessus puis le mettre dans un textbox.

je me retrouve toujous devant des codes a rallonge alorssi
quelqu'un pouvais m'aider a resoudre ce probleme en quelque ligne de code je vous en remerci d'avance.

bonne prog a tous le monde.

6 réponses

Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
3 août 2004 à 19:01
Voilà un petit bout de code qui devrai t'eclairer davantage.

'# Declaration de quelques fonctions API que l'on souhaite utiliser.
'# VB ne les connais pas. Il faut dire ou les trouver, et quels parametres utiliser
Private Declare Function GetForegroundWindow Lib "user32" () As Long
Private Declare Function GetWindowTextLength Lib "user32" Alias "GetWindowTextLengthA" (ByVal hwnd As Long) As Long
Private Declare Function GetWindowText Lib "user32" Alias "GetWindowTextA" (ByVal hwnd As Long, ByVal lpString As String, ByVal cch As Long) As Long

Private Sub Timer1_Timer()
    '# Fenetre active lors de l'iteration precedente
    Static LastActive As Long
    
    '# Fenetre active sur le systeme
    '# Utiliser GetActiveWindow pour connaitre la fenetre active dans l'application)
    Dim Active As Long
    Active = GetForegroundWindow
    
    '# Si c'est la même fenêtre qui est active, on quitte
    If LastActive = Active Then Exit Sub
    
    '# On récupère la longueur du titre
    Dim Length As Long: Length = GetWindowTextLength(Active) + 1
    
    '# Afin de pouvoir reserver une chaine de caractères assez grande
    Dim Buffer As String: Buffer = Space$(Length)
    
    '# On récupère le titre
    Length = GetWindowText(Active, Buffer, Length)
    
    '# On supprime le caractère \0 final
    Buffer = Left$(Buffer, Length)
    
    '# On ajoute le titre dans la liste
    List1.AddItem Buffer
    
    '# Et on mémorise la fenetre qui etait active
    LastActive = Active
End Sub



Amusez-vous ! ;)
Renfield - thomas_reynald@msn.com
Admin CodeS-SourceS
3
vlad2i Messages postés 285 Date d'inscription mercredi 20 août 2003 Statut Membre Dernière intervention 13 février 2005
3 août 2004 à 17:03
Si tu veux récupérer le titre d'une fenêtre, c'est simple : API

GetWindowText

goto www.Allapi.net et tu recherche cette api, tu devrais avoir un exemple

vlad2i (aïe ca fait mal)
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
3 août 2004 à 17:44
Oui, GetWindowText, coupée avec la fonction GetForegroundWindow pour récuperer le handle de la fenetre active

Amusez-vous ! ;)
Renfield - thomas_reynald@msn.com
Admin CodeS-SourceS
0
cs_bobo91 Messages postés 107 Date d'inscription dimanche 27 juin 2004 Statut Membre Dernière intervention 12 novembre 2006
3 août 2004 à 18:26
dsl mais moi j'y comprend strictement ri1 au API mais j'ai trouver un bout de code qui me trouve le titre mais que de ma fenetre et celle du programmeur vb6.

je comprend pas pourkoi autant de ligne pour si peux.
je dois juste cliquer sur n'importe quel fenetre et il me renvois son titre c'est tout pourtant.

j'ai besoin d'eclaircissement s'il vous plait.merci

MODULE:
Public Declare Function GetActiveWindow Lib "user32.dll" () As Long
Public Declare Function GetWindowTextLength Lib "user32" Alias "GetWindowTextLengthA" (ByVal hwnd As Long) As Long
Public Declare Function GetWindowText Lib "user32" Alias "GetWindowTextA" (ByVal hwnd As Long, ByVal lpString As String, ByVal cch As Long) As Long

CODE:
Private Sub Timer1_Timer()
Dim hactive As Long
Dim CurrWnd As Long
Dim Parent As Long
Dim Length As Long
Dim NomTache As String

hactive = GetActiveWindow()
Length = GetWindowTextLength(hactive)
NomTache = Space$(Length + 1)
Length = GetWindowText(hactive, NomTache, Length + 1)
NomTache = Left$(NomTache, Len(NomTache) - 1)
Debug.Print NomTache
End Sub
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_bobo91 Messages postés 107 Date d'inscription dimanche 27 juin 2004 Statut Membre Dernière intervention 12 novembre 2006
3 août 2004 à 19:31
c'est exactement ca oui oui oui haouuuuuuu!!!!
merci encore merci maintenant je vais bien analyser comment tu as fais.
0
cs_bobo91 Messages postés 107 Date d'inscription dimanche 27 juin 2004 Statut Membre Dernière intervention 12 novembre 2006
3 août 2004 à 19:39
j'ai tous piger.tres tres bien expliquer.
mieu exlpiquer que ca y'a pas chapeau merci encore.
0
Rejoignez-nous