Show touch-Tastatur - (TabTip.exe) in Windows 10 Jubiläums-edition
In Windows 8 und Windows 10 vor dem Jubiläums-update war es möglich zu zeigen, Bildschirmtastatur starten
C:\Program Files\Common Files\microsoft shared\ink\TabTip.exe
Es funktioniert nicht mehr in Windows 10-jähriges Jubiläum-update; die TabTip.exe
Prozess läuft, aber die Tastatur wird nicht angezeigt.
Gibt es eine Möglichkeit zu zeigen, dass es programmatisch?
UPDATE
Fand ich einen workaround - fake Mausklick auf Bildschirmtastatur-Symbol im system-tray. Hier ist der code in Delphi
//Find tray icon window
function FindTrayButtonWindow: THandle;
var
ShellTrayWnd: THandle;
TrayNotifyWnd: THandle;
begin
Result := 0;
ShellTrayWnd := FindWindow('Shell_TrayWnd', nil);
if ShellTrayWnd > 0 then
begin
TrayNotifyWnd := FindWindowEx(ShellTrayWnd, 0, 'TrayNotifyWnd', nil);
if TrayNotifyWnd > 0 then
begin
Result := FindWindowEx(TrayNotifyWnd, 0, 'TIPBand', nil);
end;
end;
end;
//Post mouse click messages to it
TrayButtonWindow := FindTrayButtonWindow;
if TrayButtonWindow > 0 then
begin
PostMessage(TrayButtonWindow, WM_LBUTTONDOWN, MK_LBUTTON, $00010001);
PostMessage(TrayButtonWindow, WM_LBUTTONUP, 0, $00010001);
end;
UPDATE 2
Andere Sache, die ich fand ist, dass die Festlegung dieses Registrierungsschlüssels wieder alte Funktionen beim starten TabTip.exe zeigt touch-Tastatur
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\TabletTip\1.7\EnableDesktopModeAutoInvoke=1
InformationsquelleAutor der Frage EugeneK | 2016-08-04
Du musst angemeldet sein, um einen Kommentar abzugeben.
OK, ich habe mich zurückentwickelt, was-explorer wird, wenn der Benutzer drückt die Schaltfläche in der Taskleiste.
Grundsätzlich wird eine Instanz einer undokumentierten Schnittstelle
ITipInvocation
und fordert seineToggle(HWND)
- Methode auf, übergeben desktop-Fenster als argument. Wie der name schon sagt, die Methode zeigt oder versteckt die Tastatur je nach seinem aktuellen Zustand.Bitte beachten Siedass explorer-erstellt eine Instanz von
ITipInvocation
auf jeden Knopf klicken. Also ich glaube, das Beispiel sollte nicht zwischengespeichert werden. Mir ist auch aufgefallen, dass der explorer ruft nieRelease()
auf die erhaltenen Instanz. Ich bin nicht allzu vertraut mit der COM, aber das sieht aus wie ein bug.Getestet habe ich diese in Windows 8.1, Windows 10 & Windows 10 Jubiläums-Edition und es funktioniert perfekt. Hier ist ein minimal-Beispiel in C, fehlt offensichtlich einige Fehler prüft.
Hier ist die C# - version:
Update: pro @EugeneK Kommentare, ich glaube, dass
tabtip.exe
ist der COM-server der COM-Komponente in Frage, also, wenn Ihr code wirdREGDB_E_CLASSNOTREG
sollte es wohl laufentabtip.exe
und versuchen Sie es erneut.InformationsquelleAutor der Antwort torvin
Die einzige Lösung, die ich gefunden habe, zu arbeiten, senden PostMessage, wie Sie erwähnt haben, in Antwort 1. Hier ist die C# - version der Fall, dass jemand Sie braucht.
InformationsquelleAutor der Antwort mikesl
Ich erkennen, 4 Situationen, wenn Sie versuchen zu öffnen, Touch-Tastatur auf Windows-10-jähriges Jubiläum-Update
1 - nichts zu tun
2+3 - Aktivierung über COM
4 - interessanteste Szenario. In einigen Geräten ab TabTip-Prozess öffnet die Tastatur, auf einige - nicht. Also müssen wir anfangen TabTip Prozess, warten erscheinenden Fenster "IPTIP_Main_Window", überprüfen Sie es für die Sichtbarkeit und aktivieren Sie es über das COM, wenn nötig.
Mache ich kleine Bibliothek für mein Projekt, Sie können es verwenden, - osklib
InformationsquelleAutor der Antwort Alexei Shcherbakov
Scheint das problem zu sein, mit der Einstellung des Windows-Betriebssystems. Ich habe vor gleiche Problem mit der app war ich die Entwicklung. Mit Windows 8, und 10 (vor dem update) - code, der aufgerufen Tastatur funktionierte gut, aber nach update nicht funktionierte. Nach der Lektüre dieser Artikelich habe folgende:
Gedrückt Win+I öffnen Sie die Einstellungen-app
Angeklickt-Geräte > Eingabe
Gedreht "Automatisch die touch-Tastatur im windowed-apps, wenn es keine Tastatur an Ihrem Gerät" AUF.
Recht nach, dass die Tastatur ab, zeigt sich in Windows 10 auch.
InformationsquelleAutor der Antwort user3480038
Gibt es noch einige Rätsel zu, wie die touch-Tastatur eingestellt ist sichtbar, die von Windows 10 Jubiläums-Update. Ich bin eigentlich mit der exakt gleichen Problem und hier sind die neuesten infos die ich gefunden habe :
Windows 10 1607 arbeitet in zwei Modi : Desktop-und Tablet. Während im Desktop-Modus, TabTip.exe kann angerufen werden aber nicht angezeigt. Während im Tablet-Modus, funktioniert alles einwandfrei : TabTip.exe sich zeigt, wenn Sie aufgerufen. Also eine 100% funktionierende workaround ist, um Ihren computer im Tablet-Modus aber wer will seine desktop - /laptop-arbeiten im tablet-Modus ? Nicht mir trotzdem !
Können Sie die "
EnableDesktopModeAutoInvoke
" - Taste (HKCU DWORD auf 1 gesetzt) und auf einigen Computern ausgeführt, die 1607 es hat Super geklappt, während im Desktop-Modus. Aber aus unbekannten Gründen, es funktioniert nicht auf meinem HP touchpad.Bitte beachten Sie, dass dieser registry-Wert ist die "touch-Tastatur auf den desktop-Modus, wenn es keine angeschlossene Tastatur" - option in der Windows-Parameter > touch
Bisher getestet auf 4 verschiedenen Rechnern und ich bin nicht in der Lage, etwas zu bekommen funktioniert gut auf alle...
InformationsquelleAutor der Antwort Usul
Ich hatte das gleiche problem auch. Es hat mich viel Zeit und Kopfschmerzen, aber Dank Alexei und Torvin ich habe endlich es funktioniert auf Win 10 1709. Sichtbarkeit prüfen war die Schwierigkeit. Vielleicht Die OSKlib Nuget aktualisiert werden kann. Lassen Sie mich zusammenfassen die komplette sulotion (Für sicher, dass mein code einige unnötige Zeilen jetzt):
InformationsquelleAutor der Antwort lama
Umsetzung der IValueProvider/ITextProvider zu Steuern, ist eine richtige Weg, um dies zu erreichen, wie hier beschrieben: https://stackoverflow.com/a/43886052/1184950
InformationsquelleAutor der Antwort tombam
Dem folgenden code wird immer funktionieren, da es verwendet die neueste MS-Api
Ich habe es in einer dll (Erforderlich für ein Delphi-Projekt), aber es ist eine einfache C
Auch nützlich, um die Tastatur-Größe und Anpassung der Anwendung layout
InformationsquelleAutor der Antwort Sevast
Verwenden Sie diese Methode:
Erstellen osk.bat-Datei und speichern Sie es unter der Programm-Ordner, dh.
C:\My Software\osk.bat
Geben Sie in das osk.bat folgende cmd:
"C:\Program Files\Common Files\Microsoft Shared\Ink\Tabtip.exe"
Windows Script zur Ausführung dieser bat-Datei
oWSH = CREATEOBJECT("wscript.shell")
oWSH.Run("osk.bat", 0, .T.)
InformationsquelleAutor der Antwort Vinny
In Win10 Ver 1803, DesktopMode, es gibt keinen zuverlässigen Weg, um
schalten Sie die "Touch-Tastatur" on|off [ ITipInvocation.Toggle() ];
noch können Sie zuverlässig entdecken, wenn es "oben" ( auf dem Bildschirm )
[ IFrameworkInputPane.Lage() ]; beide Routinen scheitern zufällig.
Statt, sicherzustellen, dass "TabTIP.EXE" und "....InputApp.EXE"
nur ausgeführt werden, wenn die Tastatur ist "up" ( auf dem Bildschirm ).
Schalten Sie die Tastatur ein-und auszuschalten ( aus X.CPP in Jeff-Relf.Me/X.ZIP ):
InformationsquelleAutor der Antwort Jeff Relf