1

FromPoint関数を使用して特定のポイントでAutomationElementを見つけることができるC#.NETアプリがあります。

次に、そのAutomationElementを操作して、別の場所に移動したり、サイズを変更したりできるようにします。

移動やサイズ変更には、SetWindowPos Window API関数を使用できると思いましたが、ターゲットウィンドウのハンドル(IntPtr)が必要です。AutomationElementの「Current」プロパティを使用して、そのNativeWindowHandle(int)を読み取ることができます。Controlもウィンドウであるため、このint値をウィンドウハンドルとしてSetWindowPost関数に渡して、自分の仕事ができることを期待しました。

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

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

4

1 に答える 1

0

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

UIAutomationで物事を移動する公式の方法は、要素が変換パターンをサポートしているかどうかを確認してから、MoveまたはResizeメソッドを使用して適切に移動することです。これは主にトップレベルのウィンドウにのみ実装されていると思います。他のコントロールにどれだけ広く実装されているかはわかりません。UISpy/Inspectを使用してターゲットUIを確認できます。

要素がHWNDの場合、NativeWindowHandleプロパティ(基になるHWND)を取得することもできますが、最初にIntPtrに変換してから、Win32APIで使用する必要があります。これは実際のHWNDアイテムに対してのみ機能しますが、リストビュー内のアイテムに対しては機能しません。

于 2012-05-02T21:31:55.853 に答える