Avez-vous essayé de déterminer quelle fenêtre de votre application a le focus ou quelle fenêtre de n'importe quelle application a le focus?
Peder Rice
ceci est pertinent stackoverflow.com/questions/2423234/… donc si vous vouliez cliquer sur un bouton pour le faire, alors cela vaut la peine de vous assurer que votre formulaire ne prend pas le focus.
barlop
Réponses:
165
Voir un exemple sur la façon dont vous pouvez faire cela avec le code source complet ici:
une note newb, pour le faire fonctionner, using System.Runtime.InteropServices; et où placer l'importation de dll et les lignes externes statiques. coller dans la classe
barlop
1
@smink Comment obtenir la fenêtre de premier plan active pour un utilisateur spécifique (disons que le processus s'exécute en tant que service).
Si l'application entière n'est pas active (un autre programme a le focus), alors aucune fenêtre n'aura IsActive défini sur true.
Todd
En fait, cela pourrait être faux, dans mon cas, j'essayais d'accéder au tableau Window sur un thread non-UI. Cependant, voyez aussi ceci au cas où j'ai toujours raison: social.msdn.microsoft.com/Forums/vstudio/en-US/…
Todd
4
Bouclez Application.Current.Windows[]et trouvez celui avec IsActive == true.
Cela ne fonctionnerait-il pas uniquement pour les fenêtres de l'application .Net actuelle? Je pense que d4nt veut obtenir le titre de la fenêtre active actuelle sur le bureau, quelle que soit l'application à laquelle elle appartient.
vous pouvez utiliser la classe de processus, c'est très simple. utiliser cet espace de noms
using System.Diagnostics;
si vous souhaitez créer un bouton pour activer la fenêtre.
privatevoid button1_Click(object sender,EventArgs e){Process currentp =Process.GetCurrentProcess();TextBox1.Text= currentp.MainWindowTitle;//this textbox will be filled with active window.}
Réponses:
Voir un exemple sur la façon dont vous pouvez faire cela avec le code source complet ici:
http://www.csharphelp.com/2006/08/get-current-window-handle-and-caption-with-windows-api-in-c/
Édité avec les commentaires de @Doug McClean pour une meilleure exactitude.
la source
using System.Runtime.InteropServices;
et où placer l'importation de dll et les lignes externes statiques. coller dans la classeSi vous parliez de WPF, utilisez:
la source
Bouclez
Application.Current.Windows[]
et trouvez celui avecIsActive == true
.la source
Utilisez l'API Windows. Appelez
GetForegroundWindow()
.GetForegroundWindow()
vous donnera un handle (nomméhWnd
) à la fenêtre active.Documentation: fonction GetForegroundWindow | Microsoft Docs
la source
Basé sur la fonction GetForegroundWindow | Microsoft Docs :
Il prend en charge les caractères UTF8.
la source
S'il arrive que vous ayez besoin du formulaire actif actuel de votre application MDI : (MDI-Multi Document Interface).
la source
vous pouvez utiliser la classe de processus, c'est très simple. utiliser cet espace de noms
si vous souhaitez créer un bouton pour activer la fenêtre.
la source