GetForegroundwindow et SetForegroundwindow dans Framework.Net

cs_jeje44 Messages postés 4 Date d'inscription vendredi 1 octobre 2004 Statut Membre Dernière intervention 30 juin 2009 - 30 juin 2009 à 11:01
cs_jeje44 Messages postés 4 Date d'inscription vendredi 1 octobre 2004 Statut Membre Dernière intervention 30 juin 2009 - 30 juin 2009 à 13:21
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

Mayzz Messages postés 2813 Date d'inscription mardi 15 avril 2003 Statut Membre Dernière intervention 2 juin 2020 28
30 juin 2009 à 12:44
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. <
0
cs_jeje44 Messages postés 4 Date d'inscription vendredi 1 octobre 2004 Statut Membre Dernière intervention 30 juin 2009
30 juin 2009 à 12:53
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
0
Mayzz Messages postés 2813 Date d'inscription mardi 15 avril 2003 Statut Membre Dernière intervention 2 juin 2020 28
30 juin 2009 à 13:07
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. <
0
cs_jeje44 Messages postés 4 Date d'inscription vendredi 1 octobre 2004 Statut Membre Dernière intervention 30 juin 2009
30 juin 2009 à 13:21
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
0
Rejoignez-nous