public object Execute(IUIAutomationRunner runner) { AutomationElement element = UIAutomationHelper.FindWindowControl(this, ControlType.Button, this.TimeOut); if (element == null) { throw new NullReferenceException(string.Format("Button element with AutomationId '{0}' and Name '{1}' can not be find.", element.Current.AutomationId, element.Current.Name)); } ThreadStart start2 = null; IntPtr nativeWindowHandle = (IntPtr)element.Current.NativeWindowHandle; if (nativeWindowHandle != IntPtr.Zero) { HandleRef hWnd = new HandleRef(nativeWindowHandle, nativeWindowHandle); PostMessage(hWnd, 0xf5, IntPtr.Zero, IntPtr.Zero); } else { if (start2 == null) { start2 = delegate { PatternOperator.Invoke(element); }; } ThreadStart start = start2; new Thread(start).Start(); Thread.Sleep(0xbb8); } return(null); }
public object Execute(IUIAutomationRunner action) { AutomationElement element = UIAutomationHelper.FindWindowControl(this, ControlType.MenuItem, this.TimeOut); if (element == null) { throw new NullReferenceException(string.Format("Menu element with AutomationId '{0}' and Name '{1}' can not be find.", element.Current.AutomationId, element.Current.Name)); } ThreadStart threadStart = delegate { PatternOperator.Invoke(element); }; new Thread(threadStart).Start(); Thread.Sleep(0xbb8); return(null); }
private PatternExpression ParseExpression(bool readBinOp = false) { PatternExpression ret; PatternToken token = ReadToken(); switch (token.Type) { case TokenType.Literal: ret = new LiteralExpression(token.Value); break; case TokenType.LParens: { ret = ParseExpression(true); PatternToken parens = ReadToken(); if (parens.Type != TokenType.RParens) { throw MismatchParens(token.Position.Value); } } break; case TokenType.Identifier: if (IsOperator(token)) { // unary operator PatternOperator op = ops[token.Value](); if (!op.IsUnary) { throw UnexpectedToken(token); } op.OperandA = ParseExpression(); ret = op; } else if (IsFunction(token)) { // function PatternFunction fn = fns[token.Value](); PatternToken parens = ReadToken(); if (parens.Type != TokenType.LParens) { throw UnexpectedToken(parens, '('); } fn.Arguments = new List <PatternExpression>(fn.ArgumentCount); for (int i = 0; i < fn.ArgumentCount; i++) { if (PeekToken() == null) { throw UnexpectedEnd(); } if (PeekToken().Value.Type == TokenType.RParens) { throw BadArgCount(token, fn.ArgumentCount); } if (i != 0) { PatternToken comma = ReadToken(); if (comma.Type != TokenType.Comma) { throw UnexpectedToken(comma, ','); } } fn.Arguments.Add(ParseExpression()); } parens = ReadToken(); if (parens.Type == TokenType.Comma) { throw BadArgCount(token, fn.ArgumentCount); } if (parens.Type != TokenType.RParens) { throw MismatchParens(parens.Position.Value); } ret = fn; } else { bool boolValue; if (bool.TryParse(token.Value, out boolValue)) { ret = new LiteralExpression(boolValue); } else { throw UnknownToken(token); } } break; default: throw UnexpectedToken(token); } if (!readBinOp) { return(ret); } // binary operator PatternToken?peek = PeekToken(); while (peek != null) { if (peek.Value.Type != TokenType.Identifier) { break; } if (!IsOperator(peek.Value)) { break; } PatternToken binOpToken = ReadToken(); PatternOperator binOp = ops[binOpToken.Value](); if (binOp.IsUnary) { throw UnexpectedToken(binOpToken); } binOp.OperandA = ret; binOp.OperandB = ParseExpression(); ret = binOp; peek = PeekToken(); } return(ret); }