Определить, открыта ли экранная клавиатура (TabTip.exe)

Я работаю над приложением WPF / C # для заполнения форм. Я пытаюсь найти способ определить, минимизирована ли клавиатура TapTip (TabTip.exe / metro-like клавиатура для рабочего стола Windows 8) / не видна в Windows 8.

Мне удалось определить, минимизирована ли клавиатура osk (экранная клавиатура для специальных возможностей osk.exe / windows), но тот же процесс, похоже, не работает с клавиатурой TabTip.

Чтобы определить, минимизирована ли клавиатура, я:
1. Найдите процесс клавиатуры
2. Получить MainWindowHandle
3. Используйте свойство showCmd окна WINDOWPLACEMENT (найдено с помощью MainWindowHandle)
4. Используйте значение showCmd, чтобы определить, свернуто ли окно

Проблемы, с которыми я столкнулся:
- процесс TabTip имеет MainWindowHandle 0 (поэтому я не могу использовать его для поиска информации WINDOWPLACEMENT)
- значения для WINDOWPLACEMENT.showCmd одинаковы, когда TabTip открыт и свернут

Чтобы найти дескриптор окна TabTip, я использовал ENUMWINDOWS, чтобы получить все дескрипторы окна, GETWINDOWTHREADPROCESSID, чтобы получить идентификаторы процесса, затем сравнил идентификаторы с идентификатором процесса TabTip.

Любая помощь с этим будет оценена. Также это мой первый пост. Я думаю, что сделал это правильно, но если нет, пожалуйста, дайте мне знать, как это исправить.

Ответы на вопрос(3)

Ваш ответ на вопрос