2012-05-02 8 views
1

私は、FromPoint関数を使用して特定のポイントでAutomationElementを見つけることができるC#.NETアプリケーションを持っています。UIオートメーション要素を別の場所に移動するにはどうすればよいですか?

は今、私は別の場所に移動できるように、そののAutomationElementを操作したい、私はSetWindowPosウィンドウAPI関数を使用することができることを考え、移動やリサイズのために

など、それをリサイズが、それはハンドルが必要です(IntPtr)を取得します。 AutomationElementの "Current"プロパティを使用して、NativeWindowHandle(int)を読み取ることができます。 Controlはウィンドウでもあるので、私はこのint値をウィンドウハンドルとしてSetWindowPost関数に渡して、自分の仕事をすることを望んでいました。

しかし、コードが機能していません。

これを行う方法を教えてください。

答えて

0

移動したい要素のタイプ - トップレベルウィンドウまたはウィンドウ内のアイテムとは何ですか?また、これはユーザーがマウスやキーボードを使用して移動できるアイテムのタイプですか? UIAutomationは、通常のユーザーの操作と一貫性のあるUIを操作できるようになっています。たとえば、ダイアログでコントロールを移動するために使用することはできません。

UIAutomationで物事を移動する正式な方法は、要素がTransform Patternをサポートしているかどうかを確認してから、移動またはサイズ変更メソッドを使用して適切に移動させることです。私はこれが主にトップレベルのウィンドウでのみ実装されていると考えていますが、他のコントロールでどの程度広く実装されているかはわかりません。ターゲットUIを確認するためにUISpy/Inspectを使用できます。

要素がHWNDの場合は、基になるHWNDであるNativeWindowHandleプロパティを取得することもできますが、まずそれをIntPtrに変換してからWin32 APIで使用する必要があります。これは、実際のHWND項目に対してのみ機能しますが、リストビュー内の項目については機能しません。

関連する問題