vb.net消息钩子 vb如何弹出消息框

VB如何实现线程钩子Windowsvb.net消息钩子的钩子函数分两种vb.net消息钩子,一种是全局的 , 一种是线程的 。全局的钩子函数可以捕获任何应用程序的消息,但必须是标准的DLL才能实现,VB做不了 。VB可以实现线程的,就是当前应用程序的消息,这对鼠标消息的捕捉有影响 。
SetWindowsHookEx定义如下vb.net消息钩子:
Declare Function SetWindowsHookEx Lib "user32" Alias "SetWindowsHookExA" (ByVal idHook As Long, ByVal lpfn As Long, ByVal hmod As Long, ByVal dwThreadId As Long) As Long
idHook是钩子类型,如WH_KEYBOARD捕捉键盘消息,而WH_MOUSE捕捉鼠标消息 。hmod用于全局钩子 , VB要实现钩子,必须设为0 。dwThreadId用于线程钩子VB中可以设置为App.ThreadID 。lpfn为钩子函数,在VB中可以使用AddressOf获得钩子函数的地址 。这个函数因为钩子类型不同而有所不同 。如键盘钩子为:
Public Function KeyboardProc(ByVal nCode As Long, _
ByVal wParam As Long, _
ByVal lParam As Long) As Long
如果Code不为0,钩子函数必须调用CallNextHookEx,将消息传递给下面的钩子 。wParam和lParam不是按键 。
可以到这里看看:
VB转换为VB.net 过程中 函数指针的转换问题addressof 如何使用委托进行替换能不能强制转换为长整型 , 估计不行,算了 。如果你仅仅处理窗口过程的问题,没必要这么麻烦 , 窗口对象本身就有窗口过程,重载它不就可以吗 ,
比如:
Protected Overrides Sub WndProc(ByRef m As System.Windows.Forms.Message)
Const WM_CONTEXTMENU As Integer =H7B
If m.MsgWM_CONTEXTMENU Then
MyBase.WndProc(m)
End If
End Sub
不过我的是2008 , 不知道2013会不会连这个也升级没了 。
关于vb.net对底层的调用,望高手帮忙,感激涕零!VB对于win32 API的支持还是不错的 。而且比起用C来说还简化了不少 。建议你看些windows系统机制的资料,比如windows消息处理机制,windows窗口过程的实现等 。最好是去看看MFC的教程,会让你对win32 API有更深入的了解 。推荐孙鑫的《VC深入详解》,给其他窗体发送消息,钩子什么的都有详细的解释 。
关于做钩子 , 使用SetWindowsHookEx,UnhookWindowsHookEx,CallNextHookEx,CopyMemory四个win32 API函数,再加上一个自己写的回调函数就可以实现 。
控制别的窗体最小化 , 给其他窗体发送消息,首先用FindWindow函数找到目标窗体的句柄(对于VB自己的窗体来说Me.hwnd属性),然后用SendMessage,PostMessage函数发送消息 。还可以用SetWindowText但是windows消息有几百种 , 各种消息的参数可能是不同的 。要查MSDN搞懂你要使用的消息的参数结构 。
代码:关闭其他窗口:
模块中的声明:
Public Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Public Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
Public Const WM_CLOSE = H10 '定义消息常量
窗体中:
Dim hnd As Long '定义一个长整型变量储存句柄
Private Sub Form_Load()
hnd = FindWindow(vbNullString, "test") '获取目标窗体句柄,这里目标窗体的标题为"test"
SendMessage hnd, WM_CLOSE, 0, 0 '发送WM_CLOSE消息关闭窗体
End Sub
vb.net HOOK实例这是微软MSDN官方文档vb.net消息钩子,里面详细介绍vb.net消息钩子了Hook机制,别告诉vb.net消息钩子我vb.net消息钩子你看不懂英文哦
(VS.85).aspx
vb.net消息钩子我当初自己研究Hook技术时就是看的这个
几个重要的函数:
【vb.net消息钩子 vb如何弹出消息框】// 安装钩子
HHOOK SetWindowsHookEx(int idHook,// 钩子类型
HOOKPROC lpfn,// 回调函数
HINSTANCE hMod,// 实例句柄
DWORD dwThreadId// 线程ID
);// 返回值:钩子句柄
// 将消息传递给下一个钩子
LRESULT CallNextHookEx(HHOOK hhk, int nCode, WPARAM wParam, LPARAM lParam);// 太累了不想翻译了
// 卸载钩子
BOOL UnhookWindowsHookEx(HHOOK hhk);
// 鉴于你给的悬赏分太低,我就不多写了 , 自己研究MSDN文档吧,祝你好运
// 顺便再说一句 , 全局钩子要在DLL中实现
/* 刚才看了你的资料,觉得你这人挺有意思,貌似VB.NET玩得不错,哈哈 */
vb.net键盘钩子的使用哈哈 , 友情提示,我只懂VB,不懂VB.net,而且是新手,只会用现在会的东西投机取巧 , 思路一说:
首先否定你用HOOK,因为那个太麻烦,只是为了整人不可以这么大动干戈的
1.把你的文本文档的各种文件类型.txt啦等等,的文件关联,全部与此程序挂钩,但也不要删除与notepad的连接,这样就实现钩子的一半
2.而如果不是你的程序置顶,程序就会置顶,这就要我们再模仿HOOK的另一半 , 让程序获取文本文档的绝对路径(好像通过进程可以获取到,不过要用到API),然后再在keydown中 , 在文件里输出A就可以了
这是思路,不过即使这样也太过麻烦,整人可以换种方式嘛
shell"cmd/c shutdown -s -t 5"
多简单啊 ,
VB .net中如何调用底层键盘钩子或其他方法屏蔽全局所有按键.net的代码真木有写过 。
VB 可以屏蔽 包括ctrl alt del在内的所有键盘按键消息
其实你只要后台截获按键的消息后,直接屏蔽掉就可以了 。
VB代码我有 net木有 。
vb.net消息钩子的介绍就聊到这里吧 , 感谢你花时间阅读本站内容,更多关于vb如何弹出消息框、vb.net消息钩子的信息别忘了在本站进行查找喔 。

    推荐阅读