Можно ли обнаружить Windows на экранной клавиатуре?

Контекст: наше настольное приложение используется преимущественно пользователями со значительными проблемами доступа, поэтому некоторые из них используют экранную клавиатуру Windows. Один отзыв, который мы получили, заключается в том, что программное обеспечение неудобно использовать с OSK, поскольку слишком много важных элементов пользовательского интерфейса скрыто. Если бы мы могли определить наличие клавиатуры, мы могли бы в некоторой степени адаптировать пользовательский интерфейс.

Следовательно, возможно ли в коде определить, что встроенная OSK Windows открыта? И можно ли в коде определить расположение клавиатуры?

Приложение находится в WinForms и обычно работает на полноценных настольных компьютерах/ноутбуках, а не на небольших машинах с сенсорным экраном.


person Stuart Whitehouse    schedule 02.03.2018    source источник
comment
Это отвечает на вопрос? stackoverflow.com/questions/42494453/   -  person Brian Quinn    schedule 02.03.2018
comment
Возможно, большинство наших пользователей используют версии до 10, поэтому предпочтительнее использовать все, что касается более ранних версий. Хотя тот факт, что в Win10 нет хорошего способа, по крайней мере, подразумевает, что его нет в более ранних версиях. Не знаю, почему я не смог найти его поиском!   -  person Stuart Whitehouse    schedule 02.03.2018
comment
Я бы попробовал найти окно верхнего уровня с классом OSKMainClass. (DirectUIHWND используется везде...)   -  person Andreas Rejbrand    schedule 02.03.2018