Добавление компонентов GUI в предварительно скомпилированное приложение - PullRequest
1 голос
/ 02 ноября 2009

Есть ли способ добавить компонент GUI в приложение, которое уже запущено?

т.е. Добавить дополнительную вкладку в сторонний графический интерфейс?

У меня есть стороннее приложение, где мне нужно добавить дополнительную вкладку в интерфейс с вкладками (или даже кнопку для ссылки на новую форму).

Я вижу компоненты пользовательского интерфейса в UISpy и Spy ++, но не вижу способа изменить или добавить их ...

Есть идеи? Может быть, изменив память?

Обновление:
Приложение, которое я создал, чтобы обернуть вокруг стороннего приложения, является .NET, но стороннее приложение написано в VB6

Ответы [ 4 ]

2 голосов
/ 02 ноября 2009

Вы можете использовать ResHacker.

http://www.angusj.com/resourcehacker/

По сути, каждая форма GUI сохраняется как ресурс внутри определенного исполняемого файла Windows. ResHacker имеет встроенный графический редактор для редактирования «диалогов» (как они упоминаются в ResHacker).

2 голосов
/ 02 ноября 2009

Полагаю, это возможно с помощью отражения, с помощью Отражатель , при условии, что оно не было запутано. Исследуйте источник отражения, пока не найдете класс формы и экземпляр формы, который вы хотите изменить, затем вы можете вызвать метод Controls.Add или все, что вам нужно, с отражением. Но если вы не знаете точно , что вы делаете, вы можете столкнуться с неожиданным поведением из приложения.

1 голос
/ 02 ноября 2009

У вас должна быть веская причина для этого.

Я думаю, вы можете начать с Добавить вкладку, используя чистый WinAPI и TabCtrl_InsertItem Macro

Если у вас HWND из TabControl, вы можете попробовать добавить свою вкладку. с TabCtrl_InsertItem. Хотя я не думаю, что это возможно сделать из другого процесса. Но ты должен попробовать.

1 голос
/ 02 ноября 2009

Я предполагаю, что это приложение .NET WinForm. Если у вас нет исходных файлов и приложение не слишком большое, вы можете попробовать «декомпилировать» его и добавить в свой код, чтобы оно стало новым приложением.

Я большой поклонник Reflector Лутца Редера, который генерирует код из кодовой базы CLR. Вот ссылка на его инструменты. http://www.lutzroeder.com/dotnet/

Обновление:

darkassassin93 правильно, надеюсь, приложение не запутано :)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...