0

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

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

4

1 回答 1

1

这是解决此问题的众多解决方案中的两个:

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

第二: 或者,interface如果您只有一个实例可听,则选择 an。

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,并且它的实现必须在视图库/应用程序中。

于 2017-06-30T08:16:21.197 回答