Как отправить уведомление с данными о подключении мыши / ключа из 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 и реализация этого должна быть в представлении библиотеки / приложения.

Другие вопросы по тегам