Exemplo n.º 1
0
        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());
        }
Exemplo n.º 2
0
        /// <summary>
        /// Converts a list of hook events to string
        /// </summary>
        /// <param name="args">List of HookEventArgs objects</param>
        /// <returns>String representing the list of events</returns>
        public static string HookEventsToString(HookEventArgs[] args)
        {
            string eventStr = "";

            foreach (HookEventArgs arg in args)
            {
                string str = "";
                if ((arg as MouseHookEventArgsEx) != null)
                {
                    MouseHookEventArgsEx e = arg as MouseHookEventArgsEx;
                    switch (e.Type)
                    {
                    case HookEventCodec.EventType.MouseDown:
                        str = String.Format("[Mouse Down: {0} | {1},{2} : {3}]", e.Button.ToString(), e.Location.X, e.Location.Y, HookEventHelper.GetModifierString(e));
                        break;

                    case HookEventCodec.EventType.MouseClick:
                        str = String.Format("[Mouse Click: {0}#{1} | {2},{3} : {4}]", e.Button.ToString(), e.ClickCount, e.Location.X, e.Location.Y, HookEventHelper.GetModifierString(e));
                        break;

                    case HookEventCodec.EventType.MouseDoubleClick:
                        str = String.Format("[Double Click: {0} | {1},{2} : {3}]", e.Button.ToString(), e.Location.X, e.Location.Y, HookEventHelper.GetModifierString(e));
                        break;

                    case HookEventCodec.EventType.MouseUp:
                        str = String.Format("[Mouse Up: {0} | {1},{2} : {3}]", e.Button.ToString(), e.Location.X, e.Location.Y, HookEventHelper.GetModifierString(e));
                        break;

                    case HookEventCodec.EventType.MouseMove:
                        str = String.Format("[Mouse Move | {0},{1} : {2}]", e.Location.X, e.Location.Y, HookEventHelper.GetModifierString(e));
                        break;

                    case HookEventCodec.EventType.MouseWheel:
                        str = String.Format("[Mouse Scroll: {0} | {1},{2} : {3}]", e.ScrollAmount, e.Location.X, e.Location.Y, HookEventHelper.GetModifierString(e));
                        break;
                    }
                }
                else if ((arg as KeyHookEventArgsEx) != null)
                {
                    KeyHookEventArgsEx e     = arg as KeyHookEventArgsEx;
                    List <string>      pKeys = new List <string>();
                    foreach (byte b in e.PressedKeys)
                    {
                        if (b != 0)
                        {
                            pKeys.Add(((Keys)b).ToString());
                        }
                    }

                    switch (e.Type)
                    {
                    case HookEventCodec.EventType.KeyDown:
                        str = String.Format("[Down: {0} : {1}]", String.Join(" + ", pKeys.ToArray()), HookEventHelper.GetModifierString(e));
                        break;

                    case HookEventCodec.EventType.KeyPress:
                        str = String.Format("[{0} : {1}]", String.Join(" + ", pKeys.ToArray()), HookEventHelper.GetModifierString(e));
                        break;

                    case HookEventCodec.EventType.KeyUp:
                        str = String.Format("[Up: {0} : {1}]", String.Join(" + ", pKeys.ToArray()), HookEventHelper.GetModifierString(e));
                        break;
                    }
                    if (e.KeyChar != '\0')
                    {
                        str += e.KeyChar;
                    }
                }
                str.Trim();
                if (str != "")
                {
                    eventStr += str + Environment.NewLine;
                }
            }
            return(eventStr.Trim());
        }