显示附加信息 >>>
如何禁用ctrl+c?如何定义一个我自己的快捷键?
作者:cg1 摘自:access911.net 编辑:cg1 更新日期:2002-11-25 浏览人次:
http://access911.net/?kbid;77FAB41E
问题:
方法一:
那么问题2:如何定义一个我自己的快捷键? 如何解决哪? 对了,既然可以通过定义空的参数来使某个快捷键失效,当然可以通过定义有效的参数来完成特定的程序拉,这不就成了自定义快捷键了吗?
示例下载:http://access911.net/down/eg/sendkeys.rar (15KB)
注意:在 ACCESS 2003 版本以前,“ALT+某个键”的组合键是无法定义的,因此用 AutoKeys 无法禁用或者设定含有alt键的全局组合键,目前还未找到有效的方法可以代替。 在 ACCESS 2007 中虽然已经定义了 % 字符用来实现 ALT 组合键,但是类似 ALT+F1 之类的定义(%{F1})仍旧被视为语法错误,无法实现。 有人还问ACCESS2007下为什么宏操作里面没有 SendKeys 操作。在宏设计视图下:菜单 -> 设计 -> 显示所有操作 即可。
参考::
在“数据库”窗口中,单击“对象”下的“宏” 。 单击“新建”。 单击工具栏上的“宏名” 。 在“宏名”列中键入要为一个操作或一组操作指派的键或组合键。 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 为名称保存宏组。 在保存宏组后,每次打开数据库时,新的键分配就会生效。
方法二:
《如何为你的应用程序设置热键?》 启动工程后,在你的工程中添加一个标准模块,然后将下面的代码粘贴到模块的声明段中。
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
在窗体的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