2010-11-11 27 views
0

J'ai une application héritée implémentée sous Windows Forms .NET application. Il permet de scripter les évènements (avec vbs) mais ne permet pas d'améliorer son interface utilisateur.L'application .Net contrôle les contrôles d'injection

Est-il possible d'injecter des contrôles utilisateur personnalisés dans l'arborescence des commandes d'applications héritées afin de communiquer avec eux à partir des capacités de script?

p.s. code d'application hérité est manqué. Il est également impossible de le réécrire de zéro

Répondre

2

Si vous faites beaucoup d'efforts et que vous faites beaucoup d'efforts, je suis sûr que cela serait possible en utilisant la réflexion et la réécriture de code ou tout autre chose. Mais il serait presque certainement beaucoup plus simple, moins long et moins sujet aux erreurs de simplement modifier l'interface graphique en changeant le code source, puis en recompilant. Si votre interface graphique n'est pas conçue pour être flexible, vous devriez la rendre flexible en recréant ou en recréant le code, et non en abusant du code existant pour le rendre inutilisable.


Mise à jour # 1: Comme dit dans le commentaire, puisque vous n'avez plus le code source, l'option de recompilation est parti. Sauf si vous avez ré-écrit l'application à partir de zéro ou partiellement récupéré du code source grâce à un outil de rétro-ingénierie comme .NET Reflector. (En supposant que le code n'a pas été obscurcie.)

Mise à jour # 2: Si vous voulez aller dans le sens de l HWND énumération (fenêtre Win32 gère), vous pourriez être intéressé par une question connexe: à savoir, celle de modifier les dialogues d'ouverture/de sauvegarde de fichiers par défaut de Windows. Si vous souhaitez insérer ou modifier des contrôles dans ces boîtes de dialogue, vous devez traiter HWND s, puis manipuler les contrôles à travers ceux-ci, en utilisant les fonctions natives de l'API Win32.

+0

Oui, c'est vrai. Mais le code est manqué :(Désolé, je n'ai pas mentionné cela depuis le début –

+0

@Andrew: Ok. Selon la complexité de votre application, vous pouvez envisager de le réécrire, de sorte qu'il est plus flexible pour commencer Ou récupérez en partie le code source avec le réflecteur .NET ou tout autre outil d'ingénierie inverse (cette suggestion ne fonctionnera que si le code n'a pas été obscurci.) – stakx

+0

Est-il possible d'utiliser les scripts pour créer mon objet com à partir de dll (dans dans ce cas, mon code sera chargé dans l'exécutable) puis itérer à travers les poignées avec les fonctions natives win32 trouver le contrôle que je veux et le convertir en instance Windows.Forms.Form afin d'accéder à la propriété .Controls? –