begin process at 2008 05 13 07:44:26
1 170 868 membres
63 nouveaux aujourd'hui
13 959 membres club

Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum.
Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

GETKEYBOARDLANGUAGE : CONNAÎTRE LA LANGUE DU CLAVIER DE L'UTILISATEUR


Information sur la source

Catégorie :Souris, Clavier, etc. Classé sous : clavier, langue Niveau : Débutant Date de création : 03/04/2004 Date de mise à jour : 03/04/2004 21:53:51 Vu / téléchargé: 6 569 / 214

Note :
Aucune note

Commentaire sur cette source (4)
Ajouter un commentaire et/ou une note


Description

Ces deux fonctions sont utiles pour savoir dans quelle langue est paramétré le clavier de l'utilisateur final de notre programme.
Ce code peut être adapté pour déterminer si un clavier est "azerty" ou "qwerty", mais attention, un clavier "qwerty" n'est pas forcément un clavier anglophone (mais on déborde du cadre que je me suis fixé).
Voilà, c'est aussi une incitation à voyager, ne trouvez-vous pas ?
Quand on pense que dans le monde, quelque part, quelqu'un dont on ne sait même pas que sa langue existe, bouffe du Microsoft, hein, ça rend songeur...
Ce qui est frustrant, c'est que je ne dispose que d'un clavier français standard, et que je n'ai pu tester chaque possibilité.
Bien sûr, j'aurais pu le faire en changeant le paramétrage de mon clavier pour chaque cas, mais je n'ai pas eu ce courage. Je le ferai pourtant, mais plus tard, et ce sera un prétexte pour envoyer un code à ce sujet (s'il n'existe pas déjà sur Delphifr).
Un TEdit et un TButton suffisent pour tester le code, sinon tout est dans le zip, avec quelques commentaires.

Source

  • function HexToInt(Hex: String): Integer;
  • var
  • z: Integer;
  • x: Integer;
  • v: Integer;
  • p: Integer;
  • b: Variant;
  • h: Integer;
  • n: Integer;
  • begin
  • Hex := UpperCase(Hex);
  • x := Length(Hex);
  • v := x;
  • p := 0;
  • n := 0;
  • b := 0;
  • while v >= 1 do
  • begin
  • z := Ord(Hex[v]);
  • case z of
  • 48: h := 0;
  • 49: h := 1;
  • 50: h := 2;
  • 51: h := 3;
  • 52: h := 4;
  • 53: h := 5;
  • 54: h := 6;
  • 55: h := 7;
  • 56: h := 8;
  • 57: h := 9;
  • 65: h := 10;
  • 66: h := 11;
  • 67: h := 12;
  • 68: h := 13;
  • 69: h := 14;
  • 70: h := 15;
  • end;
  • b := exp(p * ln(16)) * h;
  • p := p + 1;
  • v := v - 1;
  • n := n + b;
  • end;
  • Result := n;
  • end;
  • function GetKeyBoardLanguage: String; // Retourne le langage du clavier
  • var
  • P: PChar;
  • begin
  • Result := 'Indéterminé';
  • if GetKeyboardLayoutName(P) then
  • Case HexToInt(P) of
  • $00000436: Result := 'Afrikaans';
  • $0000041c: Result := 'Albanian';
  • $00000401: Result := 'Arabic Saudi Arabia';
  • $00000801: Result := 'Arabic Iraq';
  • $00000c01: Result := 'Arabic Egypt';
  • $00001001: Result := 'Arabic Libya';
  • $00001401: Result := 'Arabic Algeria';
  • $00001801: Result := 'Arabic Morocco';
  • $00001c01: Result := 'Arabic Tunisia';
  • $00002001: Result := 'Arabic Oman';
  • $00002401: Result := 'Arabic Yemen';
  • $00002801: Result := 'Arabic Syria';
  • $00002c01: Result := 'Arabic Jordan';
  • $00003001: Result := 'Arabic Lebanon';
  • $00003401: Result := 'Arabic Kuwait';
  • $00003801: Result := 'Arabic UAE';
  • $00003c01: Result := 'Arabic Bahrain';
  • $00004001: Result := 'Arabic Qatar';
  • $0000042b: Result := 'Armenian';
  • $0000042c: Result := 'Azeri Latin';
  • $0000082c: Result := 'Azeri Cyrillic';
  • $0000042d: Result := 'Basque';
  • $00000423: Result := 'Belarusian';
  • $00000402: Result := 'Bulgarian';
  • $00000403: Result := 'Catalan';
  • $00000404: Result := 'Chinese Taiwan';
  • $00000804: Result := 'Chinese PRC';
  • $00000c04: Result := 'Chinese Hong Kong';
  • $00001004: Result := 'Chinese Singapore';
  • $00001404: Result := 'Chinese Macau';
  • $0000041a: Result := 'Croatian';
  • $00000405: Result := 'Czech';
  • $00000406: Result := 'Danish';
  • $00000465: Result := 'Divehi';
  • $00000413: Result := 'Dutch Standard';
  • $00000813: Result := 'Dutch Belgian';
  • $00000409: Result := 'English United States';
  • $00000809: Result := 'English United Kingdom';
  • $00000c09: Result := 'English Australian';
  • $00001009: Result := 'English Canadian';
  • $00001409: Result := 'English New Zealand';
  • $00001809: Result := 'English Ireland';
  • $00001c09: Result := 'English South Africa';
  • $00002009: Result := 'English Jamaica';
  • $00002409: Result := 'English Caribbean';
  • $00002809: Result := 'English Belize';
  • $00002c09: Result := 'English Trinidad';
  • $00003009: Result := 'English Zimbabwe';
  • $00003409: Result := 'English Philippines';
  • $00000425: Result := 'Estonian';
  • $00000438: Result := 'Faeroese';
  • $00000429: Result := 'Farsi';
  • $0000040b: Result := 'Finnish';
  • $0000040c: Result := 'French Standard';
  • $0000080c: Result := 'French Belgian';
  • $00000c0c: Result := 'French Canadian';
  • $0000100c: Result := 'French Swiss';
  • $0000140c: Result := 'French Luxembourg';
  • $0000180c: Result := 'French Monaco';
  • $00000437: Result := 'Georgian';
  • $00000456: Result := 'Galician';
  • $00000407: Result := 'German Standard';
  • $00000807: Result := 'German Swiss';
  • $00000c07: Result := 'German Austrian';
  • $00001007: Result := 'German Luxembourg';
  • $00001407: Result := 'German Liechtenstein';
  • $00000408: Result := 'Greek';
  • $00000447: Result := 'Gujarati';
  • $0000040d: Result := 'Hebrew';
  • $00000439: Result := 'Hindi';
  • $0000040e: Result := 'Hungarian';
  • $0000040f: Result := 'Icelandic';
  • $00000421: Result := 'Indonesian';
  • $00000410: Result := 'Italian Standard';
  • $00000810: Result := 'Italian Swiss';
  • $00000411: Result := 'Japanese';
  • $0000044b: Result := 'Kannada';
  • $0000043f: Result := 'Kazakh';
  • $00000457: Result := 'Konkani';
  • $00000412: Result := 'Korean';
  • $00000440: Result := 'Kyrgyz';
  • $00000426: Result := 'Latvian';
  • $00000427: Result := 'Lithuanian';
  • $0000042f: Result := 'Macedonian';
  • $0000043e: Result := 'Malay Malaysia';
  • $0000083e: Result := 'Malay Brunei Darussalam';
  • $0000044e: Result := 'Marathi';
  • $00000450: Result := 'Mongolian';
  • $00000414: Result := 'Norwegian Bokmal';
  • $00000814: Result := 'Norwegian Nynorsk';
  • $00000415: Result := 'Polish';
  • $00000416: Result := 'Portuguese Brazilian';
  • $00000816: Result := 'Portuguese Standard';
  • $00000446: Result := 'Punjabi';
  • $00000418: Result := 'Romanian';
  • $00000419: Result := 'Russian';
  • $0000044f: Result := 'Sanskrit';
  • $0000081a: Result := 'Serbian Latin';
  • $00000c1a: Result := 'Serbian Cyrillic';
  • $0000041b: Result := 'Slovak';
  • $00000424: Result := 'Slovenian';
  • $0000040a: Result := 'Spanish Traditional Sort';
  • $0000080a: Result := 'Spanish Mexican';
  • $00000c0a: Result := 'Spanish Modern Sort';
  • $0000100a: Result := 'Spanish Guatemala';
  • $0000140a: Result := 'Spanish Costa_Rica';
  • $0000180a: Result := 'Spanish Panama';
  • $00001c0a: Result := 'Spanish Dominican Republic';
  • $0000200a: Result := 'Spanish Venezuela';
  • $0000240a: Result := 'Spanish Colombia';
  • $0000280a: Result := 'Spanish Peru';
  • $00002c0a: Result := 'Spanish Argentina';
  • $0000300a: Result := 'Spanish Ecuador';
  • $0000340a: Result := 'Spanish Chile';
  • $0000380a: Result := 'Spanish Uruguay';
  • $00003c0a: Result := 'Spanish Paraguay';
  • $0000400a: Result := 'Spanish Bolivia';
  • $0000440a: Result := 'Spanish El Salvador';
  • $0000480a: Result := 'Spanish Honduras';
  • $00004c0a: Result := 'Spanish Nicaragua';
  • $0000500a: Result := 'Spanish Puerto Rico';
  • $00000441: Result := 'Swahili';
  • $0000041d: Result := 'Swedish';
  • $0000081d: Result := 'Swedish Finland';
  • $0000045a: Result := 'Syriac';
  • $00000449: Result := 'Tamil';
  • $00000444: Result := 'Tatar';
  • $0000044a: Result := 'Telugu';
  • $0000041e: Result := 'Thai';
  • $0000041f: Result := 'Turkish';
  • $00000422: Result := 'Ukrainian';
  • $00000420: Result := 'Urdu';
  • $00000443: Result := 'Uzbek Latin';
  • $00000843: Result := 'Uzbek Cyrillic';
  • $0000042a: Result := 'Vietnamese';
  • end;
  • end;
  • procedure TForm1.Button1Click(Sender: TObject);
  • begin
  • Edit1.Text := GetKeyBoardLanguage;
  • end;
function HexToInt(Hex: String): Integer;
var
  z: Integer;
  x: Integer;
  v: Integer;
  p: Integer;
  b: Variant;
  h: Integer;
  n: Integer;
begin
  Hex := UpperCase(Hex);
  x := Length(Hex);
  v := x;
  p := 0;
  n := 0;
  b := 0;
  while v >= 1 do
  begin
    z := Ord(Hex[v]);
    case z of
      48: h := 0;
      49: h := 1;
      50: h := 2;
      51: h := 3;
      52: h := 4;
      53: h := 5;
      54: h := 6;
      55: h := 7;
      56: h := 8;
      57: h := 9;
      65: h := 10;
      66: h := 11;
      67: h := 12;
      68: h := 13;
      69: h := 14;
      70: h := 15;
    end;
    b := exp(p * ln(16)) * h;
    p := p + 1;               
    v := v - 1;
    n := n + b;
  end;
  Result := n;
end;

function GetKeyBoardLanguage: String;   // Retourne le langage du clavier
var
  P: PChar;
begin
  Result := 'Indéterminé';
  if GetKeyboardLayoutName(P) then                    
  Case HexToInt(P) of
    $00000436: Result := 'Afrikaans';
    $0000041c: Result := 'Albanian';
    $00000401: Result := 'Arabic Saudi Arabia';
    $00000801: Result := 'Arabic Iraq';
    $00000c01: Result := 'Arabic Egypt';
    $00001001: Result := 'Arabic Libya';
    $00001401: Result := 'Arabic Algeria';
    $00001801: Result := 'Arabic Morocco';
    $00001c01: Result := 'Arabic Tunisia';
    $00002001: Result := 'Arabic Oman';
    $00002401: Result := 'Arabic Yemen';
    $00002801: Result := 'Arabic Syria';
    $00002c01: Result := 'Arabic Jordan';
    $00003001: Result := 'Arabic Lebanon';
    $00003401: Result := 'Arabic Kuwait';
    $00003801: Result := 'Arabic UAE';
    $00003c01: Result := 'Arabic Bahrain';
    $00004001: Result := 'Arabic Qatar';
    $0000042b: Result := 'Armenian';
    $0000042c: Result := 'Azeri Latin';
    $0000082c: Result := 'Azeri Cyrillic';
    $0000042d: Result := 'Basque';
    $00000423: Result := 'Belarusian';
    $00000402: Result := 'Bulgarian';
    $00000403: Result := 'Catalan';
    $00000404: Result := 'Chinese Taiwan';
    $00000804: Result := 'Chinese PRC';
    $00000c04: Result := 'Chinese Hong Kong';
    $00001004: Result := 'Chinese Singapore';
    $00001404: Result := 'Chinese Macau';
    $0000041a: Result := 'Croatian';
    $00000405: Result := 'Czech';
    $00000406: Result := 'Danish';
    $00000465: Result := 'Divehi';
    $00000413: Result := 'Dutch Standard';
    $00000813: Result := 'Dutch Belgian';
    $00000409: Result := 'English United States';
    $00000809: Result := 'English United Kingdom';
    $00000c09: Result := 'English Australian';
    $00001009: Result := 'English Canadian';
    $00001409: Result := 'English New Zealand';
    $00001809: Result := 'English Ireland';
    $00001c09: Result := 'English South Africa';
    $00002009: Result := 'English Jamaica';
    $00002409: Result := 'English Caribbean';
    $00002809: Result := 'English Belize';
    $00002c09: Result := 'English Trinidad';
    $00003009: Result := 'English Zimbabwe';
    $00003409: Result := 'English Philippines';
    $00000425: Result := 'Estonian';
    $00000438: Result := 'Faeroese';
    $00000429: Result := 'Farsi';
    $0000040b: Result := 'Finnish';
    $0000040c: Result := 'French Standard';
    $0000080c: Result := 'French Belgian';
    $00000c0c: Result := 'French Canadian';
    $0000100c: Result := 'French Swiss';
    $0000140c: Result := 'French Luxembourg';
    $0000180c: Result := 'French Monaco';
    $00000437: Result := 'Georgian';
    $00000456: Result := 'Galician';
    $00000407: Result := 'German Standard';
    $00000807: Result := 'German Swiss';
    $00000c07: Result := 'German Austrian';
    $00001007: Result := 'German Luxembourg';
    $00001407: Result := 'German Liechtenstein';
    $00000408: Result := 'Greek';
    $00000447: Result := 'Gujarati';
    $0000040d: Result := 'Hebrew';
    $00000439: Result := 'Hindi';
    $0000040e: Result := 'Hungarian';
    $0000040f: Result := 'Icelandic';
    $00000421: Result := 'Indonesian';
    $00000410: Result := 'Italian Standard';
    $00000810: Result := 'Italian Swiss';
    $00000411: Result := 'Japanese';
    $0000044b: Result := 'Kannada';
    $0000043f: Result := 'Kazakh';
    $00000457: Result := 'Konkani';
    $00000412: Result := 'Korean';
    $00000440: Result := 'Kyrgyz';
    $00000426: Result := 'Latvian';
    $00000427: Result := 'Lithuanian';
    $0000042f: Result := 'Macedonian';
    $0000043e: Result := 'Malay Malaysia';
    $0000083e: Result := 'Malay Brunei Darussalam';
    $0000044e: Result := 'Marathi';
    $00000450: Result := 'Mongolian';
    $00000414: Result := 'Norwegian Bokmal';
    $00000814: Result := 'Norwegian Nynorsk';
    $00000415: Result := 'Polish';
    $00000416: Result := 'Portuguese Brazilian';
    $00000816: Result := 'Portuguese Standard';
    $00000446: Result := 'Punjabi';
    $00000418: Result := 'Romanian';
    $00000419: Result := 'Russian';
    $0000044f: Result := 'Sanskrit';
    $0000081a: Result := 'Serbian Latin';
    $00000c1a: Result := 'Serbian Cyrillic';
    $0000041b: Result := 'Slovak';
    $00000424: Result := 'Slovenian';
    $0000040a: Result := 'Spanish Traditional Sort';
    $0000080a: Result := 'Spanish Mexican';
    $00000c0a: Result := 'Spanish Modern Sort';
    $0000100a: Result := 'Spanish Guatemala';
    $0000140a: Result := 'Spanish Costa_Rica';
    $0000180a: Result := 'Spanish Panama';
    $00001c0a: Result := 'Spanish Dominican Republic';
    $0000200a: Result := 'Spanish Venezuela';
    $0000240a: Result := 'Spanish Colombia';
    $0000280a: Result := 'Spanish Peru';
    $00002c0a: Result := 'Spanish Argentina';
    $0000300a: Result := 'Spanish Ecuador';
    $0000340a: Result := 'Spanish Chile';
    $0000380a: Result := 'Spanish Uruguay';
    $00003c0a: Result := 'Spanish Paraguay';
    $0000400a: Result := 'Spanish Bolivia';
    $0000440a: Result := 'Spanish El Salvador';
    $0000480a: Result := 'Spanish Honduras';
    $00004c0a: Result := 'Spanish Nicaragua';
    $0000500a: Result := 'Spanish Puerto Rico';
    $00000441: Result := 'Swahili';
    $0000041d: Result := 'Swedish';
    $0000081d: Result := 'Swedish Finland';
    $0000045a: Result := 'Syriac';
    $00000449: Result := 'Tamil';
    $00000444: Result := 'Tatar';
    $0000044a: Result := 'Telugu';
    $0000041e: Result := 'Thai';
    $0000041f: Result := 'Turkish';
    $00000422: Result := 'Ukrainian';
    $00000420: Result := 'Urdu';
    $00000443: Result := 'Uzbek Latin';
    $00000843: Result := 'Uzbek Cyrillic';
    $0000042a: Result := 'Vietnamese';
  end;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  Edit1.Text := GetKeyBoardLanguage;
end;

Conclusion

Compilable dès Delphi 4.
Ceux qui ont un clavier autre que Français standard pourraient-ils nous confirmer que le code fonctionne correctement ?
Soit ici, soit en me passant un message sur le site.
Pour les "Membres Club", vous pouvez télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip

  • signaler à un administrateur
    Commentaire de Delphiprog le 03/04/2004 23:04:09 administrateur CS

    Quel courage d'avoir tapé tout cela et d'avoir réécrit une fonction convertissant une chaine composée de caractères en son équivalent décimal alors que la fonction HexToBin existe depuis Delphi 1 (à vérifier).

    Pour connaitre les langues installées ou utilisées, le code source suivant s'appuie sur les API fournies par Windows : http://www.swissdelphicenter.ch/torry/showcode.php?id=1471

    En plus, il permet de basculer la langue du clavier à partir d'une application Delphi dis donc !
    Le tout en si peu de code que tu vas regretter d'avoir loupé des heures de sommeil. Déjà que le week-end dernier on a dormi une heure de moins...;o)

  • signaler à un administrateur
    Commentaire de japee le 04/04/2004 00:07:00 administrateur CS

    Oh la la... je me sens pas bien...
    Je vérifie tout ça, Delphiprog, et je réagirai plus tard >:(
    Sinon, les commentaires dans le zip peuvent toujours être utiles... j'espère... à titre documentaire... sob (sanglots)
    Je me suis bien amusé quand même, quoi qu'il en soit :)
    Pfff ce décalage horaire, à qui le dis-tu ;)

  • signaler à un administrateur
    Commentaire de ville007 le 10/11/2005 22:32:00

    c bon
    mais nous cherchons comment basculer d'une langue à une autre sans passer par le clavier (exp si j'ai 02 edit l'un je vais ecrir en arabe et l'autre en france ) j'aimrai bien quand je passe à edit en arabe le clavien se mais derectement en arabe et si je passe à edit 2 le clavier passe en francais et vis vi
    rca

  • signaler à un administrateur
    Commentaire de ottolicos le 23/07/2007 19:28:24

    bonjour je veux savoir si tous ces codes existe déjà en php. Puisque j'ai les mêmes problems mais avec php.
    Merci d'avance.

Ajouter un commentaire

Appels d'offres

Pub



CalendriCode

Mai 2008
LMMJVSD
   1234
567891011
12131415161718
19202122232425
262728293031 

VS Express FR Gratuit !

VS Express en français et 100% gratuit !

Téléchargements

Logiciels à télécharger sur le même thème :

Boutique

Boutique de goodies CodeS-SourceS