こんにちは。
今回、WINDOWSにてVBAから外部アプリを操作すべく、
hWND(ウインドウハンドル)の操作で行き詰まっております。
下記がinspectにて表示されたターゲット(文字入力可能)の情報です。
(※"あああ"は手入力したものです。)
How found: Focus Name: "" ControlType: UIA_EditControlTypeId (0xC354) LocalizedControlType: "編集" IsEnabled: true IsKeyboardFocusable: true HasKeyboardFocus: true AccessKey: "" AutomationId: "●●●●●●●●●●●●●●●●●" ClassName: "class FieldTextView" IsControlElement: true IsContentElement: true (unmanaged:ViewSystem.dll)]" IsPassword: false HelpText: "" ClickablePoint: {x:323 y:447} LegacyIAccessible.ChildId: 0 LegacyIAccessible.DefaultAction: "" LegacyIAccessible.Description: "" LegacyIAccessible.Help: "" LegacyIAccessible.KeyboardShortcut: "" LegacyIAccessible.Name: "" LegacyIAccessible.Role: 編集可能なテキスト (0x2A) LegacyIAccessible.State: フォーカスされています。,フォーカスできます。 (0x100004) LegacyIAccessible.Value: "あああ" Value.IsReadOnly: false Value.Value: "あああ" IsAnnotationPatternAvailable: false IsDragPatternAvailable: false IsDockPatternAvailable: false IsDropTargetPatternAvailable: false IsExpandCollapsePatternAvailable: false IsGridItemPatternAvailable: false IsGridPatternAvailable: false IsInvokePatternAvailable: false IsItemContainerPatternAvailable: false IsLegacyIAccessiblePatternAvailable: true IsMultipleViewPatternAvailable: false IsObjectModelPatternAvailable: false IsRangeValuePatternAvailable: false IsScrollItemPatternAvailable: false IsScrollPatternAvailable: false IsSelectionItemPatternAvailable: false IsSelectionPatternAvailable: false IsSpreadsheetItemPatternAvailable: false IsSpreadsheetPatternAvailable: false IsStylesPatternAvailable: false IsSynchronizedInputPatternAvailable: false IsTableItemPatternAvailable: false IsTablePatternAvailable: false IsTextChildPatternAvailable: false IsTextEditPatternAvailable: false IsTextPatternAvailable: false IsTextPattern2Available: false IsTogglePatternAvailable: false IsTransformPatternAvailable: false IsTransform2PatternAvailable: false IsValuePatternAvailable: true IsVirtualizedItemPatternAvailable: false IsWindowPatternAvailable: false IsCustomNavigationPatternAvailable: false IsSelectionPattern2Available: false
に対して
Dim IUI As New UIAutomationClient.CUIAutomation Dim IUI_Root_element As IUIAutomationElement Dim IUI_element As IUIAutomationElement Dim IUI_elements As IUIAutomationElementArray Dim IUI_condition As IUIAutomationCondition Dim IUI_legasy As IUIAutomationLegacyIAccessiblePattern Dim IUI_Value As IUIAutomationValuePattern Set IUI_condition = IUI.CreatePropertyCondition(UIA_NamePropertyId, "〇〇〇〇〇〇〇")'●●●●●●●●●●●●●●●●●の親のName Set IUI_Root_element = IUI.GetRootElement.FindFirst(TreeScope_Children, IUI_condition) Set IUI_condition = IUI.CreatePropertyCondition(UIA_AutomationIdPropertyId, "●●●●●●●●●●●●●●●●●")'ターゲットのAutomationId Set IUI_elements = IUI_Root_element.FindAll(TreeScope_Descendants, IUI_condition) Set IUI_element = IUI_elements.GetElement(0) Set IUI_Value = IUI_element.GetCurrentPattern(UIA_ValuePatternId) IUI_Value.SetValue ("hoge")
とするのですが、ターゲットにフォーカスは移る(セレクトされる)+画面に文字を入力しようとしているんだろうというわずかな点滅というか反応はあるのですが、
実際に文字は入力されません。
念の為、
IUIAutomationValuePattern
或いは
のmethodを使い
mystr = IUI_Value.CurrentValue debug.print mystr
をした所、どちらもイミディエイトウインドウには ”あああ” が表示される状態です。
(IUIAutomationLegacyIAccessiblePatternで試した場合も同様)
原因、可能性がお分かりになる方がいらっしゃれば
どうかお知恵をお貸しくださると幸いです。
宜しくお願い致します。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/10/02 05:35
2020/10/02 05:43