Warum wird in Windows 10 die integrierte Tastatur nicht für eine Visual Basic InputBox angezeigt?

1678
Rich Shealer

Ich habe zum ersten Mal eine 32-Bit-Desktopanwendung auf Windows 10 Pro x64 installiert. Bisher wurde es erfolgreich unter Windows 7 verwendet.

Es ist ein PC mit einem externen Touchscreen-Monitor, der im Kiosk-Modus verwendet wird, so dass dem Benutzer nur das Programm selbst zur Verfügung steht. Ohne physische Tastatur oder Schließen des Programms können sie weder die Taskleiste noch die Taskleiste sehen.

Unter Einstellungen / Geräte / Eingabe habe ich die Option "Touch-Tastatur oder Handschriftfeld anzeigen, wenn sich der Tablet-Modus nicht befindet und keine Tastatur angeschlossen ist" ausgewählt.

Die Anwendung hat nur ein paar Stellen, an denen der Benutzer tippen kann. Die Tastatur erscheint beim Windows-Login und für Bildschirme, die eine TextBox verwenden, gut. Es gibt jedoch ein paar Stellen, an denen ein generisches InputBox-Dialogfeld verwendet wird, und die Tastatur wird nicht angezeigt.

Ich habe das "Hinzufügen des Standard-Tastaturlayouts als Touch-Tastaturoption" ausprobiert, das scheinbar keinen Effekt hatte.

Das Einstellen des automatischen Starts für OSK, wie ich es in Windows 7 früher getan habe, ist im besten Fall umständlich, da Sie es nicht minimieren können, ohne es an die verborgene Taskleiste zu verlieren, und es ist im Vergleich zur anderen Tastatur übergroß.

Gibt es eine andere Einstellung, die ich untersuchen muss, damit es funktioniert?

Update: Der Grund, warum die TextBox die Tastatur öffnet, ist, dass ihr ein Kennwort zugewiesen wurde. Eine normale TextBox bringt die Tastatur auch nicht nach vorne.

0
Ich denke, die Option "Tastatur zeigen ..." bewirkt, dass das Tastatursymbol in der Taskleiste angezeigt wird. Wenn es also ausgeblendet ist, hat dies keinen Unterschied. Schwer zu sagen in Ihrem Post, aber wenn Sie Zugriff auf den Quellcode haben, können Sie den Event-Handler einfügen, der die Touchscreen-ausführbare Datei jedes Mal startet, wenn ein Eingabefeld angeklickt wird. Ich habe das schon als Workaround gemacht. BrianC vor 8 Jahren 0
Führen Sie das Gerät immer im Tablet-Modus aus, hier sollte die Tastatur immer angezeigt werden magicandre1981 vor 8 Jahren 0
@ magicandre1981 Gleiche Erfahrung im Tablet-Modus. Rich Shealer vor 8 Jahren 0
@BrianC Ich habe Zugriff, aber ich versuchte zu vermeiden, die Quelle zu ändern. Ich glaube nicht, dass ich eine Wahl habe. Rich Shealer vor 8 Jahren 0
kannst du (github) eine kleine Demo-App bereitstellen (2 Eingänge, 1, wo OSK angezeigt wird und 1, wenn es nicht ist) Hast du das Problem gesehen? magicandre1981 vor 8 Jahren 0
@ magicandre1981 Es sieht so aus, als könnte die Antwort nicht sein. Siehe meine Bearbeitung im OP. Ich muss prüfen, ob die Taskleiste dem Benutzer angezeigt wird. Rich Shealer vor 8 Jahren 0

1 Antwort auf die Frage

1
Rich Shealer

Wenn ich mit dem Programm arbeite und weiter recherchiere, kann ich zusammenfassen, wo die Tastatur automatisch mit einem WinForm-Programm angezeigt wird.

  • TextBoxmit der PasswordCharEigenschaft festgelegt.
  • A ComboBoxmit der DropSownStyleEigenschaft auf DropDown.

Ich fand, dass es keine Möglichkeit gab, InputBoxdie Berührung zu nutzen. Am Ende erstellte ich ein benutzerdefiniertes Formular mit einer TextBox und fügte den Enter - und Leave - Ereignissen der TextBox.

Da dies nicht die Programmierseite ist, halte ich es kurz.

Ich verwenden, TabletDeviceCollectionum zu sehen, ob der Computer eine hatte TabletDevicemit einem Typevon TabletDeviceType.Touch.

Wenn ja, dann habe ich die Tastatur so gestartet:

Process.Start("C:\Program Files\Common Files\Microsoft Shared\ink\TabTip.exe") 

Um es zu schließen, rief ich die nicht verwaltete Win32Funktion FindWindow("IPTIP_Main_Window", "")an, um ein Handle zu erhalten, und rief dann ein anderes WIn32 an, um ihm eine Nachricht zu senden.SendMessage(handle, WM_SYSCOMMAND, SC_CLOSE, 0)

Weitere Informationen finden Sie in diesen Ausdrücken.