IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Windows Discussion :

Récupérer la langue du clavier en cours


Sujet :

Windows

  1. #1
    Expert confirmé Avatar de fregolo52
    Homme Profil pro
    Développeur C
    Inscrit en
    Août 2004
    Messages
    2 364
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur C

    Informations forums :
    Inscription : Août 2004
    Messages : 2 364
    Points : 5 378
    Points
    5 378
    Par défaut Récupérer la langue du clavier en cours
    Bonjour,

    Mon but est de simuler le clavier (fonction SendInput), donc si je dois simuler un chiffre, je ne dois pas faire la même chose sur je suis en FR (Shift + chiffre) ou EN (chiffre seul).

    Ca fait un moment que je galère pour trouver comment récupérer le clavier en cours d'utilisation. J'ai regardé la rubrique concernant le multi langues de la MSDN, mais ça ne parle pas des claviers. J'ai un peu regardé dans la base de registre, je vois dans choses mais quand change change de clavier, aucun valeur n'est modifiée, donc je ne suis pas au bon endroit .

    Avez-vous une idée ?

    Merci.

  2. #2
    Expert éminent sénior
    Avatar de Mat.M
    Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2006
    Messages
    8 361
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 8 361
    Points : 20 385
    Points
    20 385
    Par défaut
    En 5 minutes j'ai trouvé dans le MSDN :as-tu essayé avec
    GetKeyboardLayout ou LoadKeyboardLayout ?

  3. #3
    Expert confirmé Avatar de fregolo52
    Homme Profil pro
    Développeur C
    Inscrit en
    Août 2004
    Messages
    2 364
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur C

    Informations forums :
    Inscription : Août 2004
    Messages : 2 364
    Points : 5 378
    Points
    5 378
    Par défaut
    Merci pour l'info, j'avance doucement.

    J'ai déjà essayer qq truc, mais j'ai l'impression que la réalité n'est pas tout à fait la description de la MSDN surtout avec GetKeyboardLayoutName qui devrait retourner le clavier en cours d'utilisation du système (d'après la MSDN) mais c'est pas du tout ça.

    Pour avoir le moins de souci possible, j'essaie de passer temporairement en clavier US :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    	TCHAR szLayout[50];
    	GetKeyboardLayoutName(szLayout);
    	TRACE("Set before : %s\n", szLayout);
    	hCurrentKB = LoadKeyboardLayout("0x0409", KLF_SETFORPROCESS);
    	if (hCurrentKB == NULL)
    		return -1;
    
    	hOldKB = ActivateKeyboardLayout(hCurrentKB, 0);
    
    	GetKeyboardLayoutName(szLayout);
    	TRACE("Set after : %s\n", szLayout);
    Ce qui donne :
    Set before : 0000040C
    Set after : 00000000

    avec hCurrentKB = 0x4090409
    et hOldKB = 0x40c040c

    Je ne comprends pas pourquoi ActivateKeyboardLayout me fait passer en "Neutral".

  4. #4
    Expert éminent sénior
    Avatar de Mat.M
    Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2006
    Messages
    8 361
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 8 361
    Points : 20 385
    Points
    20 385
    Par défaut
    euuh je ne comprends pas mais avec HKL=0x04090409 on est bien en clavier US.
    J'ai fait le test mon système est US

  5. #5
    Expert confirmé Avatar de fregolo52
    Homme Profil pro
    Développeur C
    Inscrit en
    Août 2004
    Messages
    2 364
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur C

    Informations forums :
    Inscription : Août 2004
    Messages : 2 364
    Points : 5 378
    Points
    5 378
    Par défaut
    J'ai trouvé mon problème.
    Vu que mon appli fait l'aquisition de données et que l'appli active de Windows les affichent, il faut que le clavier soit le même pour les 2 applis, sinon ça fait n'importe quoi.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Win32] Récupérer un appui touche clavier
    Par elsargento dans le forum MFC
    Réponses: 19
    Dernier message: 06/05/2006, 11h05
  2. Réponses: 2
    Dernier message: 01/12/2005, 12h24
  3. Récupérer la langue d'access en VBA
    Par nonaparus dans le forum Access
    Réponses: 2
    Dernier message: 02/11/2005, 17h45
  4. Récupérer la touche du clavier pressée
    Par deubal dans le forum Débuter
    Réponses: 2
    Dernier message: 25/10/2005, 16h58
  5. Réponses: 2
    Dernier message: 29/01/2004, 11h05

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo