У меня есть ComboBox, содержащий список (стандартный для поля со списком), в котором много элементов - более 100. Я хочу найти определенные записи, чтобы выбрать их. Чтобы найти записи, я сравниваю заданный шаблон с именем каждого элемента.
Из соображений производительности (более 100 элементов) я использую CacheRequest для родителя с областью действия всех дочерних элементов, поэтому я могу легко и очень быстро пройтись по всем дочерним элементам и найти правильный индекс дочернего элемента, который я хочу выбрать.
Здесь возникает проблема: у меня есть правильный индекс, который я хочу, у меня также есть кешированный элемент автоматизации, но, поскольку я указал AutomationElementMode.None в CacheRequest (мне все еще нужно проверить, влияет ли это на производительность), я, кажется, не способен преобразовать кэшированный элемент в тот, который я могу использовать для будущих вызовов («живой» элемент).
Пробовал конвертировать через NativeWindowHandle (так как есть функция AutomationElement.FromWindowHandle), но дескриптор вроде бы 0, так что никак.
Я также еще не пытался использовать кэшированный SelectionPattern - поскольку ComboBox иногда создаются на заказ, я не знаю, будет ли это работать во всех случаях (если вообще будет).
У меня есть дочерний индекс, я могу получить все значения, которые могу кэшировать - как я могу получить рабочий/живой элемент автоматизации кэшированного элемента?
Спасибо, Андреас.
(используя С# в Windows 7 64 с приложением win32 (в качестве цели автоматизации), хотя это не должно иметь большого значения)