タイトル : Re^3: VBで作った別アプリを制御 投稿日 : 2017/08/04(Fri) 10:01 投稿者 : 魔界の仮面弁士
SPY++ は hWnd をもつオブジェクトしか取得できませんよね。 しかし MSAA や UIAutomation は、XAML アプリの子要素や タイトルバーの[最小化][最大化]ボタンなどといった、 固有のウィンドウハンドルを持たないオブジェクトも取得・操作できます。 関連情報として: http://hanatyan.sakura.ne.jp/vbnetbbs/wforum.cgi?mode=allread&no=11508#11513 http://hanatyan.sakura.ne.jp/vbnetbbs/wforum.cgi?mode=allread&no=8989#8992 > →5にはボタンのSPY++で言うところのキャプションの値を代入すれば良いのでしょうか? キャプションと同じになることもありますが、実際には別物です。 (そもそも Spy++ では、電卓ボタンのキャプションを拾えないような…) たとえば 電卓の "C" ボタンの Name は、Windows 10 でも Windows 7 でも "クリア" ですし、 "CE" ボタンの方は、Windows 7 が "項目をクリア"、Windows 10 が "入力のクリア" です。 なお、自作アプリの場合は、AutomationIdProperty を使った方が良いでしょう。 これは、デザイン時のコントロール名(SaveButton とか txtUserName など)です。 > →上の文のcontroltype.ButtonのButtonはSPY++で調べた時のクラスの項目を記入するのでしょうか? UIオートメーションのコントロールタイプは、SPY++ のクラス名とは別物です。 指定可能な値は下記を参照してみてください。 https://msdn.microsoft.com/ja-jp/library/system.windows.automation.controltype.aspx ただ、AutomationId が分かっているのであれば、ControlType の AND 条件は不要かと。 |