2010-03-11 4 views
1

J'ai un handle pour une fenêtre et son contrôle richEdit. Serais-je capable de remplacer le dit contrôle par l'un des miens? J'aimerais qu'il se comporte comme l'original, c'est-à-dire qu'il fasse partie de la fenêtre et ainsi de suite.Remplacer le contrôle d'une fenêtre par un autre à l'exécution

Je vais élaborer le scénario plus loin - Je suis en train de désassembler une application dont l'une des fonctionnalités est un éditeur de texte. Mon environnement actuel (restreint) comporte divers raccourcis vers des procédures, dont l'une cède le handle à la fenêtre de l'éditeur. Un autre me permet de procurer le handle à la RichEdit20A contrôle les hôtes de la fenêtre. Ce que je voudrais faire est ceci - Écraser le contrôle avec le mien (son équivalent .NET vraisemblablement) et patcher les appels GetWindowText de l'application pour employer le nouveau. Pour l'implémenter, j'ai l'intention d'écrire la bibliothèque de classes en C#/C++ et de l'importer dans mon application (qui est écrite en C++ non géré).

De même, il peut y avoir un nombre arbitraire d'instances de l'éditeur de texte.

+0

Ce n'est pas possible, aucun moyen de faire savoir à l'application qu'elle doit utiliser un autre handle de fenêtre. Ou injectez du code managé dans un programme non géré. –

+0

Mon hook actuel me permet de modifier la pile d'appels juste avant l'appel GetWindowTextA (une fonction nue équipée d'un wrapper asm), et je ne prévois pas d'injecter le code managé lui-même. Vous voyez, mon application agit comme un wrapper non géré qui corrige l'application. Il ne fait rien d'autre que d'appeler les méthodes de la bibliothèque de classes pour définir/obtenir le texte de ce dernier. – shadeMe

Répondre

0

Cela semble beaucoup trop complexe. Il suffit de remplacer son WndProc (GWL_WNDPROC), en ne transmettant rien, puis invalider le HWND. Cela va forcer un redraw (WM_PAINT) que vous pouvez ensuite capturer. Le propriétaire ne s'en apercevrait probablement pas (à moins qu'ils ne l'aient aussi accroché, bien sûr)

Questions connexes