2010-03-09 7 views
1

Il existe un logiciel qui appelle une méthode dans ma DLL C#. Dans cette méthode dll j'ai besoin d'avoir la poignée de la fenêtre du programme/fenêtre qui a appelé ma DLL.Get handle de fenêtre de la fenêtre d'appel

comment obtenir cette "poignée de la fenêtre d'appel"?

Merci!

+0

Comment la méthode est-elle appelée? Pouvez-vous ajouter un paramètre 'hwnd'? – SLaks

Répondre

2

Cela peut retourner la poignée de la fenêtre principale.

System.Diagnostics.Process.GetCurrentProcess().MainWindowHandle 

Comme je sais, il n'y a aucun moyen d'obtenir une fenêtre concrète car ce n'est rien de plus qu'un objet Form. Mais la classe Form a une propriété Handle. Vous pouvez le passer en argument aux appels de méthode dll.

+0

c'est le problème, je ne peux pas passer un argument à ma méthode dll de la source programme. donc je ne peux pas passer le manche. J'ai besoin de trouver le handle dans ma méthode dll – Tobi

+0

Hmmm ... Malheureusement, la seule façon de résoudre un problème est de réécrire un peu dll. Je ne vois pas de problèmes ici (si dll et exécutable sont écrits par vous donc vous avez des sources) sauf que la conception de l'assemblage va souffrir ... – ILya

+0

ouais j'ai implémété le code que vous m'avez dit, cela fonctionne. Je n'ai pas de sources de programme appelant, donc j'ai dû utiliser GetCurrentProcess(). MainWindowHandle. Je pense qu'il n'y a pas d'autre moyen "propre"? – Tobi

2

Vous ne pouvez pas: Windows n'appeler pas les méthodes, les méthodes d'appels de code.

Vous devriez idéalement ajouter un paramètre de poignée de fenêtre à votre méthode. Si cela est absolument impossible, vous pouvez, par exemple, utiliser la fonction API GetActiveWindow pour activer la fenêtre sur le thread en cours. Ce n'est pas garanti de travailler; Peut-être qu'il n'y a pas de fenêtres ouvertes.

Pour quoi avez-vous besoin de la poignée de fenêtre?

+0

pour modifier la fenêtre d'appel, actuellement j'utilise GetForegroundWindow mais ce n'est pas vraiment une bonne solution, donc si l'utilisateur change de fenêtre immédiatement je vais avoir le mauvais handle – Tobi

Questions connexes