Detecter si une appli est active avec focus

cs_olid Messages postés 296 Date d'inscription lundi 2 septembre 2002 Statut Membre Dernière intervention 28 janvier 2008 - 2 nov. 2004 à 15:21
cs_olid Messages postés 296 Date d'inscription lundi 2 septembre 2002 Statut Membre Dernière intervention 28 janvier 2008 - 3 nov. 2004 à 12:51
Bonjour,

Comment détecter si une appli (dont je connais le handle) est active (ou a le focus) ? ...C'est a dire si l'utilisateur est entrain de l'utiliser.

Attention, cette appli n'est pas forcément au premier plan (Cf. les fenetres en TopMost)

NB: cest aussi pour mon projet "Yahoo! Messenger Plus" ( http://www.yahooplus.fr.st ) à cause de la nouvelle fonction "SuperTopMost" qui cache les menus popup :o(

----
Olie_ze_kat - www.olid.fr.st =(°o°)=

6 réponses

thierrydelepine Messages postés 521 Date d'inscription mardi 24 décembre 2002 Statut Membre Dernière intervention 11 septembre 2008 6
2 nov. 2004 à 16:09
je viens de deposer une source en rapport avec ta demande

http://www.vbfrance.com/code.aspx?ID=27262
0
MadM@tt Messages postés 2167 Date d'inscription mardi 11 novembre 2003 Statut Membre Dernière intervention 16 juillet 2009 1
2 nov. 2004 à 17:34
Declare Function GetActiveWindow Lib "user32" () As Long

Cette fonction retourne un handle vers la fenêtre active.
Par contre la fenêtre doit appartenir a ton programme sinon elle renvoie 0
@ +
MadMatt
0
cs_olid Messages postés 296 Date d'inscription lundi 2 septembre 2002 Statut Membre Dernière intervention 28 janvier 2008
2 nov. 2004 à 19:11
Merci, mais cest pô la solution à mon probleme...

Jai deja un prog comme le tien, thierry... Za me dit pô si l'appli a le focus (barre titre bleu ;o)

Et pour Matt, cest pô pour les fenetres de mon prog, mais pour voir si une autre appli est en cours d'utilisation ou non

NB: getactivewindow est pour les fenetres MDI
----
Olie_ze_kat - www.olid.fr.st =(°o°)=
0
thierrydelepine Messages postés 521 Date d'inscription mardi 24 décembre 2002 Statut Membre Dernière intervention 11 septembre 2008 6
2 nov. 2004 à 20:55
pour connaitre la fenetre active (celle qui est en bleu) et non toutes les fenetres :

place ce code dans un form et lance

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 Declare Function GetForegroundWindow Lib "user32" () As Long

Public Function GetActiveWindowApp() As String
Dim hWndlength As Long, hWndTitle As String, returnvalue As Long
Dim hwnd As Long
hwnd = GetForegroundWindow
hWndlength = GetWindowTextLength(hwnd)
hWndTitle = String$(hWndlength, 0)
returnvalue = GetWindowText(hwnd, hWndTitle, (hWndlength + 1))
GetActiveWindowApp = hWndTitle
End Function

Private Sub Form_Load()
MsgBox GetActiveWindowApp()
End Sub

Ca c'est la solution que tu recherche
0

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

Posez votre question
MadM@tt Messages postés 2167 Date d'inscription mardi 11 novembre 2003 Statut Membre Dernière intervention 16 juillet 2009 1
3 nov. 2004 à 12:34
Oui mais ce qu'il veut c'est savoir si la fenetre dont il a le handle a le focus, donc ce n'est pas la peine de récupérer le titre de la fenetre active mais ce qu'il faut faire c'est comparer le handle que retourne GetForegroundWindow avec celui dont on veut savoir si la fenetre a le focus.
@ +
MadMatt
0
cs_olid Messages postés 296 Date d'inscription lundi 2 septembre 2002 Statut Membre Dernière intervention 28 janvier 2008
3 nov. 2004 à 12:51
Bin voilà....zest zà que je cherchais : "GetForegroundWindow"

Je teste ce soir :o)

Sinon, l'appli à detecter, cest YMessenger, et je sais son handle et aussi sa classe Window...
----
Olie_ze_kat - www.olid.fr.st =(°o°)=
0
Rejoignez-nous