Page 1 sur 1
[R] Détecter la présence d'un clavier sous Windows 8
Posté : lun. 08 déc. 2014 12:39
par Niverton
Bonjour,
J'ai récemment acheté une tablette Windows 8 avec un dock clavier (et j'en suis très content !). Le truc c'est que le clavier virtuel de Windows est toujours activé, même quand la tablette est dockée, du coup le clavier virtuel s'interpose à chaque fois que je clique sur un champ, et il occupe la moitié de l'écran. J'ai trouvé comment le désactiver, mais c'est fastidieux et comme je suis un gros flemmard et que j'aime bien bricoler, j'aimerais qu'AutoIt le fasse pour moi ! J'ai donc cherché un moyen de détecter la présence du dock.
Comme Microsoft pense à tout c'est possible de savoir si un
clavier physique est présent via la bibliothèque .Net, l'inconvénient c'est que le je ne parle pas le C#, et qu'AutoIt me semble plus indiqué pour désactiver le clavier virtuel (contrôle de la souris). Après recherche je n'ai pas trouvé de moyen "d'intégrer" .Net à Autoit (mais l'inverse est apparemment possible).
Merci d'avance !
Re: [..] Détecter la présence d'un clavier sous Windows 8
Posté : lun. 08 déc. 2014 12:51
par Utilisateur 3309 supprimé
Bonjour, j'ai une tablette (sous android) avec un dock clavier, le système ne m'affiche jamais de clavier virtuel lorsque la tablette est sur le dock...ma tablette a 3 ans, ca me semble un peu incroyable que Windows 8, bien plus récent, ne sache pas nativement gérer la présence/absence du clavier...
Re: [..] Détecter la présence d'un clavier sous Windows 8
Posté : lun. 08 déc. 2014 13:07
par Utilisateur 3309 supprimé
j'ai trouvé ceci :
Just go to the start screen, and then to Control Panel. In the search box for Control Panel, type Administrative Tools, or click it if you see it already. Scroll down to the Services shortcut and select that.
If you scroll down in the list of services to the 'T' area, you should see Touch Keyboard and Handwriting Service, or words to that effect. It is running, and on Automatic start type.
Stop the service, then go into Properties and switch the startup type to Disabled.
Donc il faudrait arrêter le service ou le démarrer suivant les besoins.
Code : Tout sélectionner
net stop TabletInputService <-- pour démarrer le service en question
net start TabletInputService <-- pour l'arrêter
2 fichiers .bat à faire, un pour lancer et un pour arrêter.
Re: [..] Détecter la présence d'un clavier sous Windows 8
Posté : lun. 08 déc. 2014 15:38
par Niverton
Woah super, merci ! Je n'avais pas trouvé comment faire via une ligne de commande, ça va me simplifier la tache

Cependant ça ne permet pas d'automatiser entièrement la tâche, enfin si je ne trouve pas de solution, une icône dans la barre des taches qui toggle le clavier virtuel sur simple clique devrait suffire.
Il est vrai qu'on pourrait espérer que W8 gère ça tout seul, mais c'est un détail mineur, et une tablette convertible mini pc portable c'est super pour les loisirs et les cours
Re: [..] Détecter la présence d'un clavier sous Windows 8
Posté : lun. 08 déc. 2014 15:48
par Y01
Je pense que ce que tu cherche à faire ne se trouve pas si loin que ça de ce
sujet.
Ton dock clavier étant un périphérique que tu branche
AutoIt permet aussi de
démarrer et arrêter un service, tu peux donc tout avoir d'un coup et sans batch.
Re: [..] Détecter la présence d'un clavier sous Windows 8
Posté : lun. 08 déc. 2014 17:21
par TommyDDR
Cela devrait vous indiquer si un clavier est branché ou non.
► Afficher le textecode
Code : Tout sélectionner
Func HasKeyboard()
Local $colItems, $objWMIService, $objItem, $i = 1
Local $hasKeyboard = False
$objWMIService = ObjGet("winmgmts:\\localhost\root\CIMV2")
If(IsObj($objWMIService)) Then
$colItems = $objWMIService.ExecQuery("SELECT Name, Description FROM Win32_Keyboard", "WQL", 0x30)
If IsObj($colItems) Then
For $objItem In $colItems
$hasKeyboard = True
ExitLoop
Next
EndIf
EndIf
Return $hasKeyboard
EndFunc
Re: [..] Détecter la présence d'un clavier sous Windows 8
Posté : lun. 08 déc. 2014 21:02
par Niverton
J'ai fait des recherches sur WMI, mais je ne sais pas trop quoi chercher, ça rend les choses difficiles :/
TommyDDR a écrit :Cela devrait vous indiquer si un clavier est branché ou non.
► Afficher le textecode
Code : Tout sélectionner
Func HasKeyboard()
Local $colItems, $objWMIService, $objItem, $i = 1
Local $hasKeyboard = False
$objWMIService = ObjGet("winmgmts:\\localhost\root\CIMV2")
If(IsObj($objWMIService)) Then
$colItems = $objWMIService.ExecQuery("SELECT Name, Description FROM Win32_Keyboard", "WQL", 0x30)
If IsObj($colItems) Then
For $objItem In $colItems
$hasKeyboard = True
ExitLoop
Next
EndIf
EndIf
Return $hasKeyboard
EndFunc
Merci de votre aide, cependant cette fonction retourne True sur la tablette, clavier présent ou non
Re: [..] Détecter la présence d'un clavier sous Windows 8
Posté : lun. 08 déc. 2014 21:52
par jguinch
J'ai pas de quoi tester, mais tu devrais pouvoir t'en sortir avec
WM_SETTINGCHANGE, pour lequel
lParam peut recevoir les messages
ConvertibleSlateMode et
SystemDockMode.
Sinon, pour WMI, tu pourrais essayer de compter le nombre de claviers :
► Afficher le texte
Code : Tout sélectionner
$iCount = 0
$objWMIService = ObjGet("winmgmts:\\localhost\root\CIMV2")
If IsObj($objWMIService) Then
$colItems = $objWMIService.ExecQuery("SELECT Name, Description FROM Win32_Keyboard", "WQL", 0x30)
If IsObj($colItems) Then
For $objItem In $colItems
$iCount += 1
Next
EndIf
EndIf
ConsoleWrite("nombre de claviers : " & $iCount)
Re: [..] Détecter la présence d'un clavier sous Windows 8
Posté : mar. 09 déc. 2014 08:19
par Niverton
jguinch a écrit :Sinon, pour WMI, tu pourrais essayer de compter le nombre de claviers :
► Afficher le texte
Code : Tout sélectionner
$iCount = 0
$objWMIService = ObjGet("winmgmts:\\localhost\root\CIMV2")
If IsObj($objWMIService) Then
$colItems = $objWMIService.ExecQuery("SELECT Name, Description FROM Win32_Keyboard", "WQL", 0x30)
If IsObj($colItems) Then
For $objItem In $colItems
$iCount += 1
Next
EndIf
EndIf
ConsoleWrite("nombre de claviers : " & $iCount)
Ca marche nickel ! Merci beaucoup, Windows doit compter son clavier virtuel comme un vrai clavier, du coup il compte deux claviers quand la tablette est dock, et un seul sinon. Je me met au boulot pour le script
Merci à tous pour votre aide !
Re: [..] Détecter la présence d'un clavier sous Windows 8
Posté : mar. 09 déc. 2014 08:30
par jguinch
N'oublie pas de passe le sujet en [R] si c'est OK.
