VB.NET中能HOOK吗?
VB.NET中能HOOK吗?
问题点数:0、回复次数:6Top
1 楼oilren()回复于 2004-05-04 14:59:23 得分 0
没人回答?Top
2 楼douhapy(双喜)回复于 2004-05-04 15:10:04 得分 0
能用,不过已没有必要了,终究VB.Net是面向对象的。hook中的很多功能在VB.Net中同过方法或事件来实现了。Top
3 楼yufenfeila(雨纷飞啦)回复于 2004-05-04 16:12:25 得分 0
能。CSDN文章区去看看吧Top
4 楼Ninputer(装配脑袋)回复于 2004-05-04 19:36:59 得分 0
不能,因为托管DLL的结构和普通DLL不同,所以不能输出函数。
用VB6做已经需要很高技巧了,用.NET从理论上不能实现系统HookTop
5 楼Vb_Net4Zeng(我嘛)回复于 2004-05-05 00:01:37 得分 0
Protected Overrides Sub WndProc(ByRef m As System.Windows.Forms.Message)
'代码
End Sub
可以?Top
6 楼koomis()回复于 2004-06-26 11:24:15 得分 0
在VB.NET中不能用HOOK?不懂不要乱说。我有使用HOOK测试的源代码。所谓跨平台就是骗骗猪头的,不想还真会有人相信,你见过.NET FRAME在其他平台上运行吗?
以下是代码,自己测测看吧:
Declare Function SetWindowsHookEx Lib "user32" Alias "SetWindowsHookExA" (ByVal idHook As HookType, ByVal lpfn As HOOKPROC, ByVal hmod As Integer, ByVal dwThreadId As Integer) As Integer
'函数说明:本函数是用于启动Hook设置。
'idHook是Hook的类型,即处理的消息类型。
'Lpfn是Hook子程(函数或过程)的地址指针。如果dwThreadId参数为0或是一个由别的进程创建的线程的标识,lpfn必须指向DLL中的Hook子程。除此以外,lpfn可以指向当前进程的一段Hook子程代码(我们利用的就是这个性质)。
'hMod是应用程序实例的句柄,标识包含lpfn所指的子程的DLL。如果dwThreadId 标识当前进程创建的一个线程,而且子程代码位于当前进程,hMod必须为NULL。
'dwThreadId是与安装Hook子程相关联的线程的标识符,如果为0,Hook子程与所有的线程关联。 返回值:函数成功则返回Hook子程的句柄,失败返回NULL。
Public Enum HookType
WH_KEYBOARD = 2
WH_CALLWNDPROC = 4
WH_CALLWNDPROCRET = 12
WH_CBT = 5
WH_DEBUG = 9
WH_FOREGROUNDIDLE = 11
WH_GETMESSAGE = 3
WH_HARDWARE = 8
WH_JOURNALPLAYBACK = 1
WH_JOURNALRECORD = 0
WH_MOUSE = 7
WH_MSGFILTER = (-1)
WH_SHELL = 10
WH_SYSMSGFILTER = 6
End Enum
Top




