Comment Utiliser Windows Sur le Clavier à l'Écran en C#, WinForms
- VS 2010
- Développement d'Application 32 bits qui fonctionne sur 64 bits OS (Win7, Win8 - application de bureau)
- C#
- .NET 4.0
- WinForms
J'ai trouvé de nombreux threads sur le lancement de Windows sur le clavier à l'écran (osk.exe) à partir d'une application, mais je suis en cours d'exécution dans certains problèmes. Il semble être parce que je suis en cours d'exécution d'une application 32 bits sur un OS 64 bits. J'ai essayé le code posté par WooCaSh ici:
Clavier à l'écran en WinForms
Mais aucun des trois chemins différents pour moi. Pour le "sysnative" chemin d'accès, Processus.Démarrer "Impossible de trouver le chemin d'accès spécifié." Pour le system32 et osk.exe chemins, j'ai "impossible de démarrer le clavier à l'écran" dialogue d'erreur.
J'ai trouvé une solution de contournement possible ici, ce qui est un peu plus compliqué que ce que je cherchais (post par eryang): http://social.msdn.microsoft.com/Forums/en-US/netfx64bit/thread/10ebc62f-e6d7-4072-9fd1-ea3784a0966f/
- Est-il plus facile ou la manière correcte de le faire?
- J'espérais que l'exécution de mon application sur une tablette de lancer automatiquement le clavier à l'écran lorsque l'utilisateur sélectionne une zone de texte, mais pas de chance. Est-ce normal ou ai-je raté quelque chose? MODIFIER: Constaté que le clavier n'est pas lancé automatiquement dans Win8 quand en mode de Bureau (qui de mon appli est): http://www.bleepingcomputer.com/forums/t/480250/keyboard-does-not-pop-up-automatically/ Apparemment il fonctionne sur Win7 comprimés, mais je ne peux pas tester car je n'ai que Win8 tablettes ici.
Malheureusement, il doit être x86 pour certaines 3ème partie logiciel avec lequel il interagit.
Juste pour le test, je suis allé de l'avant et a changé de "AnyCPU". Le clavier ne voulait toujours pas se lancer sur mon Win7 64 bits de bureau, mais les lance sur le Win8 64 bits tablette. Des idées?
J'ai mis en place l'approche décrite [ici][1]. Il fonctionne sur Win7, trop. [1]: stackoverflow.com/questions/15183720/wpf-windows-8-tabtip-close
OriginalL'auteur Tara | 2013-03-21
Vous devez vous connecter pour publier un commentaire.
Je suis en train de lancer le "Clavier Tactile" par opposition au "Sur le Clavier à l'Écran" (qui est le clavier que je voulais sur Windows 8 en tout cas) avec:
Cela fonctionne sur mon Win7 et Win8, quel que soit mon application 32 bits sur un OS 64 bits. Cependant, j'ai toujours le problème de par programme la fermeture du clavier quand je suis fait. Le processus,
this.keyboardProc
, ne semble pas obtenir la poignée, et immédiatement a la propriétéHasExited = true
. Cela signifie que mes tentatives de fermer ou de le tuer échouer.En fonction de ce fil, si l'utilisateur ouvre manuellement le clavier (ou I du programme de lancement), le clavier ne sera pas fermer automatiquement/masquer lorsque le champ de texte perd le focus: Windows 8 - Comment faire pour faire disparaître le Clavier Tactile? j'ai essayé la solution de contournement de définir le focus à un bouton caché, mais depuis que j'ai lancé le clavier moi-même, il ne se ferme pas automatiquement.
A fonctionné pour moi sur Windows 10 tablette. Rien de tel en gardant un dinosaure vivant...
Veuillez noter que vous pourriez ne pas avoir la "Tablette PC Composants" fonctionnalités windows installé... si ce n'est allez dans le Panneau de configuration, Programmes et Fonctionnalités de Windows Activer ou désactiver la
Il semble que cette situation est peut-être nécessaire de Windows10 pour que cela fonctionne en Mode de Bureau:
Registry.SetValue("HKEY_CURRENT_USER\Software\Microsoft\TabletTip\1.7", "EnableDesktopModeAutoInvoke", 1);
OriginalL'auteur Tara
J'ai eu de la difficulté à refermer le clavier à l'écran. Vous pouvez démarrer le Clavier Tactile avec
et fermer tous les claviers avec
Pour quelque raison onScreenKeyboardProc.Kill() ou .Close() ne fonctionne pas.
OriginalL'auteur Panu Horsmalahti
Pour le clavier pour ouvrir automatiquement, les contrôles à mettre en œuvre une INTERFACE utilisateur de contrôle d'Automatisation de modèles, plus précisément ITextProvider/IValueProvider. C'est une nuisance, mais ça marche (et c'est d'une façon plus propre que le lancement de certains *.exe)
J'ai écrit une application d'exemple et d'un court article ici: http://blog.tombam.net/implementing-textbox-with-on-screen-touch-keyboard-part-1/
OriginalL'auteur tombam
Le clavier tactile tire parti de l'INTERFACE utilisateur de l'automatisation. Pour des raisons qui sont un mystère pour moi, le standard de Windows zone d'édition n'implémente pas l'INTERFACE utilisateur automatique, tandis que d'autres contrôles, comme la zone de liste déroulante, n'.
On peut utiliser de la mise en œuvre d'UI automation de
UIAutomationClient.dll
.Pour l'INTERFACE utilisateur de l'automatisation comme par magie injecté dans une application, la classe de l'initialiseur de l'assemblée classe interne
UiaCoreApi
être déclenchée.Peut atteindre que par exemple en appelant apparente non-op:
Une autre façon est de mettre en place l'automatisation de l'INTERFACE utilisateur de manière explicite. Pour mettre en œuvre la
ITextProvider
/IValueProvider
interfaces pour le contrôle d'entrée.De lier la mise en œuvre des interfaces pour le contrôle, poignée
WM_GETOBJECT
de la fenêtre de message aveclParam
=RootObjectId
.Pour un exemple de mise en œuvre, voir
Mais il est intéressant de noter, contrôles, pour ce qui touche clavier fonctionne out-of-the-box (comme la zone de liste modifiable ou le mot de passe de boîte d'édition, voir la réponse), ne pas mettre en œuvre la
WM_GETOBJECT
/RootObjectId
. Il doit y avoir un autre machinerie derrière eux.Le plus commun de "solution" à ce problème, explicitement apparaitre le clavier en exécutant la
TabTip.exe
ouosk.exe
, est difficilement acceptable.Si rien d'autre, ensuite parce qu'il n'y a aucun moyen propre pour masquer le clavier ouvert par l'exécution de l'
TabTip.exe
(solutions comprennent des hacks comme tuer le processus ou l'envoi d' Esc clé).Et en fait ci-dessus hack ne semble pas fonctionner dans Windows 10 Anniversaire de mise à Jour: Afficher le clavier tactile (TabTip.exe dans Windows 10 édition Anniversaire.
OriginalL'auteur Martin Prikryl
De départ TabTip.exe ne fonctionne plus dans Widnows 10 Édition Anniversaire. J'ai découvert un sans-papiers COM interface pour contrôler le clavier tactile. Vérifier le code ici https://stackoverflow.com/a/40921638/332528
OriginalL'auteur torvin