実行時にウィンドウのコントロールを別のコントロールに置き換えます
質問
ウィンドウとその豊富なコントロールのハンドルがあります。上記のコントロールを自分のコントロールに置き換えることができますか?元のものが、つまり、窓の一部であり、そのようなものになるように振る舞うことを望んでいます。
シナリオをさらに詳しく説明します - 現在、その機能の1つがテキストエディターであるアプリケーションを分解しています。私の現在の(制限付き)環境には、手順へのさまざまなフックがあり、そのうちの1つはエディターウィンドウにハンドルを生成します。もう1つは、windowホストをコントロールするrichedit20aのハンドルを調達することができます。
私がやりたいのは、これが私自身(おそらくその.NET等価)でコントロールを上書きし、アプリのgetWindowText呼び出しにパッチして新しいものを使用します。実装するには、C#/Managed C ++でクラスライブラリを作成し、アプリ(管理されていないC ++で記述されている)にインポートする予定です。
また、テキストエディターのインスタンスの数が任意になる場合があります。
解決
それはあまりにも複雑すぎるように聞こえます。そのwndprocを交換するだけです(GWL_WNDPROC
)、何も転送してから、HWNDを無効にします。それは再描画を強制します(WM_PAINT
)それをキャプチャできます。所有者はおそらく気づかないでしょう(もちろん、彼らもそれを引っ掛けていない限り)
所属していません StackOverflow