private void LogKeyCombo(KeyHookEventArgs e) { if (this.pressedKeys.Count != 0) { /*string _t = String.Format("[{0}]", String.Join(" + ", this.pressedKeys.ToArray())); * if (this.pressedChar != '\0') * { * _t += this.pressedChar; * this.pressedChar = '\0'; * } * this.keyLog.Enqueue(_t);*/ this.keyLog.Enqueue(HookEventCodec.GetEncodedData(HookEventCodec.EventClass.KeyEvent, HookEventCodec.EventType.KeyPress, this.CreateArgument(e), this.pressedKeys.ToArray(), this.pressedChar)); } }
public void EncodeEvent(int id, EventArgs args, HookEventCodec.EventType eventType) { this._neuroLog.Write("Encode Event"); if (args is KeyEventArgs) { KeyEventArgs ke = args as KeyEventArgs; this.DispatchData(id, ActionCenter.ActionType.KeyEvent, HookEventCodec.GetEncodedData(HookEventCodec.EventClass.KeyEvent, eventType, new KeyHookEventArgs((uint)ke.KeyValue, true, ke.Alt, ke.Control, ke.Shift, false, false, false), new int[] { ke.KeyValue })); this._neuroLog.WriteFormat("Dispatched Key Event", "Id: {0}\nType: {1}\nKey Value: {2}\nAlt: {3}\nCtrl: {4}\nShift: {5}", id, eventType, ke.KeyValue, ke.Alt, ke.Control, ke.Shift); } else if (args is MouseEventArgs) { MouseEventArgs me = args as MouseEventArgs; this.DispatchData(id, ActionCenter.ActionType.MouseEvent, HookEventCodec.GetEncodedData(HookEventCodec.EventClass.MouseEvent, eventType, new MouseHookEventArgs(true, me.Button, me.Clicks, me.X, me.Y, me.Delta, false, false, false, false, false, false))); if (eventType == HookEventCodec.EventType.MouseDoubleClick) { this._neuroLog.WriteFormat("Dispatched Mouse Event", "Id: {0}\nType: {1}\nButton: {2}\nClick Count: {3}\nLocation: {4}, {5}\nScroll Delta: {6}", id, eventType, me.Button, me.Clicks, me.X, me.Y, me.Delta); } } }
private HookEventArgs[] DecodeHookEvents(Stream ls) { List <HookEventArgs> hookEvents = new List <HookEventArgs>(); MemoryStream ms = ls as MemoryStream; HookEventCodec.EventClass ec; HookEventCodec.EventType et; HookEventArgs ha; byte[] pressedKeys; char pressedChar; int offset = 0; while (HookEventCodec.GetDecodedData(offset, ms.ToArray(), out ec, out et, out ha, out pressedKeys, out pressedChar)) { if (ec == HookEventCodec.EventClass.MouseEvent) { ha = new MouseHookEventArgsEx(ha as MouseHookEventArgs, et); offset += (int)HookEventCodec.Offsets.MouseLogOffset; } else { KeyHookEventArgs e = ha as KeyHookEventArgs; List <System.Windows.Forms.Keys> pKeys = new List <System.Windows.Forms.Keys>(); foreach (byte b in pressedKeys) { if (b != 0) { pKeys.Add((System.Windows.Forms.Keys)b); } } offset += (int)HookEventCodec.Offsets.KeyLogOffset; ha = new KeyHookEventArgsEx(e, et, pKeys, pressedChar); } hookEvents.Add(ha); } return(hookEvents.ToArray()); }
/// <summary> /// Constructor /// </summary> /// <param name="args">Original MouseHookEventArgs object</param> /// <param name="type">Type of event</param> public MouseHookEventArgsEx(MouseHookEventArgs args, HookEventCodec.EventType type) : base(args.Injected, args.Button, args.ClickCount, args.Location.X, args.Location.Y, args.MouseDelta, args.Alt, args.Control, args.Shift, args.CapsLock, args.NumLock, args.ScrollLock) { this._type = type; }
/// <summary> /// Constructor /// </summary> /// <param name="args">Original KeyHookEventArgs object</param> /// <param name="type">Type of event</param> /// <param name="pressedKeys">List of keys pressed simultaneously</param> /// <param name="pressedChar">Key chracter pressed</param> public KeyHookEventArgsEx(KeyHookEventArgs args, HookEventCodec.EventType type, List<System.Windows.Forms.Keys> pressedKeys, char pressedChar) : base((uint)args.KeyValue, pressedChar, args.Injected, args.Alt, args.Control, args.Shift, args.CapsLock, args.NumLock, args.ScrollLock) { this._type = type; if (pressedKeys == null) this._pressedKeys = new List<System.Windows.Forms.Keys>(); else this._pressedKeys = pressedKeys; }
public void DecodeEvent(int owner, byte[] data) { this._neuroLog.WriteFormat("Decode Event", "Owner: {0}\n\nData:\n{1}", owner, data); HookEventCodec.EventClass ec; HookEventCodec.EventType et; HookEventArgs ea; byte[] _b; char _c; HookEventCodec.GetDecodedData(0, data, out ec, out et, out ea, out _b, out _c); if (ec == HookEventCodec.EventClass.KeyEvent) { KeyHookEventArgs ke = ea as KeyHookEventArgs; switch (et) { case HookEventCodec.EventType.KeyDown: //Log.WriteLine("[KeyDown]->" + ke.KeyCode); this._neuroLog.WriteFormat("Key Down", "Key Code: {0}", ke.KeyCode); this._ki.KeyDown(ke.KeyCode); break; case HookEventCodec.EventType.KeyPress: //Log.WriteLine("[KeyPress]->" + ke.KeyCode); this._neuroLog.WriteFormat("Key Press", "Key Code: {0}", ke.KeyCode); this._ki.KeyPress(ke.KeyCode, ke.Alt, ke.Control, ke.Shift); break; case HookEventCodec.EventType.KeyUp: //Log.WriteLine("[KeyUp]->" + ke.KeyCode); this._neuroLog.WriteFormat("Key Up", "Key Code: {0}", ke.KeyCode); this._ki.KeyUp(ke.KeyCode); break; } } else if (ec == HookEventCodec.EventClass.MouseEvent) { MouseHookEventArgs me = ea as MouseHookEventArgs; KeyHookEventArgs ke = ea as KeyHookEventArgs; switch (et) { case HookEventCodec.EventType.MouseClick: //Log.WriteLine("[Click]"); this._neuroLog.WriteFormat("Mouse Click", "Button: {0}\nCount: {1}", me.Button, me.ClickCount); this._mi.MouseClick(me.Button, me.ClickCount); break; case HookEventCodec.EventType.MouseDoubleClick: //Log.WriteLine("[DoubleClick]"); this._neuroLog.WriteFormat("Mouse Double Click", "Button: {0}", me.Button); this._mi.MouseDoubleClick(me.Button); break; case HookEventCodec.EventType.MouseDown: //Log.WriteLine("[MouseDown]"); this._neuroLog.WriteFormat("Mouse Down", "Button: {0}", me.Button); this._mi.MouseDown(me.Button); break; case HookEventCodec.EventType.MouseMove: //int x = (int)(System.Windows.Forms.Screen.PrimaryScreen.Bounds.Width * (me.Location.X / Math.Pow(10, this.NormalizedPrecisionFactor))); //int y = (int)(System.Windows.Forms.Screen.PrimaryScreen.Bounds.Height * (me.Location.Y / Math.Pow(10, this.NormalizedPrecisionFactor))); int x = (int)(System.Windows.Forms.Screen.PrimaryScreen.Bounds.Width * ((ushort)me.Location.X / 65535.0f)); int y = (int)(System.Windows.Forms.Screen.PrimaryScreen.Bounds.Height * ((ushort)me.Location.Y / 65535.0f)); //this._neuroLog.WriteFormat("Mouse Move", "Normalized Location: {0}, {1}\nClient Location: {2}, {3}", me.Location.X, me.Location.Y, x, y); //Log.WriteLine(String.Format("{0} -> {1}, {2} -> {3}", (ushort)me.Location.X, x, (ushort)me.Location.Y, y)); /*using (StreamWriter sw = new StreamWriter("log.txt",true)) * { * sw.WriteLine(String.Format("[{0},{1}] | {2}, {3}", me.Location.X.ToString(), me.Location.Y.ToString(), x.ToString(), y.ToString())); * }*/ this._mi.MouseMove(x, y); break; case HookEventCodec.EventType.MouseUp: //Log.WriteLine("[MouseUp]"); this._neuroLog.WriteFormat("Mouse Up", "Button: {0}", me.Button); this._mi.MouseUp(me.Button); break; case HookEventCodec.EventType.MouseWheel: //Log.WriteLine("[Scroll]"); this._neuroLog.WriteFormat("Mouse Scroll", "Amount: {0}", me.ScrollAmount); this._mi.MouseScroll(me.ScrollAmount); break; } } }
void mh_MouseClicked(MouseHookEventArgs e) { //this.mouseLog.Enqueue(String.Format("[Mouse Click: {0} | {1},{2}]", e.Button, e.Location.X, e.Location.Y)); this.mouseLog.Enqueue(HookEventCodec.GetEncodedData(HookEventCodec.EventClass.MouseEvent, HookEventCodec.EventType.MouseClick, e)); }
void mh_MouseWheel(MouseHookEventArgs e) { //this.mouseLog.Enqueue(String.Format("[Mouse Scroll: {0} | {1},{2}]", e.ScrollAmount, e.Location.X, e.Location.Y)); this.mouseLog.Enqueue(HookEventCodec.GetEncodedData(HookEventCodec.EventClass.MouseEvent, HookEventCodec.EventType.MouseWheel, e)); }