API автоматизации пользовательского интерфейса Windows

Я пытался понять это некоторое время, поэтому любая помощь будет принята с благодарностью. Я использую автоматизацию пользовательского интерфейса в своем клиенте, чтобы отслеживать и сообщать о выборе пользователя в другом приложении. Я получил код, отлично работающий на сервере 2003. Однако на сервере 2008 элемент управления, который я отслеживаю, сообщается либо как элемент в сетке данных, либо как список. Это очень случайно, и я заметил, что если я буду продолжать выбирать строки в элементе управления, в конечном итоге элемент управления будет отображаться как сетка данных. На сервере 2003 об этом всегда сообщалось как о сетке данных, поэтому мой код работает отлично.

Я разрабатываю в Visual Studio 2010 С#.

Обновлять:

Я хотел упомянуть, что я получил те же результаты, используя инструмент UI Spy, поэтому исходный код не имеет значения в этом конкретном случае.


person evasilchenko    schedule 07.02.2012    source источник
comment
не видя исходного кода, это будет чистая спекуляция, такая как безопасность, UAC, процессы с высоким/низким уровнем привилегий и другие вещи...   -  person Yahia    schedule 13.03.2012
comment
Я получил те же результаты, используя инструмент UI Spy (msdn.microsoft.com/en -us/library/ms727247.aspx), поэтому в этом сценарии исходный код не нужен.   -  person evasilchenko    schedule 13.03.2012
comment
Тогда источник цели весьма актуален...   -  person Yahia    schedule 13.03.2012
comment
Прежде всего, спасибо, что нашли время, чтобы оставить комментарий. Если под источником цели вы подразумеваете приложение, которое я отслеживаю, то это стороннее приложение. Я мало что знаю о его разработке, кроме того, что я вижу через автоматизацию. Я считаю, что окна, содержащие элементы управления, являются MDI. Нужна ли дополнительная информация для устранения этой неполадки?   -  person evasilchenko    schedule 13.03.2012
comment
ИМХО, причина того, что вы видите, скорее всего, связана с сочетанием мер безопасности, добавленных в более новую версию Windows, и того, как реализовано целевое приложение (на основе .NET? Является ли элемент управления встроенным в Windows или каким-то третьим - партийный контроль?)... Я не понимаю, как диагностировать это, не разбирая целевое приложение (либо на уровне исходного кода, либо с помощью отладчика)... возможно, кто-то более опытный или с таким же опытом, как вы описываете может помочь с этим...   -  person Yahia    schedule 13.03.2012
comment
Приложение сообщается как Win32, поэтому оно может быть до .NET. Я считаю, что это третья часть контроля. (О нем сообщается как UltraGrid в UI Spy. Я думаю, что это Infragistics UltraGrid) Основная проблема заключается в том, что элемент управления может быть старым и не был разработан с учетом автоматизации, поскольку он не сообщает ни о каких стандартных шаблонах, о которых сообщает стандарт. оконные сетки. Из-за этого мне пришлось использовать LegacyIAccessiblePattern, чтобы получить выбор. Может быть, эта информация поможет, в противном случае кто-то, кто сталкивался с этим, должен вмешаться.   -  person evasilchenko    schedule 13.03.2012
comment
В зависимости от нескольких аспектов UltraGrid воссоздает свой дескриптор (иногда даже довольно часто)... это может испортить то, как он воспринимается автоматизацией пользовательского интерфейса... Я не думаю, что вы что-то делаете с этим извне целевого приложения. ...   -  person Yahia    schedule 13.03.2012
comment
Согласно в этом UltraGrid НЕ поддерживает автоматизацию пользовательского интерфейса...   -  person Yahia    schedule 13.03.2012
comment
Круто, можешь добавить свой последний комментарий в качестве ответа? Я применю к нему награду, если никто не откликнется в течение пары дней. Спасибо, что нашли время ответить.   -  person evasilchenko    schedule 13.03.2012
comment
В настоящее время поддерживается только их собственный продукт TestAdvantage — см. блоги. .infragistics.com/forums/p/10294/323529.aspx#323529   -  person Yahia    schedule 13.03.2012
comment
Да, я это читал. Как я уже сказал, мне пришлось использовать LegacyIAccessiblePattern в сочетании с другой логикой, чтобы получить фактическое значение из выбора пользователя. Излишне говорить, что это был болезненный процесс.   -  person evasilchenko    schedule 13.03.2012
comment
Я разместил свои комментарии в качестве ответа ...   -  person Yahia    schedule 13.03.2012
comment
Пожалуйста, прочитайте мой комментарий, я фактически разместил свой ответ о другом комментарии, а не о том, что он не поддерживает автоматизацию. Элемент управления, не поддерживающий автоматизацию, на самом деле не имеет отношения к моему ОП, поскольку я уже успешно его автоматизирую. Это больше о том, что вы сказали в отношении воссоздания его ручки.   -  person evasilchenko    schedule 13.03.2012
comment
Я перефразировал свой ответ, чтобы отразить это.   -  person Yahia    schedule 13.03.2012


Ответы (1)


В зависимости от нескольких аспектов UltraGrid воссоздает свой дескриптор (иногда даже довольно часто)... это может испортить то, как он воспринимается автоматизацией пользовательского интерфейса... Я не думаю, что с этим можно что-то сделать из-за пределов цели заявление...

Дополнительная информация:

Рассматриваемый элемент управления (Infragistics UltraGrid) НЕ поддерживает автоматизацию пользовательского интерфейса Windows/MS в соответствии с это.

В настоящее время поддерживается только решение для автоматизации TestAdvantage от того же поставщика.

Хотя они, похоже, работают над добавлением поддержки автоматизации пользовательского интерфейса Windows в ближайшие месяцы...

person Yahia    schedule 12.03.2012
comment
Просто чтобы уточнить, я имел в виду этот ответ: в зависимости от нескольких аспектов UltraGrid воссоздает свой дескриптор (иногда даже довольно часто) ... это может испортить то, как он воспринимается автоматизацией пользовательского интерфейса ... Я не думаю, что есть все, что вы делаете с этим вне целевого приложения - person evasilchenko; 13.03.2012
comment
@DeviantSeev да, это первый абзац - я просто для полноты/справочности добавляю всю предоставленную информацию... - person Yahia; 13.03.2012
comment
Спасибо, это прекрасно. Я присужу награду, как только смогу. - person evasilchenko; 13.03.2012