报错:
”类型的已垃圾回收委托进行了回调。这可能会导致应用程序崩溃、损坏和数据丢失。向非托管代码传递委托时,托管应用程序必须让这些委托保持活动状态,直到确信不会再次调用它们。”
解决:
将代码从
public void Hook()
{
// FnHookProc为处理函数
PHook = SetWindowsHookEx(5, FnHookProc, 0, AppDomain.GetCurrentThreadId());
}
改为
internal HOOKPROC PHookProc = null;
public void Hook()
{
// HOOKPROC为委托
PHookProc = new HOOKPROC(FnHookProc);
PHook = SetWindowsHookEx(5, PHookProc, 0, AppDomain.GetCurrentThreadId());
}
PS:
1、创建委托后,再作为参数传递给函数