Определить, открыта ли экранная клавиатура (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)

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