2016-05-16 10 views
6

Mam aplikację, która potrzebuje wirtualnej klawiatury. Ale kiedy klikam niektóre z moich TextBox es, nie powodują one pojawienia się wirtualnej klawiatury. Próbowałem, używając w tym:Jak zmusić win10 do otwierania wirtualnej klawiatury?

System.Diagnostics.Process.Start("osk.exe"); 

Ale ta otwiera kolejną klawiaturę, taki, który nie zamyka po TextBox ma ostrości. Jak zmusić win10 do otwarcia wirtualnej klawiatury tabletu?

Aby się upewnić:
To działa na komputerze z ekranem dotykowym win10. Gdy mam włączony tryb tabletu, wirtualna klawiatura pojawia się na niektórych TextBox es, a nie na innych. Dlatego też chcę wymusić na klawiaturze pokazanie.

EDIT: mam ponieważ znaleźli sposób, aby pokazać „wirtualną klawiaturę tablet”, jednak chciałbym, aby to zrobić przy użyciu klasy InputPane. Czy ktoś może podać mi przykładowy kod tylko po to, aby zacząć?

kod, aby go otworzyć bez użyciu klasy InputPane:

System.Diagnostics.Process.Start("TabTip.exe"); 
+0

Dlaczego chcesz go wymusić? Na platformie komputerowej jest to zła praktyka, dlatego się nie otwiera. W tabletach/telefonach wirtualna klawiatura otworzy się, ponieważ nie ma innego sposobu na wprowadzanie znaków przez użytkownika. – WPMed

+0

http://www.windowscentral.com/how-force-tablet-mode-windows-10 – Elshan

+0

Tak, ale chce to zrobić programowo. Oczywiście, jeśli użytkownik wybierze tryb tabletu, otworzy się wirtualna klawiatura. Chodzi mi o to, że nie może go zmusić do otwarcia. Zostanie otwarte domyślnie lub użytkownik może je włączyć, jeśli chce. – WPMed

Odpowiedz

1

jedno. InputPane, którego nie można używać w WinForm, InputPane jest elementem UWP.

Uruchomiłem ten kod ... I działa!

string progFiles = @"C:\Program Files\Common Files\Microsoft Shared\ink"; 
string keyboardPath = Path.Combine(progFiles, "TabTip.exe"); 
Process.Start(keyboardPath); 

Ale musiałem dodać klucz (ręcznie) wartość na mój regedit na HKEY_CURRENT_USER\SOFTWARE\Microsoft\TabletTip wewnątrz klucza jest folder o nazwie 1,7 (byłoby to zmienić w przyszłości przez Microsoft) i dodać 32 bitową wartość DWORD o nazwie EnableDesktopModeAutoInvoke o wartości 1. Oznacza to PRAWDA. Powinno to wyglądać tak:

REGEDIT

Możesz dodać klucz programowo myślę, że trzeba administratora privilegies. Próbowałem dodać programowo programowo, ale nie działa, podwaja wpis bez żadnego efektu (BE CAREFUL);

PORADY:

rozważyć, czy korek proces dla każdego procesu utworzonej. Domyślam się, że użyjesz tego, gdy pole tekstowe (ar dowolna metoda wprowadzania) będzie się koncentrować. pamiętaj, aby zatrzymać proces, gdy komponent straci ostrość.

nadzieję, że ta pomoc.

enter image description here