求助:AutoExec宏无法禁用CTRL+Break、F11等特殊按键
解决Access禁用CTRL+Break、F11等特殊按键的问题
兄弟,你这代码为啥不起作用?核心问题是赋值搞反了!你把所有属性都设成了1(也就是逻辑True),这其实是在允许这些功能,而不是禁用啊!要达到禁用特殊按键的目的,得把对应属性的值改成0(逻辑False)才行。
另外还有个小坑:如果这些数据库属性已经存在,直接用Append方法会触发错误,所以得先检查属性是否存在,存在就直接修改值,不存在再创建并追加。
给你修正后的代码,直接替换AutoExec宏里的内容就行:
Dim prp As DAO.Property Dim db As DAO.Database Set db = CurrentDb() ' 禁用CTRL+Break中断代码 On Error Resume Next Set prp = db.Properties("AllowBreakIntoCode") If Err.Number <> 0 Then Set prp = db.CreateProperty("AllowBreakIntoCode", 1, 0) db.Properties.Append prp Else prp.Value = 0 End If On Error GoTo 0 ' 禁用F11等特殊按键 On Error Resume Next Set prp = db.Properties("AllowSpecialKeys") If Err.Number <> 0 Then Set prp = db.CreateProperty("AllowSpecialKeys", 1, 0) db.Properties.Append prp Else prp.Value = 0 End If On Error GoTo 0 ' 可选:禁用Shift键跳过启动项(注意:设为0后自己别被锁外面,先备份数据库!) ' On Error Resume Next ' Set prp = db.Properties("AllowByPassKey") ' If Err.Number <> 0 Then ' Set prp = db.CreateProperty("AllowByPassKey", 1, 0) ' db.Properties.Append prp ' Else ' prp.Value = 0 ' End If ' On Error GoTo 0 ' 如果你还需要禁用其他相关功能(比如工具栏修改、完整菜单),可以参照上面的逻辑设置对应属性为0 ' 比如AllowToolbarChanges、AllowFullMenus等,按需开启
操作步骤提醒:
- 先按住Shift键打开数据库,跳过AutoExec宏的执行,这样才能顺利修改代码;
- 替换完代码后保存数据库,然后正常重启数据库测试效果;
- 如果要启用
AllowByPassKey=0,一定要先备份数据库,不然以后想跳过启动项就麻烦了!
内容的提问来源于stack exchange,提问作者dmorgan20
相关产品推荐
相关产品推荐

