以下のコードを使用して、別のアプリケーションのウィンドウ内のComboBoxからアイテムのリストを取得しています。このコードは、このコードをテストした他のアプリケーションのComboBoxに対して機能します(アイテムのリストを正しく取得します)が、この特定のアプリケーションでは、各ListItemに対して取得されたNameプロパティが文字化けします。
コードは次のとおりです。
using System.Windows.Automation;
var condition = new PropertyCondition(AutomationElement.NameProperty, "Change/Add/Delete Setting");
var condition2 = new PropertyCondition(AutomationElement.ControlTypeProperty, ControlType.Window);
var condition3 = new AndCondition(new Condition[] {condition, condition2});
var window = AutomationElement.RootElement.FindFirst(TreeScope.Subtree, condition3);
condition = new PropertyCondition(AutomationElement.ControlTypeProperty, ControlType.ComboBox);
var combo = window.FindFirst(TreeScope.Subtree, condition);
condition = new PropertyCondition(AutomationElement.ControlTypeProperty, ControlType.ListItem);
AutomationElementCollection children = combo.FindAll(TreeScope.Subtree, condition);
var comboItems = new List<string>();
foreach (AutomationElement child in children)
{
comboItems.Add(child.Current.Name);
}
そして、これがこの1つのアプリの最終的なスクリーンショットです。
- Nameプロパティがこのように文字化けする原因は何ですか?これはエンコーディングの問題でしょうか?
- 各アイテムの正しいテキストを取得するにはどうすればよいですか?