/// <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(); }
/// <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(); }