registerhotkey

时间:2024-07-08 13:23:47编辑:奇闻君

vb全局热键

我用F10键做例子啦。。具体自己做


'模块中
Option Explicit

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
Declare Function CallNextHookEx Lib "user32" (ByVal hHook As Long, ByVal ncode As Long, ByVal wParam As Long, lParam As Any) As Long

Public hnexthookproc As Long
Public Const HC_ACTION = 0
Public Const WH_KEYBOARD = 2

Public Sub UnHookKBD()
If hnexthookproc 0 Then
UnhookWindowsHookEx hnexthookproc
hnexthookproc = 0
End If
End Sub
Public Function EnableKBDHook()
If hnexthookproc 0 Then
Exit Function
End If
hnexthookproc = SetWindowsHookEx(WH_KEYBOARD, AddressOf MyKBHFunc, App.hInstance, 0)
If hnexthookproc 0 Then
EnableKBDHook = hnexthookproc
End If
End Function
Public Function MyKBHFunc(ByVal iCode As Long, ByVal wParam As Long, ByVal lParam As Long) As Long

MyKBHFunc = 0 '讯息要处理
If iCode < 0 Then
MyKBHFunc = CallNextHookEx(hnexthookproc, iCode, wParam, lParam)
Exit Function
End If
If wParam = 121 Then '侦测 有没有按到F10键
Form1.Check1.Value = 1 'Check选中
Call CallNextHookEx(hnexthookproc, iCode, wParam, lParam)

Else
Call CallNextHookEx(hnexthookproc, iCode, wParam, lParam)
End If
End Function

'以下在Form
Private Sub Form_Load()
Call EnableKBDHook
End Sub

Private Sub Form_Unload(Cancel As Integer)
Call UnHookKBD
End Sub


VB设置多个全局热键,帮忙修改

'主窗体代码如下:Option Explicit'程序启动时注册功能热键F12Private Sub Form_Load() preWinProc = GetWindowLong(Me.hWnd, GWL_WNDPROC) SetWindowLong Me.hWnd, GWL_WNDPROC, AddressOf WndProc RegisterHotKey Me.hWnd, 1, MOD_ALT, vbKeyF12 '按下ATL+F12 RegisterHotKey Me.hWnd, 2, MOD_CONTROL, vbKeyF12 '按下CTRL+F12 RegisterHotKey Me.hWnd, 3, MOD_SHIFT, vbKeyF12 '按下SHIFT+F12 RegisterHotKey Me.hWnd, 4, MOD_WIN, vbKeyF12 '按下WINDOWS键+F12 RegisterHotKey Me.hWnd, 5, 0, vbKeyF12 ’直接按F12 RegisterHotKey Me.hWnd, 6, MOD_ALT OR MOD_CONTROL, vbKeyF12 '按下ALT+CTRL+F12键End Sub'当程序被关闭时,取消已经注册的热键Private Sub Form_Unload(Cancel As Integer) SetWindowLong Me.hWnd, GWL_WNDPROC, preWinProc UnregisterHotKey Me.hWnd, 1 '取消系统级热键,释放资源 UnregisterHotKey Me.hWnd, 2 '取消系统级热键,释放资源 UnregisterHotKey Me.hWnd, 3 '取消系统级热键,释放资源 UnregisterHotKey Me.hWnd, 4 '取消系统级热键,释放资源 UnregisterHotKey Me.hWnd, 5 '取消系统级热键,释放资源 UnregisterHotKey Me.hWnd, 6 '取消系统级热键,释放资源End Sub'添加一个标准模块,代码如下Option Explicit'在窗口结构中为指定的窗口设置信息Public Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long'从指定窗口的结构中取得信息Public Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long) As Long'运行指定的进程Public Declare Function CallWindowProc Lib "user32" Alias "CallWindowProcA" (ByVal lpPrevWndFunc As Long, ByVal hWnd As Long, ByVal Msg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long'向系统注册一个指定的热键Public Declare Function RegisterHotKey Lib "user32" (ByVal hWnd As Long, ByVal ID As Long, ByVal fsModifiers As Long, ByVal vk As Long) As Long'取消热键并释放占用的资源Public Declare Function UnregisterHotKey Lib "user32" (ByVal hWnd As Long, ByVal ID As Long) As Long'上述五个API函数是注册系统级热键所必需的,具体实现过程如后文所示 '常数Public Const MOD_ALT = &H1Public Const MOD_CONTROL = &H2Public Const MOD_SHIFT = &H4Public Const MOD_WIN = &H8Public Const WM_HOTKEY = &H312Public Const GWL_WNDPROC = (-4)'定义系统的热键,原中断标示,被隐藏的项目句柄Public preWinProc As Long, MyhWnd As Long, uVirtKey As Long'热键拦截过程Public Function WndProc(ByVal hWnd As Long, ByVal Msg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long If Msg = WM_HOTKEY Then '如果拦截到热键标志常数 HotkeyPressed wParam '执行隐藏鼠标所指项目 End If '如果不是热键,或者不是我们设置的热键,交还控制权给系统,继续监测热键 WndProc = CallWindowProc(preWinProc, hWnd, Msg, wParam, lParam)End Function'最关键的项目隐藏过程Public Sub HotkeyPressed(ByVal id As Long) MsgBox "按下了第" & id & "个热键"End Sub


如何设置qt creator的快捷键

1. 在桌面上单击右键,在弹出的菜单中选择“新建”*“快捷方式”,并在向导的指引下建立一个指向该应用程序的快捷方式
2. 在新建的快捷方式上单击右键,选择“属性”,在“快捷方式”选项卡下单击“快捷键”文本框,接着在按下键盘功能键(如Alt、Ctrl、Shift及其组合键)的同时输入准备设置的热键(可以是任意的字母和数字的组合,但注意不能和Windows自身的快捷键重复)
3. 单击“确定”退出。 以后,用户只要按下设置好的快捷键,系统即可加载对应的应用程序。如果此时该应用程序已经启动,在按下快捷键之后,可直接切换到该应用程序的工作窗口。


delphi 快捷键的使用

CTRL+SPACE 代码补全,很好用的(先改了输入法热键)
CTRL+SHIFT+C 编写申明或者补上函数
CTRL+SHIFT+↑(↓) 在过程、函数、事件内部, 可跳跃到相应的过程、函数、事件的定义(在INTERFACE和IMPLEMENTATION之间来回切换)
CTRL+SHIFT+G 插入GUID
CTRL+J (弹出DELPHI语句提示窗口,选择所需语句将自动完成一条语句)代码模板

CTRL+K+E(F) 标识符变小(大)写
CTRL+K+O(N) 选中的变小(大)写
CTRL+O+U 切换选择块的大小写
SHIFT+鼠标左键 先选中任一控件,按键后可选中窗体
CTRL+SHIFT+I(U) 代码整块移动右移(左移)2个空格
ALT+鼠标左键 可以块选代码,用来删除对齐的重复代码非常有用
CTRL+E 快速选择(呵呵,试试吧,很好玩的)

在属性窗口按TAB键将光标移动到属性名区,键入属性名的开头字母可快速定位到该属性

F4 运行到光标处
F5 设置断点
F7 步进式调试同时追踪进入子过程
F8 步进式调试不进入子过程
F9 运行
CTRL+F9 编译
CTRL+B BUFFER LIST窗口
CTRL+F2 停止正在调试的程序
CTRL+F3 弹出CALL STACK窗口
CTRL+F5 添加览视变量
CTRL+F7 计算窗口
SHIFT+F8 调试时弹出CPU窗口

CTRL+BACKSPACE 后退删除一个词,直到遇到一个分割符
CTRL+T 删除光标右边的一个单词
CTRL+Y 删除光标所在行
CTRL+SHIFT+Y 删除光标之后至本行末尾之间的文本

ALT+[(]) 查找上(下)一个对应的标识符
CTRL+ENTER 定位到单元文件
CTRL+HOME 将光标移至文件头
CTRL+END 将光标移至文件尾
CTRL+PAGEDOWN 将光标移至本屏的最后一行,屏幕不滚动
CTRL+PAGEUP 将光标移至本屏的第一行,屏幕不滚动
CTRL+↑(↓) 向上(下)滚动屏幕,光标跟随滚动不出本屏
ALT+G 跳到某行
CTRL+鼠标转轮 加速滚屏

CTRL+S 保存
SHIFT+CTRL+S 保存所有

CTRL+F4 等于FILE菜单中的CLOSE项
CTRL+I 插入TAB
CTRL+L 继续查找
CTRL+N 同ENTER键,但光标位置保持不变
CTRL+SHIFT+E 显示EXPLORER
CTRL+SHIFT+F11 打开工程设置窗口
F11 显示属性窗口
SHIFT+ALT+F11 显示对象列表窗口
F12 切换EDITOR/FORM
CTRL+F12 打开某个单元文件
SHIFT+F12 打开某个窗体
CTRL+TAB 在INSPECTOR中切换PROPERTIES页和EVENTS页
CTRL+SHIFT+N 定义(取消)书签N
CTRL+N 跳到书签N
CTRL+SHIFT+T 在光标行加入TO-DO注释
CTRL+箭头 以1像素单位更改所选控件位置
SHIFT+箭头 以1像素单位更改所选控件大小
ALT+F11 Use某个单元
SHIFT+F10 等于鼠标右键(WINDOWS快捷键)。
SHITF+箭头 选择文本


易语言怎么注册热键!不懂代码的意思!

窗口句柄就是一个类似于身份证的存在。你需要让程序知道你想操作的是哪一个窗口,所以要先取窗口句柄。但是窗口每次打开后句柄是不同的。
标签句柄其实就是子窗口句柄。所谓子窗口,比如你写一个程序,程序窗口就是主窗口,那个程序里面假设有编辑框,按钮,那么这些东西就是子窗口。
为什么一定要用标签...好吧,这个我不知道。我也没有注册热键的源代码。只能告诉你,注册热键后按下你所注册的按键,需要一个子程序来告诉你按下了什么键,所以要标签句柄,然后利用标签反馈事件的子程序来告诉你到底按下了什么键
标签_反馈事件是什么我也不太清楚,但是只有标签有反馈事件 这个事件,所以注册热键只能用标签句柄


上一篇:大黄素

下一篇:sm绳