2008-08-30 4 views
3

Sans recourir à PInvoke, existe-t-il un moyen dans .net pour savoir quelles fenêtres sont ouvertes? C'est légèrement différent de demander quelles applications sont en cours d'exécution en mémoire. Par exemple, Firefox pourrait être en cours d'exécution, mais pourrait être plus d'une fenêtre. Fondamentalement, je veux juste être au courant de la même information que la barre des tâches (et alt-tab?) Est.Obtenez une liste des fenêtres en cours, et donnez-en un focus, dans .Net

De même, une fois que j'ai une référence à une fenêtre, y a-t-il un moyen de lui donner un focus par programme?

Existe-t-il un moyen de le faire avec du code managé?

Répondre

0

Je crains que vous ne puissiez pas le faire sans PInvoke. Pour donner le focus à une fenêtre, vous devriez appeler la fonction SetForegroundWindow, voir l'article this pour plus de détails.

1

Vous pouvez consulter les nouveaux éléments UI Automation dans .NET 3.5. Il est censé masquer un grand nombre de choses PInovke et fonctionne avec des applications Web et WPF.

Je ne l'ai pas encore utilisé, donc je n'ai pas d'endroit plus précis pour vous orienter, mais ça pourrait faire l'affaire.

1

Découvrez ce projet LGPL. Je sais qu'il peut mettre au premier plan pour une fenêtre. Sinon, Aku est correct. Il faudra probablement des appels PinVoke.

http://mwinapi.sourceforge.net/

Si vous avez besoin d'informations sur l'utilisation PInvoke:

http://www.pinvoke.net/

+0

J'ai trouvé http://mwinapi.sourceforge.net extrêmement utile pour mon application IronRuby. – NoonKnight

Questions connexes