2010-03-11 56 views
1

我有一個窗口句柄和它的richEdit控件。我能用我自己的一個來替換上述控制嗎?我希望它的行爲與原來的一樣,即成爲窗口等的一部分。在運行時替換另一個窗口的控件

我將詳細闡述這個場景 - 我目前正在分解一個應用程序,其中一個應用程序的功能是文本編輯器。我目前的(受限)環境在其中有各種程序鉤子,其中一個鉤子產生編輯器窗口的句柄。另一個允許我獲取RichEdit20A控件窗口主機的句柄。

我想要做的是 - 用我自己的(它的.NET等價物大概)覆蓋控件並修補應用程序的GetWindowText調用以使用新的。爲了實現它,我打算在C#/託管C++中編寫類庫並將其導入到我的應用程序(用非託管C++編寫)。

此外,可以有任意數量的文本編輯器實例。

+0

這是不可能的,沒有辦法讓應用程序知道它需要使用不同的窗口句柄。或者將託管代碼注入非託管程序。 – 2010-03-11 15:58:55

+0

我目前的鉤子允許我在GetWindowTextA調用之前修改調用堆棧(一個配備了asm包裝器的裸函數),並且我不打算注入託管代碼本身。你看,我的應用程序充當應用程序的非託管封裝。除了調用類庫的方法來設置/獲取後者的文本外,它什麼都不做。 – shadeMe 2010-03-11 20:58:04

回答

0

這聽起來太複雜了。只需更換其WndProc(GWL_WNDPROC),不進行任何轉發,然後使HWND無效。這將強制重繪(WM_PAINT),然後您可以捕獲。主人可能甚至不會注意到(除非他們有吸引力,當然)

相關問題