Comment puis-je savoir si ma fenêtre est la fenêtre active en cours? Ma proposition actuelle est de faire GetForegroundWindow et de comparer le HWND avec celui de ma fenêtre. Existe-t-il une meilleure méthode que celle-là? J'utilise Win32 API/MFC.Comment déterminer si la fenêtre en cours est la fenêtre active?
Répondre
Oui, c'est la seule façon dont je suis au courant.
Mais vous devez gérer le fait que GFW peut renvoyer NULL. Généralement, cela se produit lorsqu'un autre bureau (par exemple le bureau d'économiseur d'écran) est actif. Notez que l'utilisation d'un mot de passe d'économiseur peut affecter l'utilisation d'un autre bureau (cela dépend de la version de Windows et je ne me souviens pas des détails du fonctionnement des différentes versions).
Ce code ne fonctionnera pas correctement en mode débogage sous Visual Studio, car vous obtiendrez le handle de fenêtre de VS.
que tout autre que de :-) Peachy
Oui vous avez raison, sauf indication que vous voulez vérifier ActiveWindow de chaque fil.
Je suppose que vous voulez dire la fenêtre qui a le focus d'entrée quand vous dites "fenêtre active"?
Dans ce cas, oubliez l'API GetForegroundWindow(). Cela retournera la fenêtre la plus haute - pas toujours la fenêtre qui a le focus d'entrée.
Utilisez plutôt GetFocus().
Vous pouvez essayer d'utiliser le message WM_ACTIVATEAPP.
d'abord définir une variable bool bool wActive = false
, dans la procédure WndProc, voici le prochain morceau de code:
case WM_ACTIVATEAPP:
wActive = (bool)wParam;
return 0;
Vous pouvez aller à MSDN pour trouver plus d'informations sur WM_ACTIVATEAPP
Oui, GetForgroundWindow() est un bon moyen de vérifier, se comporte correctement, même avec une fenêtre "Toujours sur le dessus" aka HWND_TOPMOST.
Une autre façon est avec GetActiveWindow()
HWND temp = GetActiveWindow();
if (temp == hWnd) // Then your current window has focus
Sinon les messages suivants signalent si l'accent a changé
case WM_KILLFOCUS:
// windowHasFocus = false
break;
case WM_SETFOCUS:
// windowHasFocus = true;
break;
- 1. programme est de déterminer si la fenêtre active dans .NET
- 2. Comment savoir si une fenêtre est active? (Win32 API)
- 3. De la fenêtre pop active la fenêtre parent
- 4. Déterminez si une fenêtre donnée est en cours de déplacement
- 5. Comment obtenir le titre de la fenêtre active en cours en utilisant C#?
- 6. Obtention du nom de la fenêtre active
- 7. Comment fermer la fenêtre enfant si la fenêtre parent est fermée?
- 8. Déterminer la position de la fenêtre du navigateur en JavaScript?
- 9. Obtenir le nom de fichier de la fenêtre active en cours
- 10. Comment déterminer si une page est en cours de redirection
- 11. Comment déterminer si un assemblage est en cours d'utilisation?
- 12. Figure Out si la fenêtre est mise au point
- 13. Iphone Charger un autre UIView dans la fenêtre active
- 14. Le moyen le plus efficace pour déterminer si un élément HTML est dans la fenêtre d'affichage?
- 15. Fenêtre popup semblable à la fenêtre modale
- 16. Active JavaScript (jQuery) dans la fenêtre iframe de TinyMCE
- 17. Envoi d'une chaîne (de caractères) à la fenêtre active
- 18. Comment déterminer si la session Windows en cours est verrouillée ou non?
- 19. Fenêtre du propriétaire WPF en haut de la fenêtre enfant
- 20. Une tâche sera-t-elle complétée plus rapidement si c'est la fenêtre active?
- 21. Fenêtre d'affichage WPF avant la fenêtre principale
- 22. Déterminer si le site est en cours d'exécution HTTPS
- 23. Déterminer si un script ruby est déjà en cours d'exécution
- 24. Comment faire pour qu'une fenêtre se place en haut des autres fenêtres de Gnome lorsque cette fenêtre est déjà active?
- 25. Authentification Active Directory sans fenêtre contextuelle
- 26. Recharger la fenêtre parent à partir de la fenêtre enfant
- 27. JFrame Agrandir la fenêtre
- 28. Comment puis-je dire à ma fenêtre d'application est la fenêtre de premier plan
- 29. ASP - Déterminer si le script en cours est en cours d'exécution comme un include
- 30. Comment rendre la fenêtre Error List automatiquement active lors de la compilation dans Visual Studio?
Cela est faux: « GetFocus retourne la fenêtre avec le focus du clavier pour le courant La file d'attente de messages du thread. [...] Utilisez la fonction GetForegroundWindow pour récupérer le handle de la fenêtre avec laquelle l'utilisateur travaille actuellement. " –
Comme je l'ai dit: "si vous voulez dire la fenêtre qui a le focus d'entrée". – Stefan
Oui, je veux dire la fenêtre dans laquelle l'utilisateur travaille. Merci –