7
votes

Comment amener une fenêtre au premier plan en utilisant c #?

J'essaie d'apporter au premier plan de la fenêtre. J'utilise ce code. Mais ça ne fonctionne pas. Est-ce que quelqu'un pourrait vous aider? XXX

Code expliqué

Faire une fenêtre la fenêtre de premier plan nécessite plus que d'appeler le Setforegroundwindow API. Vous devez Déterminez d'abord le fil de premier plan et attachez-le à votre fenêtre en utilisant Attachthreadinput, puis appelez Setforegroundwindow. Cette façon, ils peuvent Partagez des états d'entrée.

D'abord, j'appelle GetForegroundwindow à Obtenez la poignée du courant fenêtre de premier plan. Puis quelques appels à GetWindowThreadProcessid récupère le Fils associés au courant fenêtre de premier plan et la fenêtre I vouloir apporter au premier plan. Si Ces fils sont les mêmes un simple appel à setforegroundwindow est tout c'est nécessaire. Sinon, le Le fil de premier plan est attaché à la fenêtre que je porte à l'avant et détaché de quel était le courant fenêtre de premier plan. le API API PHASSTHEADADINCT Ceci.

Contenu extrait de ici Merci.


6 commentaires

Je ne peux pas comprendre le code aussi. Mais je pense que le sujet serait fermé. J'attends des solutions possibles


@Nikil, mayb Il suffit de conserver le titre et de supprimer (oubliez) ce code?


@Nikil - Vous devez utiliser un notificon à la place


Ce code est vraiment diabolique, et potentiellement buggy également: blogs.msdn.com/b/oldnewthing/archive/2008/08/01/8795860.aspx


Duplicaté possible de ​​Quoi est le moyen "droit" d'apporter une application de formulaires Windows au premier plan?


Pas un duplicata. Cela apporte une application séparée au premier plan.


6 Réponses :


1
votes

Vous devez utiliser SetForegroundwindow. De plus, il peut être intéressant pour vous C # FORME FORMULAIRE FOCUS


0 commentaires

1
votes

Je serai bref: form.bringtoFront ()


1 commentaires

Ceci est pour les formulaires dans votre propre application, pas d'application en cours d'exécution



14
votes

J'ai utilisé cette méthode avant: xxx

Plus d'informations: ​​http: / /pinvoke.net/default.aspx/user32.setforegroundwindow


2 commentaires

Vous devez également apporter le formulaire de restauration si elle est minimisée.


Si vous ne connaissez pas votre nom de processus, c'est une façon pratique de les obtenir: système.diagnostics.process.getprocesses ()



-2
votes

AS de Windows 7 Ces fonctionnalités ne se comportent pas si bien. S'il y a une application telle que Excel devant l'application, vous souhaitez apporter à l'avant, alors Windows 7 bloque cela et clignote la fenêtre. Vous pouvez définir un délai d'attente de registre ForgrockLockTimeout = 0 dans HKEY_CURRENT_USER \ Panneau de configuration \ Desktop Mais ceux-ci sont connus sous le nom de mise au point. Pour définir le comportement de la manière dont XP "devrait" se comporter et se comportera dans Windows 7 par défaut, vous pouvez créer / définir la valeur sur 0x00030D40 (200000ms). J'aimerais savoir quelle est la solution préférée pour les applications Windows de confiance. par exemple. Si je fais confiance à l'application B pour prendre la mise au point lorsque je double-cliquez sur quelque chose dans application A, et une autre application obscurcissait la fenêtre d'application b.


0 commentaires

5
votes

Ce code restaure et définit la mise au point sur une fenêtre: xxx

et l'utiliser comme ceci: xxx


0 commentaires