想做一个程序的热键像QQ一样呼出的热键。C#有没有这个功能。谢谢各位大哥
解决方案 »
- 如何在menustrip和toolstrip之间插入分割线?
- 怎么使datagridview可见行填充整个datagridview
- 运行C#程序前 弹出一个DOS黑窗口是什么问题?
- 求这个函数的最优算法
- 谁有封装好的用C#写的数据访问类
- 急!急!!急!在调用web服务时,如果网络不通,调用程序类似死机如何处理?
- 請問EXCEL中的相關PROGRAMM信息在MSDN中那個地方查找
- 紧急求教!!!关于C# .net 3.5AD域登录,来有经验高手
- WinForm里如何总是选定DataGrid的某一行?(立即给分)
- Win7+VS2012编译的C#程序无法在Win8.1下运行???
- c# ArrayList怎么用?
- 还是关于c#调用delphi的dll的问题
b/s的就可能没有了.
不过看不太懂。我想知道。这个枚举是固定的还是自己定义的,如果是固定的那又是根据什么来设置的。因为如果我要改用其他的键可能就不知道是什么枚举了 None = 0,
Alt = 1,
Control = 2,
Shift = 4,
Windows = 8
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Runtime.InteropServices; // 需要加上这句话namespace HotKey
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
} [DllImport("user32")]
public static extern bool RegisterHotKey(IntPtr hWnd, int id, uint control, Keys vk);//注册热键
[DllImport("user32")]
public static extern bool UnregisterHotKey(IntPtr hWnd, int id);//解除热键 protected override void WndProc(ref Message m)
{
switch (m.Msg)
{
case 0x0312: //这个是window消息定义的 注册的热键消息
if (m.WParam.ToString().Equals("1")) //这是我们注册的那個热键1
{
MessageBox.Show("CTRL+ALT+T:QQ窗体弹出来了~");
}
if (m.WParam.ToString().Equals("2")) //这是我们注册的那個热键1
{
MessageBox.Show("ALT+T:QQ窗体弹出来了~");
}
break;
}
base.WndProc(ref m);
}
private void Form1_Load(object sender, EventArgs e)
{
// 第三个参数的试用方法:
// 4:shift
// 2:ctrl
// 1:alt
// so,ctrl+alt = 2+1 = 3 /*
* 第一个参数默认,第二个参数为标识符,第三个参数方法见上面的注释
*/
RegisterHotKey(Handle, 1, 3, Keys.T);//注册按键,CTRL+ALT+T RegisterHotKey(Handle, 2, 1, Keys.T);// ALT+T
}
}
}