private static void SendStroke(string stroke, StrokeBehavior behavior) { stroke = stroke.ToLower(); Keys key = Keys.None; switch (stroke) { case "alt": key = Keys.Menu; break; case "ctrl": key = Keys.ControlKey; break; case "shift": key = Keys.ShiftKey; break; case "win": key = Keys.LWin; break; default: int num = 0; string code = stroke; if (int.TryParse(code, out num)) { code = "d" + num; } try { key = (Keys)Enum.Parse(typeof(Keys), code, true); } catch { } break; } if (key != Keys.None) { KeyboardKey k = new KeyboardKey(key); switch (behavior) { case StrokeBehavior.Press: k.Press(); break; case StrokeBehavior.Release: k.Release(); break; case StrokeBehavior.PressAndRelease: k.PressAndRelease(); break; } } else if (stroke.Length >= 2) { string head = stroke.Substring(0, 2); KeyboardKey.MouseAbsolutePos = false; switch (head) { case "mv": if (stroke.Contains("%")) { stroke = stroke.Replace("%", ""); KeyboardKey.MouseAbsolutePos = true; } string[] xy = stroke.Substring(2).Trim('(', ')').Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries); ptMouse.X = Double.Parse(xy[0]); ptMouse.Y = double.Parse(xy[1]); if (KeyboardKey.MouseAbsolutePos) { ptMouse.X *= 655.35; ptMouse.Y *= 655.35; } KeyboardKey.InjectMouseEvent(KeyboardKey.MouseFlag.Move, ptMouse, 0, 0); break; case "ml": switch (behavior) { case StrokeBehavior.Press: KeyboardKey.InjectMouseEvent(KeyboardKey.MouseFlag.LeftDown, ptMouse, 0, 0); break; case StrokeBehavior.Release: KeyboardKey.InjectMouseEvent(KeyboardKey.MouseFlag.LeftUp, ptMouse, 0, 0); break; case StrokeBehavior.PressAndRelease: KeyboardKey.InjectMouseEvent(KeyboardKey.MouseFlag.LeftDown, ptMouse, 0, 0); KeyboardKey.InjectMouseEvent(KeyboardKey.MouseFlag.LeftUp, ptMouse, 0, 0); break; } break; case "mr": switch (behavior) { case StrokeBehavior.Press: KeyboardKey.InjectMouseEvent(KeyboardKey.MouseFlag.RightDown, ptMouse, 0, 0); break; case StrokeBehavior.Release: KeyboardKey.InjectMouseEvent(KeyboardKey.MouseFlag.RightUp, ptMouse, 0, 0); break; case StrokeBehavior.PressAndRelease: KeyboardKey.InjectMouseEvent(KeyboardKey.MouseFlag.RightDown, ptMouse, 0, 0); KeyboardKey.InjectMouseEvent(KeyboardKey.MouseFlag.RightUp, ptMouse, 0, 0); break; } break; case "mm": switch (behavior) { case StrokeBehavior.Press: KeyboardKey.InjectMouseEvent(KeyboardKey.MouseFlag.MiddleDown, ptMouse, 0, 0); break; case StrokeBehavior.Release: KeyboardKey.InjectMouseEvent(KeyboardKey.MouseFlag.MiddleUp, ptMouse, 0, 0); break; case StrokeBehavior.PressAndRelease: KeyboardKey.InjectMouseEvent(KeyboardKey.MouseFlag.MiddleDown, ptMouse, 0, 0); KeyboardKey.InjectMouseEvent(KeyboardKey.MouseFlag.MiddleUp, ptMouse, 0, 0); break; } break; case "mw": int delta = int.Parse(stroke.Substring(2).Trim('(', ')')); KeyboardKey.InjectMouseEvent(KeyboardKey.MouseFlag.Wheel, ptMouse, delta, 0); break; case "m1": case "m2": int x = int.Parse(head.Substring(1, 1)); switch (behavior) { case StrokeBehavior.Press: KeyboardKey.InjectMouseEvent(KeyboardKey.MouseFlag.XDown, ptMouse, x, 0); break; case StrokeBehavior.Release: KeyboardKey.InjectMouseEvent(KeyboardKey.MouseFlag.XUp, ptMouse, x, 0); break; case StrokeBehavior.PressAndRelease: KeyboardKey.InjectMouseEvent(KeyboardKey.MouseFlag.XDown, ptMouse, x, 0); KeyboardKey.InjectMouseEvent(KeyboardKey.MouseFlag.XUp, ptMouse, x, 0); break; } break; default: throw new Exception(Archer.Resource.Exception_StrokeFailed); } } else { Core.Report(Archer.Resource.Exception_StrokeFailed); } }
private static void SendStroke(string stroke, StrokeBehavior behavior) { stroke = stroke.ToLower(); Keys key = Keys.None; switch (stroke) { case "alt": key = Keys.Menu; break; case "ctrl": key = Keys.ControlKey; break; case "shift": key = Keys.ShiftKey; break; case "win": key = Keys.LWin; break; default: int num = 0; string code = stroke; if (int.TryParse(code, out num)) { code = "d" + num; } try { key = (Keys)Enum.Parse(typeof(Keys), code, true); } catch { } break; } if (key != Keys.None) { KeyboardKey k = new KeyboardKey(key); switch (behavior) { case StrokeBehavior.Press: k.Press(); break; case StrokeBehavior.Release: k.Release(); break; case StrokeBehavior.PressAndRelease: k.PressAndRelease(); break; } } else if (stroke.Length >= 2) { string head = stroke.Substring(0, 2); KeyboardKey.MouseAbsolutePos = false; switch (head) { case "mv": if (stroke.Contains("%")) { stroke = stroke.Replace("%", ""); KeyboardKey.MouseAbsolutePos = true; } string[] xy = stroke.Substring(2).Trim('(', ')').Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries); ptMouse.X = Double.Parse(xy[0]); ptMouse.Y = double.Parse(xy[1]); if (KeyboardKey.MouseAbsolutePos) { ptMouse.X *= 655.35; ptMouse.Y *= 655.35; } KeyboardKey.InjectMouseEvent(KeyboardKey.MouseFlag.Move, ptMouse, 0, 0); break; case "ml": switch (behavior) { case StrokeBehavior.Press: KeyboardKey.InjectMouseEvent(KeyboardKey.MouseFlag.LeftDown, ptMouse, 0, 0); break; case StrokeBehavior.Release: KeyboardKey.InjectMouseEvent(KeyboardKey.MouseFlag.LeftUp, ptMouse, 0, 0); break; case StrokeBehavior.PressAndRelease: KeyboardKey.InjectMouseEvent(KeyboardKey.MouseFlag.LeftDown, ptMouse, 0, 0); KeyboardKey.InjectMouseEvent(KeyboardKey.MouseFlag.LeftUp, ptMouse, 0, 0); break; } break; case "mr": switch (behavior) { case StrokeBehavior.Press: KeyboardKey.InjectMouseEvent(KeyboardKey.MouseFlag.RightDown, ptMouse, 0, 0); break; case StrokeBehavior.Release: KeyboardKey.InjectMouseEvent(KeyboardKey.MouseFlag.RightUp, ptMouse, 0, 0); break; case StrokeBehavior.PressAndRelease: KeyboardKey.InjectMouseEvent(KeyboardKey.MouseFlag.RightDown, ptMouse, 0, 0); KeyboardKey.InjectMouseEvent(KeyboardKey.MouseFlag.RightUp, ptMouse, 0, 0); break; } break; case "mm": switch (behavior) { case StrokeBehavior.Press: KeyboardKey.InjectMouseEvent(KeyboardKey.MouseFlag.MiddleDown, ptMouse, 0, 0); break; case StrokeBehavior.Release: KeyboardKey.InjectMouseEvent(KeyboardKey.MouseFlag.MiddleUp, ptMouse, 0, 0); break; case StrokeBehavior.PressAndRelease: KeyboardKey.InjectMouseEvent(KeyboardKey.MouseFlag.MiddleDown, ptMouse, 0, 0); KeyboardKey.InjectMouseEvent(KeyboardKey.MouseFlag.MiddleUp, ptMouse, 0, 0); break; } break; case "mw": int delta = int.Parse(stroke.Substring(2).Trim('(', ')')); KeyboardKey.InjectMouseEvent(KeyboardKey.MouseFlag.Wheel, ptMouse, delta, 0); break; case "m1": case "m2": int x = int.Parse(head.Substring(1, 1)); switch (behavior) { case StrokeBehavior.Press: KeyboardKey.InjectMouseEvent(KeyboardKey.MouseFlag.XDown, ptMouse, x, 0); break; case StrokeBehavior.Release: KeyboardKey.InjectMouseEvent(KeyboardKey.MouseFlag.XUp, ptMouse, x, 0); break; case StrokeBehavior.PressAndRelease: KeyboardKey.InjectMouseEvent(KeyboardKey.MouseFlag.XDown, ptMouse, x, 0); KeyboardKey.InjectMouseEvent(KeyboardKey.MouseFlag.XUp, ptMouse, x, 0); break; } break; default: throw new Exception(Archer.Resource.Exception_StrokeFailed); } } else { Core.Report(Archer.Resource.Exception_StrokeFailed); } }