Я разработал фрагмент кода C#, чтобы определить, показывала ли виртуальная (экранная) клавиатура или нет.C# Проблемы с виртуальной клавиатурой Windows 10
ниже код работает отлично в Windows 7, 8 и 8.1, но в Windows 10, то IsKeyboardVisible
всегда возвращает true
...
public static bool IsKeyboardVisible() {
Process keyboardProc;
UInt32 WS_DISABLED = 0x8000000;
UInt32 WS_VISIBLE = 0X94000000;
int GWL_STYLE = -16;
IntPtr keyboardHandle = GetKeyboardWindowHandle();
bool visible = false;
if (keyboardHandle != IntPtr.Zero) {
UInt32 style = GetWindowLong(keyboardHandle, GWL_STYLE);
// in Win10, this always returns "true", i.e. WS_DISABLED is
//
//visible = ((style & WS_DISABLED) != WS_DISABLED);
// UPDATE: I found this code helping here
visible = (style == WS_VISIBLE);
}
return visible;
}
Я использовал учебник по SO, но некоторое время назад так жаль, что не зачислил автора.
Кто-нибудь знает о фрагменте рабочего кода для всех последних версий Windows, поэтому мне не нужно проверять фактическую ОС для включения версии ...?
UPDATE
Я нашел original post here, что позволило мне исправить код. Так что теперь моя проблема та же самая старая Win10 проблема - я не могу показать виртуальную клавиатуру с помощью
string progFiles = @"C:\Program Files\Common Files\Microsoft Shared\ink";
string keyboardPath = Path.Combine(progFiles, "TabTip.exe");
keyboardProc = Process.Start(keyboardPath);
... Опять же, есть ли «все-платформа» код, который я могу использовать, или что предлагаемое подход для Win10?
UPDATE 2 Я узнал о проблемах с 32-разрядным приложением на 64-разрядной ОС. При этом, этой ошибке возникает попробовать ли я запустить osk.exe
в System32
или «папке sysWOW64` ... Есть ли другой способ, чем сделать 64-битную выпустить ???