Exemple #1
0
        /// <summary>
        /// Gets the action datas.
        /// 之所以这个函数很长,是因为我在从一个结构化的Xml文件中读取数据局
        /// 分开写感觉结构会更不清晰,这是一个低版本的获取数据的类,我们在.net的高版本中改进了它,但是
        /// 为了兼容低版本的.net,我们保留了这个类。
        /// </summary>
        /// <returns></returns>
        public Win32API.KeyEvent[] GetDatas()
        {
            List<Win32API.KeyEvent> datas = new List<Win32API.KeyEvent>();
            XmlReader reader = XmlReader.Create(this.actionsListFileName);
            while (reader.Read())
            {

                if (reader.NodeType == XmlNodeType.Element && reader.Name == "Action")
                {
                    //效率,会初始化两次
                    if (reader.HasAttributes)
                    {
                        Win32API.KeyEvent keyEvent = new Win32API.KeyEvent();
                        keyEvent.delayTime = Convert.ToInt32(reader.GetAttribute("DelayTime"));

                        while (reader.Read())
                        {
                            //throgh if statement never be true
                            if (reader.NodeType == XmlNodeType.Element && reader.Name == "KeyData")
                            {

                                keyEvent.bVk = Convert.ToInt32(reader.ReadInnerXml());

                                if (reader.NodeType == XmlNodeType.Element && reader.Name == "KeyEvent")
                                {
                                    string eventName = reader.ReadInnerXml();
                                    if (eventName == KeyboardEvents.WM_KeyUp.ToString())
                                    {
                                        keyEvent.dwFlags = Win32API.KBEventFlag.KeyUp;
                                    }
                                    else if (eventName == KeyboardEvents.WM_KeyDown.ToString())
                                    {
                                        keyEvent.dwFlags = Win32API.KBEventFlag.KeyDown;
                                    }
                                    break;
                                }
                                else
                                {
                                    keyEvent = JudgeKeyevent(reader, keyEvent);
                                    break;
                                }

                            }

                        }

                        datas.Add(keyEvent);
                    }
                  
                }
                
            }
            reader.Close();

            return datas.ToArray();
        }
Exemple #2
0
        /// <summary>
        /// Gets the recorded action datas.
        /// </summary>
        /// <returns></returns>
        public object[] GetDatas()
        {
            List<object> datas = new List<object>();
            XmlReader reader = XmlReader.Create(this.actionsListFileName);
            while (reader.Read())
            {

                if (reader.NodeType == XmlNodeType.Element && reader.Name == "Action")
                {
                    //效率,会初始化两次
                    if (reader.HasAttributes)
                    {
                        string type = reader.GetAttribute("Type");
                        int delayTime = Convert.ToInt32(reader.GetAttribute("DelayTime"));

                        if (type == "KeyboardAct")
                        {
                            Win32API.KeyEvent keyEvent = new Win32API.KeyEvent();
                            keyEvent.delayTime = delayTime;

                            while (reader.Read())
                            {
                                //throgh if statement never be true
                                if (reader.NodeType == XmlNodeType.Element && reader.Name == "KeyData")
                                {

                                    keyEvent.bVk = Convert.ToInt32(reader.ReadInnerXml());

                                    if (reader.NodeType == XmlNodeType.Element && reader.Name == "KeyEvent")
                                    {
                                        string eventName = reader.ReadInnerXml();
                                        if (eventName == KeyboardEvents.WM_KeyUp.ToString())
                                        {
                                            keyEvent.dwFlags = Win32API.KBEventFlag.KeyUp;
                                        }
                                        else if (eventName == KeyboardEvents.WM_KeyDown.ToString())
                                        {
                                            keyEvent.dwFlags = Win32API.KBEventFlag.KeyDown;
                                        }
                                        break;
                                    }
                                    else
                                    {
                                        keyEvent = JudgeKeyevent(reader, keyEvent);
                                        break;
                                    }

                                }

                            }

                            datas.Add(keyEvent);
                        }
                        else if (type == "MouseAct")
                        {
                            Win32API.MouseEvent MouseEvent = new Win32API.MouseEvent();
                            MouseEvent.delayTime = delayTime;

                            while (reader.Read())
                            {
                                //throgh if statement never be true
                                if (reader.NodeType == XmlNodeType.Element && reader.Name == "Position")
                                {
                                    string pointInfo = reader.ReadInnerXml();
                                    pointInfo = pointInfo.Substring(1, pointInfo.Length - 2);
                                    string[] xy = (pointInfo.Split(','));
                                    MouseEvent.pt.x = Convert.ToInt32(xy[0]);
                                    MouseEvent.pt.y = Convert.ToInt32(xy[1]);

                                    if (reader.NodeType == XmlNodeType.Element && reader.Name == "MouseEvent")
                                    {
                                        string eventName = reader.ReadInnerXml();
                                        MouseEvent = JudgeMouseEvent(MouseEvent, eventName);
                                        break;
                                    }
                                    else
                                    {
                                        while (reader.Read())
                                        {
                                            if (reader.NodeType == XmlNodeType.Element && reader.Name == "MouseEvent")
                                            {
                                                string eventName = reader.ReadInnerXml();
                                                MouseEvent = JudgeMouseEvent(MouseEvent, eventName);
                                                break;
                                            }
                                        }
                                        break;
                                    }

                                }

                            }

                            datas.Add(MouseEvent);
                        }

                    }

                }

            }
            reader.Close();
            return datas.ToArray();
        
        }