天下真的没人会吗? 再问VB 里如何屏蔽flash控件右键

来源:百度知道 编辑:UC知道 时间:2024/05/25 12:21:35
这是个非常老的话题了

请问高手们,VB里,如何用API截取flash的句柄,并彻底屏蔽了他的右键菜单?

我在Baidu搜索了好几个晚上,目前仅仅找到两个不成功的答案:

1.是把flash放在一个frame里,然后设置frame的Enabled为false
这样做确实可以屏蔽了flash右键,但是把flash内正常的交互效果全屏蔽了,所以不可取.

2.是有高手写了段代码,可以把整个工程的右键都屏蔽了,如果效果不错,倒也罢了,可惜我简单的测试了下就出现BUG,屏蔽后去右键窗口的标题栏,就导致死机,必须强行终止程序....
代码如下:
Sub EnableHook()
If hHook = 0 Then
hHook = SetWindowsHookEx(WH_MOUSE, AddressOf MouseHookProc, App.hInstance, 0)
End If
End Sub
Sub FreeHook()
Dim ret As Long
If hHook <> 0 Then
ret = UnhookWindowsHookEx(hHook)
hHook = 0
End If
End Sub
Function MouseHookProc(ByVal code As Long, ByVal wParam As Long, _
ByVal lParam As Long) As Long
If code < 0 Then
MouseHookProc = CallNextHookEx(hHook, code, wParam, lParam)
Exit Function
End If
If wParam = WM_RBUTTONDOWN Or wParam = WM_RBUTTONUP Then

就是不能上传代码
我有一个完美的解决方案
就是屏蔽所有的右键
但是不会出现键窗口的标题栏任务拦死的现象
我发了
form1 的代码
........................................
Option Explicit
Private Sub Command1_Click()'开始屏蔽
EnableKBDHook
End Sub

Private Sub Command2_Click()' 解除屏蔽
UnHookKBD
End Sub
............................................
Module1.bas 的代码
Option Explicit
Public Const WH_CALLWNDPROC = 4
Public Declare Sub mouse_event Lib "user32" (ByVal dwFlags As Long, ByVal dx As Long, ByVal dy As Long, ByVal cButtons As Long, ByVal dwExtraInfo As Long)
Public Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (lpvDest As Any, ByVal lpvSource As Long, ByVal cbCopy As Long)
Public Const WH_MOUSE = 7
'鼠标消息
Public Const WM_MOUSEMOVE = &H200
Public Const WM_LBUTTONDOWN = &H201
Public Const WM_LBUTTONUP = &H202
Public Const WM_LBUTTONDBLCLK = &H203
Public Cons