tastaturlayout aendern



  • hallo,

    ich moechte gerne das systemweite tastaturlayout veraendern. also nicht nur fuer die app, die gerade den fokus hat oder die app, die ich programmiere. in vb.net konnte ich schon code finden, der auch laeuft, allerdings keinen in c#.
    kann mir einer sagen, welche funktionen ich dazu benutzen muss und wo diese dann normalerweise zu finden bzw. dokumentiert sind?

    //vb.net-code
    
    Dim TastaEn As New CultureInfo(&H809)
    InputLanguage.CurrentInputLanguage = InputLanguage.FromCulture(TastaEn)
    

    Esco



  • so, hab' mich heut nochma drangesetzt und versucht das zeugs auf C# umzuschreiben und siehe da, habs geschafft (komme von VC++, da gibts keine assemblies...). so nun kommt dies hier raus:

    CultureInfo enTLayout = new CultureInfo(0x809);
    CultureInfo deTLayout = new CultureInfo(0x407);
    InputLanguage.CurrentInputLanguage = InputLanguage.FromCulture(enTLayout);
    

    das tut jezz halbwegs. aber mittels CurrentInputLanguage kann man wohl nur die inputlanguage der laufenden app aendern und nicht die language des systems, wie man das beispielsweise ueber die 'eingabegebietsschemaleiste' (klasse wort) machen kann. weiss einer, wie das geht?

    esco



  • sodele, falls es doch noch den ein oder anderen googler noch interessieren sollte, nach einem weiteren tag suchen und ausbessern der syntaxfehler auf microsoft.com 😃 habe ich nun folgende loesung (hier: xp sp2):

    REM ueber die commandline oder per shellexecute abzusetzen:
    Rundll32.exe shell32 Control_RunDLL intl.cpl,,/f:"c:\regopts.txt"
    

    die datei c:\regopts.txt fuer deutsches tastaturlayout sieht dabei folgendermasen aus:

    [RegionalSettings]
    InputLocale="0407:00000407"
    InputLocale_DefaultUser="0407:00000407"
    SystemLocale="0407

    Esco


Anmelden zum Antworten