J'essaie d'obtenir un handle de la fenêtre de premier plan dans C#/Net 2.0/WinForms en appelant la fonction WinAPI GetForegroundWindow native, dans la forme de mon application constructeur. Lorsque j'exécute le programme directement à partir de Windows Explorer ou Total Commander, il identifie correctement la fenêtre Windows Explorer ou Total Commander.GetForegroundWindow ne fonctionne pas lorsque le programme C# est exécuté à partir d'une touche de raccourci
Cependant, si je crée un raccourci vers mon programme sur le bureau et définir une touche de raccourci pour le raccourci (disons Ctrl + Alt + X), quand je suis en cours d'exécution de mon programme en utilisant le raccourci, est identifié la fenêtre de premier plan comme la "fenêtre Shell_TrayWnd" (poignée 0x00010064), et non la fenêtre réelle. (Disons que je suis en cours d'exécution de Firefox sur le dessus, quand j'appuyez sur Ctrl + Alt + X démarrage de mon programme et dit que la fenêtre de premier plan n'est pas Firefox, comme il se doit, il dit que c'est la barre des tâches -. Shell_TrayWnd)
public MainForm()
{
this.InitializeComponent();
IntPtr handle = WinAPI.GetForegroundWindow();
this.Text = handle.ToString();
StringBuilder title = new StringBuilder(255);
if (WinAPI.GetWindowText(handle, title, 255) > 0)
{
this.Text += title.ToString();
}
}
Comment puis-je obtenir la vraie fenêtre de premier plan? Dois-je (aussi) utiliser d'autres fonctions comme GetWindow?
Merci