none
c# 快捷方式 RRS feed

答案

  • 当你设定4个方向的组合键,可以用switch语句,按下那个,执行哪个的程序段,就可以了。我这只是给个例子,枚举那你可以定义更多的。这代码没测试,给你思路!


    ♡. Microsoft .NET Platform
    • 已标记为答案 mister55 2009年6月29日 3:05
    2009年6月29日 2:42

全部回复

  • 感觉都一样啊,注册热键就好了,
    比如:
    RegisterHotKey(Handle, 100, 4, Keys.S);
    //注册热键Shift+S,Id号为100。4指代Shift
    public enum KeyModifiers

    {

    None = 0,

    Alt = 1,

    Ctrl = 2,

    Shift = 4,

    WindowsKey = 8,

    CtrlAndShift = 6

    }

     


    ♡. Microsoft .NET Platform
    • 已编辑 mnbhy310 2009年6月29日 2:36
    2009年6月29日 2:33
  • 能不能说明白点,有点不太懂。在哪写这句啊?
    2009年6月29日 2:35
  • 有这个方法吗?
    RegisterHotKey(Handle, 100, 4, Keys.S);

    2009年6月29日 2:39
  • using System;

    using System.Collections.Generic;

    using System.ComponentModel;

    using System.Data;

    using System.Drawing;

    using System.Text;

    using System.Windows.Forms;

     

    using System.Runtime.InteropServices;

    using System.Diagnostics;

     

    namespace WindowsApplication4

    {

    public partial class Form1 : Form

    {

     

    [DllImport("user32.dll", SetLastError = true)]

    public static extern bool RegisterHotKey(

    IntPtr hWnd, //要定义热键的窗口的句柄

    int id, //定义热键ID

    KeyModifiers fsModifiers, //标识热键是否在按Shift键时才会生效

    Keys vk //定义热键的内容

    );

     

    [DllImport("user32.dll", SetLastError = true)]

    public static extern bool UnregisterHotKey(

    IntPtr hWnd, //要取消热键的窗口的句柄

    int id //要取消热键的ID

    );

    [Flags()]

    public enum KeyModifiers

    {

    None = 0,

    Alt = 1,

    Ctrl = 2,

    Shift = 4,

    WindowsKey = 8,

    CtrlAndShift = 6

    //随便你枚举}

     

    private void Form1_Load(object sender, EventArgs e)

    {

    //注册热键Shift+S,Id号为100。RegisterHotKey(Handle, 100, KeyModifiers.Shift, Keys.S);

    }

     

    private void Form1_FormClosing(object sender, FormClosingEventArgs e)

    {

    //注销Id号为100的热键设定

    UnregisterHotKey(Handle, 100);

     

    }

     

    protected override void WndProc(ref Message m)

    {

    const int WM_HOTKEY = 0x0312;

    //按快捷键

    switch (m.Msg)

    {

    case WM_HOTKEY:

    switch (m.WParam.ToInt32())

    {

    case 100: //按下的是Shift+S

    //此处填写快捷键响应代码

    break;

    }

    }

    break;

    }

    base.WndProc(ref m);

    }

     

     

    public Form1()

    {

    InitializeComponent();

    }

    }

    }


    ♡. Microsoft .NET Platform
    2009年6月29日 2:41
  • 当你设定4个方向的组合键,可以用switch语句,按下那个,执行哪个的程序段,就可以了。我这只是给个例子,枚举那你可以定义更多的。这代码没测试,给你思路!


    ♡. Microsoft .NET Platform
    • 已标记为答案 mister55 2009年6月29日 3:05
    2009年6月29日 2:42