如何将包含鼠标/键挂钩数据的通知从 C# dll 发送到 wpf exe



我正在创建一个C# WPF exe和一个C# DLL。DLL中有一个名为StartRecording的函数。exe 调用此函数。该功能在第三方应用程序(例如MS Word(上安装低级鼠标和键盘挂钩。在挂钩过程中,我收集与鼠标/键盘消息相关的详细信息,以及用户与之交互的控件的详细信息(使用 UI 自动化(。

我想从 DLL 向 exe 发送一条通知,告知已收集数据,并且在通知本身中,我想发送数据。最好的方法是什么?我能想到的一种选择是将WM_COPY_DATA消息从 dll 发送到 exe。但是有更好的方法吗?有没有办法将字典从 dll 发送到 exe?

以下是许多解决方案中的两个:

首先:你可以实现一个event handler并在你的dll类中注册你的ViewModel。如果需要,请查看此问题 - 以实现您自己的自定义事件。

第二:或者,如果你只有一个实例可以监听,你就用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中,它的实现必须在视图库/应用程序中。

最新更新