| 编程中国 | 业界新闻 | 技术文章 | 视频教程 | 下载频道 | 程序源码 | 个人空间 | 编程论坛
全能ASP/PHP/ASP.NET主机,支持月付专业 MSSQL 数据库空间,支持月付专业 MySQL 数据库空间,支持月付买域名,送MP3、MP4
高端软件开发 = 年薪十万不是梦赛孚耐:软件保护加密专家身份认证令牌USB KEY买空间,免费送域名(厦门中资源)
共有 366 人关注过本帖
标题:已经折腾了三天了!使用HOOK时,想给委托创建一个句柄
收藏  订阅  推荐  打印 
jshzp
Rank: 1
等级:新手上路
帖子:1
积分:110
注册:2008-8-16
已经折腾了三天了!使用HOOK时,想给委托创建一个句柄

VB.NET下,我使用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中怎么写代码对这个委托创建一个句柄而不被回收呢?
      另外,窗体中如果去掉自定义的控件,好像就没有上述错误,这是什么道理啊??
      请高手帮忙搞定

[ 本帖最后由 jshzp 于 2008-8-16 20:10 编辑 ]
搜索更多相关主题的帖子: Integer  ByVal  HOOKPROC  Function  折腾  
2008-8-16 20:01
关于我们 | 广告合作 | 编程中国 | 清除Cookies | Archiver | WAP | TOP

编程中国 版权所有,并保留所有权利。鲁ICP备08000592号
Powered by Discuz, Processed in 0.050001 second(s), 9 queries.
Copyright©2004-2008, BCCN.NET, All Rights Reserved