方法一:
写一个名为 AutoKeys 的宏 1、首先要创建一个名为AutoKeys 的宏。 2、在“宏名”列中利用想使之无效的键的SendKeys 代码指定一个宏名。 3、增加SendKeys操作并使“键击”参数保持为空。 以后打开数据库时,自动执行AutoKeys 宏,只要数据库保持打开,AutoKeys宏将始终有效。 举例来说: 使 F1 键无效,在“宏名”列中输入{F1},在“操作”列中选择 SendKeys ,并使 SendKeys 操作的“键击”参数为空即可。 使 Ctrl + F6 无效,方法相同,在“宏名”列中 输入^{F6}在“操作”列中选择 SendKeys ,并使 SendKeys 操作的“键击”参数为空即可。
那么问题2:如何定义一个我自己的快捷键? 如何解决哪? 对了,既然可以通过定义空的参数来使某个快捷键失效,当然可以通过定义有效的参数来完成特定的程序拉,这不就成了自定义快捷键了吗?
参考::
以下为 MS 帮助
| 将操作或操作集指派给某个键 | | 可以创建一个 AutoKeys 宏组,将一个操作或一组操作指派给某个特定的键或组合键。这样,当按下指定的键或组合键时,Microsoft Access 就会执行相应的操作。如果指派给某个操作的组合键已经由 Access 使用(例如,Ctrl+C 是“复制”的组合键),则新指派给该组合键的操作将取代 Access 的键分配。 | | | 在“数据库”窗口中,单击“对象”下的“宏” 。 | | 单击“新建”。 | | 单击工具栏上的“宏名” 。 | | 在“宏名”列中键入要为一个操作或一组操作指派的键或组合键。 | | AutoKeys 组合键的语法 | | | 下表显示可以用来在 AutoKeys 宏组中指派键的组合键。这些组合键是用于 Microsoft Visual Basic 中的 SendKeys 语句的语法的子集。 | | | SendKeys 语法 键组合 | | ^A 或 ^4 Ctrl+A 或 Ctrl+4 | | {F1} F1 | | ^{F1} Ctrl+F1 | | +{F1} Shift+F1 | | {INSERT} Ins | | ^{INSERT} Ctrl+Ins | | +{INSERT} Shift+Ins | | {DELETE} 或 {DEL} Del | | ^{DELETE} 或 ^{DEL} Ctrl+Del | | +{DELETE} 或 +{DEL} Shift+Del |
添加需要键或组合键执行的单个操作或一组操作。例如,添加一个 RunMacro 操作,使得在按下 Ctrl+P 时执行 Print Current Record 宏。
重复第 4 步和第 5 步以进行其他键的指派。 以 AutoKeys 为名称保存宏组。 在保存宏组后,每次打开数据库时,新的键分配就会生效。
方法二:
下面提供一个用api定义热键的方法,稍一修改让执行的代码为空,就可以达到使某个快捷键失效的目的:
《如何为你的应用程序设置热键?》 启动工程后,在你的工程中添加一个标准模块,然后将下面的代码粘贴到模块的声明段中。
| Option Explicit | | | Declare Function SendMessage Lib "user32" _ | | Alias "SendMessageA" (ByVal hwnd As Long, _ | | ByVal wMsg As Long, ByVal wParam As Long, _ | | lParam As Long) As Long | | | Declare Function DefWindowProc Lib "user32" _ | | Alias "DefWindowProcA" (ByVal hwnd As Long, _ | | ByVal wMsg As Long, ByVal wParam As Long, _ | | ByVal lParam As Long) As Long | | | Public Const WM_SETHOTKEY = &H32 | | Public Const WM_SHOWWINDOW = &H18 | | Public Const HK_SHIFTA = &H141 'Shift + A | | Public Const HK_SHIFTB = &H142 'Shift * B | | Public Const HK_CONTROLA = &H241 'Control + A | | Public Const HK_ALTZ = &H45A | |
请注意组合键的值必须以低/高位字节的格式进行声明。也就是说是一个十六进制的数字。后两位是低端字节,如41=a;前两位是高端字节,如01=1=shift。
在窗体的Load事件中加入下面的代码:
| Private Sub Form_Load() | | | | Dim erg As Long | | Me.WindowState = vbMinimized | | '让windows知道你想要的热键。 | | erg = SendMessage(Me.hwnd, WM_SETHOTKEY,HK_ALTZ, 0) | | '检查函数是否执行成功 | | If erg <> 1 Then | | MsgBox "You need another hotkey", vbOKOnly,"Error" | | End If | | '告诉windows热键按下后做什么--显示窗口 | | erg = DefWindowProc(Me.hwnd, WM_SHOWWINDOW,0, 0) | | | End Sub | |
按F5运行程序后,再按下ALT+Z就会看到结果了。 网址: http://www.accessoft.com/Article_Show.asp?ArticleID=507
|