Заменить существующий Winform HWND другим? - PullRequest
0 голосов
/ 18 февраля 2010

Я пытаюсь взломать существующее окно и заменить его содержимым Winforms, которым я владею. Я подумал, что было бы неплохо поменять местами внутреннюю ручку формы с той, которую я хочу переопределить, и подумал, кто-нибудь когда-нибудь пробовал это сделать?

Ура, Florian

1 Ответ

0 голосов
/ 20 февраля 2010

Это легко попробовать, если вы выполняете процесс и поток окна, которое хотите заменить.Если вы не работаете с процессом и потоком исходного окна, то вероятность того, что он сработает, гораздо ниже.Если это часть оболочки Windows, которую вы пытаетесь заменить, то очень маловероятно, что вы заставите это работать.

Если вы сможете выполнить замену окна, выдолжны ответить на родительское окно так, как оно ожидает, что ответит исходное дочернее окно, но, вероятно, вы уже думали об этом.

Если родительское окно содержит дескриптор окна исходного потомка, то ваша попытка заменить его просто не удастся (он все равно попытается поговорить с оригинальным дескриптором).но если он отслеживает дочерний элемент по идентификатору, то все, что вам нужно сделать, это присвоить окну тот же идентификатор окна и использовать SetWindowPos, чтобы присвоить ему тот же размер, местоположение и z-порядок, что и у исходного дочернего элемента, а затем уничтожитьоригинальный ребенок.

Я желаю вам удачи, это поведение высокого риска, но так же, как и все другие взломы, которые вы могли бы попробовать вместо этого, например, создание подклассов и перехватываний.

...