2012-04-11 14 views

答えて

9

をしてみてください

:コメント

ため
AutomationElement.GetClickablePoint Method
Simulate mouse Enter/Move/Leave on WPF control without real mouse usage

編集は、このリンクを参照してください。そのようなInvokePattern通じむしろマウスイベントを送信するよりも
NativeMethods.cs
Introduction to TestApi – Part 1: Input Injection APIs

+0

Mouseクラスにアクセスするにはどうすればよいですか? – Stacker

+0

http://longan.googlecode.com/svn-history/r87/trunk/Dtf/Dtf/Core/Mouse.cs –

+0

これを試してみますが、クリックするだけで問題が発生すると思いますがマウスがそのクリックを認識していないので、要素がウィンドウの上にない可能性があり、クリックがnoになる原因となります。 – Stacker

14

、あなたはそれInvoke次のことができます。

public void InvokeAutomationElement(AutomationElement automationElement) 
{ 
    var invokePattern = automationElement.GetCurrentPattern(InvokePattern.Pattern) as InvokePattern; 
    invokePattern.Invoke(); 
} 
+3

すべてのウィンドウがInvoke patternをサポートしていません – Max

+0

これは当てはまりますが、私がクリックすることができれば、マウスをクリックするのではなく、自動化で行うことができます。それがInvokeパターンをサポートしていない場合は、おそらく 'SelectionItemPattern'をサポートしていますので、' Select'することができます。 – Levi

+0

私はWindowPatternとTransformPatternだけをサポートするウィンドウを見てきました。質問から、なぜクリックが行われたのかわかりません。 Stackerは、ウィンドウをフォーカスさせる(ちょっと推測する)ことができます。だから、「呼び出される」という即座の活動はないかもしれません。 – Max

2

コントロールを使用すると、このコード

を使用することができます "ClickablePoint" を持っている場合
  System.Windows.Point p = theButton.GetClickablePoint(); 
      AutoItX3Lib.AutoItX3Class au3; 
      au3 = new AutoItX3Lib.AutoItX3Class(); 
      au3.AutoItSetOption("MouseCoordMode", 0); 
      au3.MouseClick("LEFT", (int)p.X, (int)p.Y, 1, -1); 

AutoItX3Libは、AutoItのC#API

関連する問題