| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1731 人关注过本帖
标题:已经折腾了三天了!使用HOOK时,想给委托创建一个句柄
只看楼主 加入收藏
jshzp
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2008-8-16
收藏
 问题点数:0 回复次数:0 
已经折腾了三天了!使用HOOK时,想给委托创建一个句柄
下,我使用hook截获系统键盘消息,回调函数时出错“对“T2!T2.Module1+HOOKPROC::Invoke”类型的已垃圾回收委托进行了回调。这可能会导致应用程序崩溃、损坏和数据丢失。向非托管代码传递委托时,托管应用程序必须让这些委托保持活动状态,直到确信不会再次调用它们。”,我怎么做才能“让这些委托保持活动状态”呢?
我的委托相关代码是:
       Declare Function SetWindowsHookEx Lib "user32" Alias "SetWindowsHookExA" (ByVal idHook As Integer, ByVal lpfn As HOOKPROC, _
       ByVal hmod As Integer, ByVal dwThreadId As Integer) As Integer
       。。。。。。   
       Delegate Function HOOKPROC(ByVal nCode As Integer, ByVal wParam As Integer, ByVal lParam As Integer) As Integer
       。。。。。。
       hnexthookproc = SetWindowsHookEx(HookType.WH_KEYBOARD, AddressOf MyKeyboardProc, 0, GetCurrentThreadId())
      VBNET中怎么写代码对这个委托创建一个句柄而不被回收呢?
      另外,窗体中如果去掉自定义的控件,好像就没有上述错误,这是什么道理啊??
      请高手帮忙搞定

[[it] 本帖最后由 jshzp 于 2008-8-16 20:10 编辑 [/it]]
搜索更多相关主题的帖子: Integer ByVal HOOKPROC Function 折腾 
2008-08-16 20:01
快速回复:已经折腾了三天了!使用HOOK时,想给委托创建一个句柄
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.072440 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved