基本信息
源码名称:C# 定时自动按键 示例代码
源码大小:1.83KB
文件格式:.cs
开发语言:C#
更新时间:2016-01-28
   友情提示:(无需注册或充值,赞助后即可获取资源下载链接)

     嘿,亲!知识可是无价之宝呢,但咱这精心整理的资料也耗费了不少心血呀。小小地破费一下,绝对物超所值哦!如有下载和支付问题,请联系我们QQ(微信同号):813200300

本次赞助数额为: 2 元 
   源码介绍

定时自动按键



using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Runtime.InteropServices;
using System.Diagnostics;
using System.Collections;
using System.Windows.Forms;
using System.IO;
using System;
using System.Threading;

public class HotKeys
{
    //引入系统API
    [DllImport("user32.dll")]
    static extern bool RegisterHotKey(IntPtr hWnd, int id, int modifiers, Keys vk);
    [DllImport("user32.dll")]
    static extern bool UnregisterHotKey(IntPtr hWnd, int id);


    int keyid = 10;     //区分不同的快捷键
    Dictionary<int, HotKeyCallBackHanlder> keymap = new Dictionary<int, HotKeyCallBackHanlder>();   //每一个key对于一个处理函数
    public delegate void HotKeyCallBackHanlder();

    //组合控制键
    public enum HotkeyModifiers
    {
        Alt = 1,
        Control = 2,
        Shift = 4,
        Win = 8
    }

    //注册快捷键
    public void Regist(IntPtr hWnd, int modifiers, Keys vk, HotKeyCallBackHanlder callBack)
    {
        int id = keyid  ;
        if (!RegisterHotKey(hWnd, id, modifiers, vk))
            throw new Exception("注册失败!");
        keymap[id] = callBack;
    }

    // 注销快捷键
    public void UnRegist(IntPtr hWnd, HotKeyCallBackHanlder callBack)
    {
        foreach (KeyValuePair<int, HotKeyCallBackHanlder> var in keymap)
        {
            if (var.Value == callBack)
            {
                UnregisterHotKey(hWnd, var.Key);
                return;
            }
        }
    }

    // 快捷键消息处理
    public void ProcessHotKey(Message m)
    {
        if (m.Msg == 0x312)
        {
            int id = m.WParam.ToInt32();
            HotKeyCallBackHanlder callback;
            if (keymap.TryGetValue(id, out callback))
                callback();
        }
    }
}