Я создаю программу, которая взаимодействует с другой программой, и я хотел бы «внедрить» свою программу в эту программу как дочернее окно MDI. Возможно ли это, и если да, то можно ли это сделать в VB.NET? Какие подводные камни связаны с этим?
Можно ли внедрить приложение Windows Form в другое приложение в качестве дочернего элемента MDI в VB.NET?
Ответы (1)
Это можно сделать двумя способами. Первый — получить копию Detours. и использовать pinvoke для внедрения вашего процесса в этот родительский процесс с MDI-контроллером, второй способ, хотя и более опасный, заключается в том, чтобы подключиться к оконным сообщениям MDI-контроллера и внедрить код, который будет выполняться. поскольку контроллер MDI работает в отдельном процессе, вы можете столкнуться с «нарушением прав доступа» при попытке доступа к памяти другого процесса, а именно к контроллеру MDI.
Вы, безусловно, можете подключиться к этому процессу и перехватить сообщения, взгляните на этот образец, найденный здесь (написано на C#, но вы можете легко добавить ссылку на свой проект VB.NET) и здесь также.
Это зависит от того, как далеко вы хотите зайти, возможно, вам придется разрешить вашему процессу доступ к защищенному пространству памяти вашим контроллером MDI, который находится в другом процессе, повысив его... попробуйте эти примеры хуков в предоставленных ссылках и посмотрите, как это идет...