Связь между приложением интерфейса C # и введен в другой процесс DLL - PullRequest
0 голосов
/ 06 мая 2011

Мое приложение внедряет dll (написанный с использованием c ++) в другой процесс и отправляет некоторую информацию в интерфейсную форму.Интерфейс выполнен с использованием MFC.Введенный код связывается с интерфейсом посредством отправки сообщений WM_COPYDATA следующим образом:

 ::SendMessage(hWnd, WM_COPYDATA, 0, (LPARAM) &cd); 

, а в форме интерфейса есть метод для получения сообщений: BOOL CInterfaceDlg::OnCopyData(CWnd* pWnd, COPYDATASTRUCT* pCopyDataStruct)

Я собираюсь создать интерфейсную форму с использованием WPF. Как я могу обмениваться данными между интерфейсом WPF и внедрением в другой процесс dll? Некоторую информацию, которую следует отправлять из dll в интерфейс, я собираюсь хранить в файлах xml.Но как мне сигнализировать интерфейсу для получения информации из xml?

1 Ответ

1 голос
/ 07 мая 2011

WPF обрабатывает сообщения и работает немного иначе, чем вы привыкли. Прочтите эту статью , чтобы понять, что возможно, а что нет.

Важная часть этой статьи:

Все элементы WPF на экране в конечном итоге поддерживаютсяHWND.Когда вы создаете окно WPF, WPF создает HWND верхнего уровня и использует HwndSource для помещения окна и его содержимого WPF внутрь HWND.Остальная часть вашего WPF-контента в приложении делится этим единичным HWND.Исключением являются меню, выпадающие списки и другие всплывающие окна.Эти элементы создают свое собственное окно верхнего уровня, поэтому меню WPF потенциально может выходить за границы окна HWND, в котором оно находится.Когда вы используете HwndHost для размещения HWND внутри WPF, WPF сообщает Win32, как расположить новый дочерний HWND относительно HWND окна WPF.

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