嘿,我有关键事件处理程序的一些问题。 这是来源:
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using System.Diagnostics; using System.Threading; namespace WindowsFormsApplication3 { public partial class Form1 : Form { public Form1() { InitializeComponent(); } [System.Runtime.InteropServices.DllImport("user32.dll")] public static extern void mouse_event(int dwFlags, int dx, int dy, int cButtons, int dwExtraInfo); public const int MOUSEEVENTF_LEFTDOWN = 0x02; public const int MOUSEEVENTF_LEFTUP = 0x04; public const int MOUSEEVENTF_RIGHTDOWN = 0x08; public const int MOUSEEVENTF_RIGHTUP = 0x10; public void Form1_KeyPessed(object sender, KeyEventArgs e) { if (e.KeyCode == Keys.F2) { DrawSquare(); } } public void DrawSquare() { int line = Convert.ToInt16(textBox1.Text); int time = Convert.ToInt16(textBox2.Text); int x = MousePosition.X; int y = MousePosition.Y; Cursor.Position = new Point(x - line / 2, y - line / 2); mouse_event(MOUSEEVENTF_LEFTDOWN, x, y, 0, 0); Thread.Sleep(time); Cursor.Position = new Point(x - line / 2, y + line / 2); Thread.Sleep(time); Cursor.Position = new Point(x - line / 2, y + line / 2); Thread.Sleep(time); Cursor.Position = new Point(x + line / 2, y - line / 2); Thread.Sleep(time); Cursor.Position = new Point(x - line / 2, y - line / 2); mouse_event(MOUSEEVENTF_LEFTUP, x, y, 0, 0); Thread.Sleep(time); Cursor.Position = new Point(x, y); } } }
现在只有按F2才能画平方,但是我希望它能在所有的窗口上工作。 我还需要什么? (这是一个完美的形状有点自动抽屉)
如果您只想处理几个组合键,则可以使用RegisterHotKey
。 如果你想检测所有不同的关键事件, 保罗建议与全球挂钩 。
你需要一个全局钩子。 这里有一个很好的实现http://www.codeproject.com/KB/cs/globalhook.aspx