使用WinAPI全局热键注册和全局模拟按键
来源:互联网 发布:淘宝店招收藏店铺代码 编辑:程序博客网 时间:2024/05/16 15:29
一、全局热键注册
1、先引用DLL
[System.Runtime.InteropServices.DllImport("user32.dll")] //导入WinAPI
public static extern bool RegisterHotKey( //设置热键
IntPtr hWnd, // 窗口句柄,一般使用Handle属性
int id, // 区别热键的ID号,这个可以随便写,只是用来区分不同热键
uint fsModifiers, // 修正键用户接下哪些键是发生 可能为contol=2, alt=1, shift=4, windows=8或这些键的组合,如果没有的话直接用0
Keys vk // 键
);
[System.Runtime.InteropServices.DllImport("user32.dll")] //导入WinAPI
public static extern bool UnregisterHotKey( //注销热键
IntPtr hWnd, // 窗口句柄
int id // 键标识
);
2、调用函数
RegisterHotKey(Handle, 200, 0, Keys.F1); // 注册热键F1
3、此事件用来响应热键
protected override void WndProc(ref Message m)//监视Windows消息
{
const int WM_HOTKEY = 0x0312; //如果m.Msg的值为0x0312那么表示用户按下了热键
switch (m.Msg)
{
case WM_HOTKEY: ProcessHotkey(m); //按下热键时调用ProcessHotkey()函数
break;
}
base.WndProc(ref m); //将系统消息传递自父类的WndProc
}
4、判断是按了哪个热键,然后执行方法
private void ProcessHotkey(Message m) //用于控制运行窗体是否开启
{
IntPtr id = m.WParam; //IntPtr用于表示指针或句柄的平台特定类型
string sid = id.ToString(); //根据注册热键时传递的ID区分按得是哪个热键
switch (sid)
{
case "200": //code。。触发之后执行的代码
break;
}
}
二、模拟按键(全局)
1、引用API
[DllImport("user32.dll", EntryPoint = "keybd_event")]
public static extern void keybd_event(byte bVk, byte bScan, int dwFlags, UIntPtr dwExtraInfo);
参数1:键盘码,具体请到百度搜索键盘码
参数2:键盘扫描码,可以使用0
参数3:表示触发的键盘事件类型,比如key_up,key_down等,默认直接用0
参数4:没多大用,直接用UIntPtr.Zero就行
2、调用
byte VK_F11 = 122; //模拟按下F11键
keybd_event(VK_F11, 0, 0, UIntPtr.Zero);
- 使用WinAPI全局热键注册和全局模拟按键
- C#注册全局热键
- [测试]注册全局热键
- C#注册全局热键
- c#注册全局热键
- C#注册全局热键
- Delphi全局热键注册
- Qt5注册全局热键
- Qt注册全局热键
- 注册全局热键应用例子
- MFC中注册全局热键
- 第九节 组合热键与注册全局热键
- 全局热键
- 全局热键
- 全局热键
- 如何注册全局热键(c++builder)
- VC如何注册、屏蔽全局键盘热键
- C#注册全局热键的方法
- PHP的SOAP工具包--nusoap
- 文本编辑和fckeditor切换使用时注意的问题
- 在mysql里存储汉字如较长的文章
- 面向对象设计模式与原则 .
- linux看门狗程序
- 使用WinAPI全局热键注册和全局模拟按键
- mysql存储过程详解
- MSN Messenger协议
- Good Article Good sentence HDOJ4416 (SAM解法)
- 检查域名是否可用
- 偶遇ORA-07445 [kslgetl()+120] [SIGSEGV] [Address not mapped to object] [0x000000208] [] [] 和ORA-00108
- Pro Android学习笔记(三):了解Android资源(上)
- PHPCMS二级栏目
- 采用数据模型和数据库同步技术 -- TraceListener类