高分求解.关于一个激活指定窗体的事件.

daizhao 2006-09-25 09:06:51
我想实现一个激活指定窗体的事件,运行一段时间后会出现SEHException异常,不知道是哪里出的问题,请达人们指教,感激不尽!
,代码如下:
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
Declare Function UnhookWindowsHookEx Lib "user32" (ByVal hHook As Integer) As Integer
Declare Function CallNextHookEx Lib "user32" (ByVal hHook As Integer, ByVal ncode As Integer, ByVal wParam As Integer, ByVal lParam As Integer) As Integer
Public Delegate Function HOOKPROC(ByVal nCode As Integer, ByVal wParam As Integer, ByVal lParam As Integer) As Integer
Declare Function GetCurrentThreadId Lib "kernel32" Alias "GetCurrentThreadId" () As Integer
Public hnextHookproc As Integer
Public Const HCBT_ACTIVATE = 5
Public Const HSHELL_WINDOWACTIVATED = 4

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
SetHook()
End Sub

Public Function SetHook() '设置Hook

If hnextHookproc <> 0 Then
Exit Function
End If

hnextHookproc = SetWindowsHookEx(HookType.WH_SHELL, AddressOf MyKeyboardProc, 0, GetCurrentThreadId())

End Function

Public Sub UnHook() '解Hook
If hnextHookproc <> 0 Then
UnhookWindowsHookEx(hnextHookproc)
hnextHookproc = 0
End If
End Sub

Public Function MyKeyboardProc(ByVal nCode As Integer, ByVal wParam As Integer, ByVal lParam As Integer) As Integer
Dim i As Integer

MyKeyboardProc = 0

If nCode < 0 Then
MyKeyboardProc = CallNextHookEx(hnextHookproc, nCode, wParam, lParam)
Exit Function
End If

If nCode = HSHELL_WINDOWACTIVATED Then
'此处添加我想要的处理
End If
End Function

Private Sub Form1_Closing(ByVal sender As Object, ByVal e As System.ComponentModel.CancelEventArgs) Handles MyBase.Closing
Call UnHook()
End Sub
...全文
205 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
GHOSTSEA 2006-10-23
  • 打赏
  • 举报
回复
学习中~~~~~~~关注
daizhao 2006-09-26
  • 打赏
  • 举报
回复
还没有人能解答吗?顶一下
kbxj406 2006-09-25
  • 打赏
  • 举报
回复
Mark

VB看的晕头转向
jiewenzhai 2006-09-25
  • 打赏
  • 举报
回复
帮你顶一下
Dennis_maomao 2006-09-25
  • 打赏
  • 举报
回复
是强制 激活吧? 参数写null 就可以了
Santos 2006-09-25
  • 打赏
  • 举报
回复
没看出来,帮你顶一下

17,740

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 .NET Framework
社区管理员
  • .NET Framework社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧