VB程序 如何使特定几个按键无法使用

刚在VB吧发了个帖子VB设计一个程序,如何避免被强行关闭和最小化没有完整的回答我想了想如果写在form的KEYDOWN事件里IfKeyCode=17OrKeyCode=1... 刚在VB吧 发了个帖子 VB设计一个程序,如何避免被强行关闭和最小化
没有完整的回答
我想了想 如果写在form的KEYDOWN事件里
If KeyCode = 17 Or KeyCode = 18 Or KeyCode = 91 Or KeyCode = 92 Or KeyCode = 68 Or KeyCode = 46 Or KeyCode = 110 Or KeyCode = 27 Or KeyCode = 115 Or KeyCode = 87 Then
End If
把ALT CTRL DEL F4 TAB W D这几个能最小化或者关闭窗口的按键都写进去
THEN后边应该怎么写能使这几个按键无效呢 以前学过貌似 但是忘了 用的RETURN还是back什么关键字的
哪位高手能帮忙解答下 感谢!
分不多了 答好有20分追加
展开
 我来答
网海1书生
科技发烧友

2012-03-20 · 擅长软件设计、WEB应用开发、小程序
网海1书生
采纳数:12311 获赞数:26228

向TA提问 私信TA
展开全部
窗体的关闭和最小化属于系统级的操作,这些键是由windows系统控制的,VB本身是无法使这些键失效的。用API函数可以做到这点,但是用这种方式达到“避免被强行关闭和最小化”的目的是很傻的,而且除了按键,还有鼠标呢?为什么就不能换一种思路呢?其实用下面的简单代码就可达到你的要求:

Private Sub Form_Resize() '避免最小化
If Me.WindowState = 1 Then Me.WindowState = 0
End Sub

Private Sub Form_Unload(Cancel As Integer) '避免被关闭
Cancel = 1
End Sub
追问
我也没别的方法啊 你想想 一个计费系统的客户端 登录之前就能关闭了或者最小化了可怎么办
上边的代码我已经写了 但是只能避免ALT+F4关闭 ALT+TAB或者任务管理器依然不行
那么请问能不能在FORM1下禁用键盘 只能用鼠标呢?可以的话请简单帮我写一下代码 我就能设置一个屏幕键盘用鼠标输入帐号密码了 可以避免恶意关闭和最小化
追答
要禁用键盘只能用钩子(HOOK)了:
以下代码放到模块文件(.bas)中:

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
Declare Function UnhookWindowsHookEx Lib "user32" (ByVal hHook As Long) As Long

Public Const WH_KEYBOARD_LL = 13

Public hHook As Long

Public Function EnableKBDHook()
If hHook = 0 Then hHook = SetWindowsHookEx(WH_KEYBOARD_LL, AddressOf MyKBHFunc, App.hInstance, 0)
End Function

Public Sub UnHookKBD()
If hHook 0 Then UnhookWindowsHookEx hHook
hHook = 0
End Sub

Public Function MyKBHFunc(ByVal iCode As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
MyKBHFunc = -1
End Function

以下代码放到窗体文件中:

Private Sub Form_Load()
'窗体一运行即屏蔽键盘并且锁定任务管理器(间接使Ctrl+Alt+Del失效,这个键用钩子也不能屏蔽)
Open "C:\WINDOWS\system32\taskmgr.exe" For Random Lock Read As #9
EnableKBDHook
End Sub

Private Sub Form_Unload(Cancel As Integer)
'窗体退出时解锁任务管理器及键盘,否则的话即使程序退出键盘仍然失效
Close #9
UnHookKBD
End Sub
匿名用户
2012-03-20
展开全部
用钩子
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
zx001z7d53
2012-03-20 · TA获得超过2万个赞
知道大有可为答主
回答量:2.4万
采纳率:52%
帮助的人:5643万
展开全部
exit sub
更多追问追答
追问
这个不行的 只是退出SUB了 按键依然有效
追答
Private Sub Form_KeyPress(KeyAscii As Integer)
If KeyAscii = 13 Then
KeyAscii = 0
Exit Sub
End If
End Sub
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
林19911109
2012-03-20
知道答主
回答量:30
采纳率:0%
帮助的人:32.6万
展开全部
设置ENable
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 2条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式