您的位置:首页 > 编程语言 > C#

C#全局钩子:打造自己的组合快捷键

2012-08-24 09:15 357 查看
首先关于钩子,相比大家都明白,在程序监听事件时只能监听本程序所引发的事件,而不能监听全局事件,而window提供钩子则为我们提供这解决方案

当初想做这个最初是由于QQ截图(腾讯为数不多良心产品)没有像QQ自带那种ctrl+alt+A能调用出来

就想自己写程序做一个出来,然后,就有了这个东东

此程序通过封装一个类库(调用win32钩子hook函数)来给应用程序使用,此dll结构如下



其中实现了鼠标Hook与键盘Hook,都继承于这个抽象类GlobalHook

另外这个dll是某位大神写的,并不是我写的,只是本人拿来在用而已。


调用代码:




View
Code



using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using MouseKeyboardLibrary;
using System.Runtime.InteropServices;
using System.Diagnostics;

namespace key
{
public partial class K : Form
{
public K()
{
InitializeComponent();
}

MouseHook mouseHook = new MouseHook();
KeyboardHook keyboardHook = new KeyboardHook();

private void 完美N_Load(object sender, EventArgs e)
{
keyboardHook.KeyDown += new KeyEventHandler(keyboardHook_KeyDown);
//mouseHook.MouseDown += new MouseEventHandler(mouseHook_MouseDown);
//mouseHook.Start();
keyboardHook.Start();
this.Hide();//隐藏窗体
this.ShowInTaskbar = false;
}

void keyboardHook_KeyDown(object sender, KeyEventArgs e)
{
if (e.Control && e.KeyCode == Keys.A && e.Alt)
{
Process.Start(@"D:\JERRY\截图2012.exe");
}
else if (e.Alt)
{
if (e.KeyCode == Keys.Q)
{
ProcessStartInfo psi = new ProcessStartInfo("mstsc");
Process.Start(psi);
}
if (e.KeyCode == Keys.Z)
Process.Start(@"\\tstdev06");
if (e.KeyCode == Keys.A)
Process.Start(@"D:\HKGTFS01");
if (e.KeyCode == Keys.E)
Process.Start(@"C:\Program Files\Google\Chrome\Application\chrome.exe");
}
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: