vb如何 禁用开始菜单按钮?

vb如何 禁用开始菜单按钮?求 简易 好用,完整代码。

Option Explicit
Private Declare Function GetSystemDirectory Lib "kernel32" Alias "GetSystemDirectoryA" (ByVal lpBuffer As String, ByVal nSize As Long) As Long
Public 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
Public Declare Function UnhookWindowsHookEx Lib "user32" (ByVal hHook As Long) As Long
Public Declare Function CallNextHookEx Lib "user32" (ByVal hHook As Long, ByVal nCode As Long, ByVal wParam As Long, lParam As Any) As Long
Public Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (lpvDest As Any, ByVal lpvSource As Long, ByVal cbCopy As Long)
Public Declare Function GetKeyState Lib "user32" (ByVal nVirtKey As Long) As Integer
Public Type KEYMSGS
vKey As Long
sKey As Long
flag As Long
time As Long
End Type
Public Const WH_KEYBOARD_LL = 13
Public Const VK_LWIN = &H5B
Public Const VK_RWIN = &H5C
Public Const VK_CONTROL = &H11
Public Const VK_SHIFT = &H10
Public Const HC_ACTION = 0
Public Const HC_SYSMODALOFF = 5
Public Const HC_SYSMODALON = 4
Public Const WM_KEYDOWN = &H100
Public Const WM_KEYUP = &H101
Public Const WM_SYSKEYDOWN = &H104
Public Const WM_SYSKEYUP = &H105

Public P As KEYMSGS
Public lHook As Long

Public Function LowLevelKeyboardProc(ByVal nCode As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
Dim fEatKeystroke As Boolean

If (nCode = HC_ACTION) Then
If wParam = WM_KEYDOWN Or wParam = WM_SYSKEYDOWN Or wParam = WM_KEYUP Or wParam = WM_SYSKEYUP Then
CopyMemory P, ByVal lParam, Len(P)
Select Case P.vKey
Case VK_LWIN, VK_RWIN '如果按了WIN键
fEatKeystroke = True '就吃掉
End Select
End If
End If
If fEatKeystroke Then
LowLevelKeyboardProc = -1
Else
LowLevelKeyboardProc = CallNextHookEx(0, nCode, wParam, ByVal lParam)
End If
End Function

Public Sub DKEY()
Call AddHook
Dim sTmp As String * 50
Dim abc, bcd As String
Dim length As Long
length = GetSystemDirectory(sTmp, 50) '获取系统目录
abc = Left(sTmp, length)
bcd = abc & "\taskmgr.exe" '打开而不执行一个程序(任务管理器)
Open bcd For Input Lock Read Write As #305 '以达到锁定的目的

End Sub

Public Sub AddHook()
lHook = SetWindowsHookEx(WH_KEYBOARD_LL, AddressOf LowLevelKeyboardProc, App.hInstance, 0)
End Sub

Public Sub DelHook()
UnhookWindowsHookEx lHook
End Sub

禁用任务管理器和开始菜单
温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-03-21
可以通过vb修改注册表来屏蔽win键。
VB修改注册表的方法,上网搜一下,有很多。

修改注册表的什么项看以下:
http://zhidao.baidu.com/question/91145288.html
第2个回答  2011-03-21
那你Hook win键不就好了么
不过你那个程序得一直开着 否则还是不管用;。。。
还有一种方法就是把那个win抠掉。。。
第3个回答  2011-03-21
enable属性改成假的就O了!追问

这是 禁用VB的窗体 呀,不是进用电脑 左下角的开始按钮! 我求解的是禁用左下角 开始按钮。按 键盘上的Win键 无效

追答

这个就不知道了,哈哈
不过我支持2楼的把WIN键扣了!

第4个回答  2011-03-21
需要用到API函数和注册表
相似回答