Как отправить уведомление с данными о подключении мыши / ключа из C# dll в wpf exe
Я создаю C# WPF EXE и C# DLL. В DLL есть функция StartRecording. Exe вызывает эту функцию. Функция устанавливает низкоуровневые манипуляции с мышью и клавиатурой в сторонних приложениях (например, MS Word). В процедурах подключения я собираю сведения, относящиеся к сообщению мыши / клавиатуры, а также сведения об элементе управления (с использованием автоматизации пользовательского интерфейса), с которым взаимодействует пользователь.
Я хочу отправить уведомление из DLL в exe, что данные были собраны, и в самом уведомлении я хочу отправить данные. Каков наилучший способ сделать это? Один вариант, который я могу придумать, это отправить сообщение WM_COPY_DATA из dll в exe. Но есть ли лучший способ? Есть ли способ, с помощью которого я могу отправить словарь из DLL в EXE?
1 ответ
Вот два из многих решений этого:
Во-первых: вы могли бы реализовать event handler
и зарегистрируйте свой ViewModel
в вашем dll-классе. Проверьте этот вопрос - для реализации вашего собственного события - если даже необходимо.
Второе: или вы идете с interface
если у вас есть только один экземпляр для прослушивания.
public interface IListen
{
void SendMessage(string msg);
void SendDictonary(IDictionary<object, object> dic);
}
public class MyDllClass
{
public IListen Listener
{
get;
set;
}
public void SomeMouseInputAppears()
{
if(Listener != null) Listener.SendMessage("sample");
}
public void SomeKeyboardInputAppears()
{
if (Listener != null) Listener.SendDictonary(new Dictionary<object,object>());
}
}
Конечно interface
в вашем dll
и реализация этого должна быть в представлении библиотеки / приложения.