Как встроить Win32 Delphi Form в .NET Winform - PullRequest
1 голос
/ 10 февраля 2012

Мы хотели бы открыть некоторые формы Delphi (win32) из ​​.NET и встроить форму Delphi в .NET MDI-форму.Если мы просто вызываем экспортированный метод в нашей DLL-библиотеке Delphi, это не проблема для встраивания формы, однако тогда у нас возникают проблемы с ярлыками и событиями клавиатуры в целом.Мы считаем, что это из-за несовместимых циклов сообщений.Затем мы попытались выполнить Application.Run в экспортированных процедурах в нашей DLL-библиотеке Delphi в отдельном .NET-потоке, и он работает в первый раз, но не удается, когда мы пытаемся открыть форму более одного раза.Кто-нибудь знает, как взаимодействовать так, как нам бы хотелось: встроить Win32 Delphi Form в .NET Winform?

@ All: Прежде всего, спасибо за ваши ответы. Мы нашли решение нашей проблемы.: Мы переместили Delphi Application.Run в экспортированную процедуру, которая запускает окна.

Ответы [ 2 ]

2 голосов
/ 10 февраля 2012

Если у вас есть источник, вы можете попробовать перенести его на Delphi Prism, который генерирует код .NET. Хотя, если вы используете VCL, вы ведете тяжелую битву. В то время как Delphi 2006 имел реализацию VCL .NET, Prism - это просто Object Pascal для .NET без адаптера VCL.

Другим доступным инструментом является Hydra Я не использовал его лично, но они утверждают, что обеспечивают взаимодействие между .NET и "устаревшим" Delphi. Если это работает так, как они утверждают, это может быть лучшим вариантом для переноса старого кода Delphi в приложение .NET.

0 голосов
/ 10 февраля 2012

Я бы, вероятно, запустил приложение Delphi в отдельном процессе, установил бы родительское окно для окон Delphi в свой контейнер MDI (вместо значения по умолчанию: рабочий стол, на который ссылается HWND 0), и провел бы все необходимые данные между процессами, используяТипичный межпроцессный обмен сообщениями.

Опять же, это по сути то же самое, что и представление вашей формы как объекта ActiveX.Мне просто нравится использовать подход Google Chrome и изолировать окна / вкладки в отдельных процессах.

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