GetForegroundwindow et SetForegroundwindow dans Framework.Net

Signaler
Messages postés
4
Date d'inscription
vendredi 1 octobre 2004
Statut
Membre
Dernière intervention
30 juin 2009
-
Messages postés
4
Date d'inscription
vendredi 1 octobre 2004
Statut
Membre
Dernière intervention
30 juin 2009
-
Bonjour,

j'adapte du code VB6 vers .Net et je ne veux pas utiliser d'API externe dans mon projet .Net, juste les classes natives fournies par le Framework.net (version 2.0).

J'ai réussi à trouver l'équivalent pour la gestion des processus dans le Framework.net (je passe par le Namespace System.Diagnostics.Process au lieu des API GetWindowThreadProcessId, etc...).

Par contre, je ne vois pas où trouver l'équivalent .Net pour la gestion des fenêtres Windows (getforegroundwindow, setforegroundwindow, etc...) sans utiliser d'API. Cela doit bien exister !

Si quelqu'un a une idée, merci de m'indiquer quelques pistes

Jérôme
A voir également:

4 réponses

Messages postés
2814
Date d'inscription
mardi 15 avril 2003
Statut
Membre
Dernière intervention
2 juin 2020
38
Bonjour,

Tout dépend à quoi te servent ces API, quel est ton but au final ?
                                                                              
Si le déboguage est l'art d'enlever les bogues, la programmation doit être l'art de les créer. <
Messages postés
4
Date d'inscription
vendredi 1 octobre 2004
Statut
Membre
Dernière intervention
30 juin 2009

C'est vrai que je n'ai pas dit ce que je voulais faire exactement : je lance par un exe .Net des applications Excel et Word via Interop et je voudrais pouvoir ramener des fenêtres au premier plan. Le code a été créé en VB6 et utilisait les API Getforegroundwindow et Setforegroundwindow pour récupérer la fenêtre active et rendre la fenêtre d'une application en premier plan.

Maintenant, j'adapte ce code en .Net avec comme restrictions de ne plus utiliser les API externes comme user32.dll, etc..., juste utiliser les classes du Framework préexistantes.

Donc, de manière générale, un peu comme pour les processus où j'ai utilisé la classe Process du namespace System.Diagnostics dans le Framework, n'existerait-il pas une classe dans le Framework qui gèrerait la manipulation des fenêtres, comme ce que faisaient les API mentionnées, et comme le fait aussi les API FindWindow, getWindowText, etc....

Merci pour ton aide.

Jérome
Messages postés
2814
Date d'inscription
mardi 15 avril 2003
Statut
Membre
Dernière intervention
2 juin 2020
38
Il est clair qu'en .Net on a tendance a utiliser de moins en moins les API, mais les utiliser ne représente pas pour le moins un crime ! Il y a des fois ou l'on a pas le choix car le framework a ses limites... C'est vrais que c'est pratique, d'avoir à ne saisir qu'une ligne de code plutot que de se taper toutes les déclarations et leurs structures éventuelles....

Manipuler les fenêtre en interne se fait facilement en .Net pour ce qui est de l'intèrne, pour les programmes tiers, je crain qu'aucune fonction du framework en soit capable, ce qui veut donc dire appel au API obligatoire.

++ Mayzz.

                                                                              
Si le déboguage est l'art d'enlever les bogues, la programmation doit être l'art de les créer. <
Messages postés
4
Date d'inscription
vendredi 1 octobre 2004
Statut
Membre
Dernière intervention
30 juin 2009

J'ai trouvé finalement ce que je cherchais : pour ramener une appli au premier plan, j'ai utilisé la méthode AppActivate avec comme paramètre l'id du processus à activer (Microsoft.VisualBasic.AppActivate(procId)). Pour la gestion des Handle, Text, etc... de fenêtres, il y a assez de propriétés et méthodes dans la classe Process pour s'en sortir comme il faut.

Mais je suis d'accord avec ce que tu indiques et adapter du code VB6 sans utiliser d'API est parfois galère mais en cherchant un peu, on trouve.

Merci pour ton aide.

Jérome