从钩子程序中获取数据?

时间:2016-05-29 23:39:20

标签: c# c++ dll callback setwindowshookex

我有C ++ DLL,它实现了CTB_HOOK和c#app,我可以从中调用这个DLL。

系统调用以下函数来拦截挂钩线程的消息(在激活,创建,销毁,最小化,最大化,移动或调整窗口大小等之前)。我想将nCode传递给我的c#应用程序。

static LRESULT CALLBACK CBTHookProc(int nCode, WPARAM wParam, LPARAM lParam)
{
    if (nCode == HCBT_ACTIVATE)
    {
        MessageBox(NULL, TEXT("HCBT_ACTIVATE"), TEXT("inside hook"), MB_OK);
    }
    //here I want to pass nCode(code of intercepted message) to my c# app.

    return CallNextHookEx(NULL, nCode, wParam, lParam);
}

首先尝试从C ++代码(good article on this topic)使用callback到C#。但很快我就意识到我无法通过指向c#_callback_functionCBTHookProc的指针(我想将指针保存到c#_callback_function作为全局变量,但由于每个进程都使用DLL有自己的所有DLL的实例全局没有成功)。

然后我用Google搜索了DLL共享数据,但我只适用于静态变量。

那么,有没有办法从钩子程序回调?或者可能是其他一些从钩子程序中获取数据的方法?

0 个答案:

没有答案