2016-05-16 23 views
6

Ho un'app che richiede una tastiera virtuale. Ma, quando clicco su alcuni dei miei TextBox, non fanno apparire la tastiera virtuale. Ho provato con questo:Come forzare win10 per aprire la tastiera del tablet virtuale?

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

Ma questo apre un'altra tastiera, uno che non si chiude dopo l'TextBox non ha messa a fuoco. Come forzare win10 per aprire la tastiera del tablet virtuale?

Per essere chiaro:
Questo è in esecuzione su un PC touch screen win10. Quando si attiva la modalità tablet, la tastiera virtuale viene visualizzata su alcuni TextBox e non su altri. Quindi perché voglio forzare la tastiera a mostrare.

EDIT: allora ho trovato un modo per mostrare la "tastiera tablet virtuale", però mi piacerebbe farlo utilizzando la classe InputPane. Qualcuno può fornirmi un codice di esempio solo per farmi iniziare?

codice per aprirla senza utilizzando la classe InputPane:

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

Perché vuoi per forzarlo? Sulla piattaforma desktop è una cattiva pratica, ecco perché non si apre. Sui tablet/telefoni si aprirà la tastiera virtuale perché non c'è altro modo per l'utente di immettere caratteri. – WPMed

+0

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

+0

Sì, ma vuole farlo in modo programmatico. Ovviamente, se l'utente seleziona la modalità tablet, la tastiera virtuale si aprirà. Il mio punto era che non poteva costringerlo ad aprire. Si aprirà di default o l'utente può abilitarlo se lo desidera. – WPMed

risposta

1

Una cosa. InputPane, non è possibile utilizzare in WinForms, InputPane è un elemento di UWP.

Ho eseguito questo codice ... E funziona!

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

Ma ho dovuto aggiungere una chiave valore (manualmente) sul mio regedit sul HKEY_CURRENT_USER\SOFTWARE\Microsoft\TabletTip all'interno della chiave è una cartella denominata 1.7 (questo sarebbe cambiare in futuro da Microsoft) e aggiungere un valore DWORD a 32 bit di nome EnableDesktopModeAutoInvoke con valore 1. Questo significa VERO. Esso dovrebbe essere simile a questo:

REGEDIT

è possibile aggiungere la chiave programatically Penso che avete bisogno privilegies Admin. Ho provato ad aggiungere la chiave in modo programmatico ma non funziona, raddoppia la voce senza alcun effetto (ESSERE ATTENTI);

CONSIGLI:

prendere in considerazione, fanno un tappo processo per ogni processo che si crea. Suppongo che lo userai quando il focus della richiesta di textbox (ar any any method method). assicurati di interrompere il processo quando il componente perde la concentrazione.

spero che questo aiuto.

enter image description here

Problemi correlati