Вопрос

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

Приветствия, Флориан

Это было полезно?

Решение

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

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top