Я работаю над мостом доступа Java в c# уже некоторое время. Я наконец начал работать, частично.
- Я могу правильно инициализировать мост доступа.
- Я могу использовать GetAccessibleContextFromHWND, чтобы получить vmid и javaObjectHandle.
- I также можно использовать GetAccessibleContextInfo, чтобы получить availableContextInfo.
- Наконец, я могу перечислить дочерние элементы и найти интересующий меня узел.
Как мне взять его оттуда? Я пытался сделать такие вещи, как установить текст, щелкнуть или получить текст, но не смог. Я использовал приведенный ниже код, который был упомянут в другом вопросе, Автоматизация с использованием Java Мост доступа
Установить текст:
public string Text
{
get
{
return GetText();
}
set
{
if (!API.setTextContents(this.VmId, this.Context, value))
throw new AccessibilityException("Error setting text");
}
}
private string GetText()
{
System.Text.StringBuilder sbText = new System.Text.StringBuilder();
int caretIndex = 0;
while (true)
{
API.AccessibleTextItemsInfo ti = new API.AccessibleTextItemsInfo();
if (!API.getAccessibleTextItems(this.VmId, this.Context, ref ti, caretIndex))
throw new AccessibilityException("Error getting accessible text item information");
if (!string.IsNullOrEmpty(ti.sentence))
sbText.Append(ti.sentence);
else
break;
caretIndex = sbText.Length;
}
Нажмите на кнопку:
public void Press()
{
DoAction("click");
}
protected void DoAction(params string[] actions)
{
API.AccessibleActionsToDo todo = new API.AccessibleActionsToDo()
{
actionInfo = new API.AccessibleActionInfo[API.MAX_ACTIONS_TO_DO],
actionsCount = actions.Length,
};
for (int i = 0, n = Math.Min(actions.Length, API.MAX_ACTIONS_TO_DO); i < n; i++)
todo.actionInfo[i].name = actions[i];
Int32 failure = 0;
if (!API.doAccessibleActions(this.VmId, this.Context, ref todo, ref failure))
throw new AccessibilityException("Error performing action");
}
Любые идеи будут высоко оценены. Спасибо !!