Aktualisieren Sie die Sprachleiste in Windows Vista / 7 programmgesteuert

2107
weberik

Ich versuche, die Sprachleiste (den Sprachumschalter im Systray, der bei mehreren installierten Eingabesprachen erscheint) für unsere Benutzer zu konfigurieren.

language bar

Ich kann unter Verwendung von regkeys unter HKCU problemlos neue Sprachen hinzufügen. Das Problem ist jedoch, dass der Benutzer seinen Computer neu anmelden oder seinen Computer neu starten muss, um den Effekt zu sehen.

Die Tasten, die ich verwende (ich schreibe sie mit einem aktiven Setup), befinden sich in "HKEY_CURRENT_USER \ Keyboard Layout \ Preload". Unter dieser Taste befinden sich Name / Werte des Typs REG_SZ.

Normalerweise gibt es bereits Tasten wie "1" = "0000407" "2" = "0000409". Dies bedeutet, dass der Benutzer deutsches und englisches Tastaturlayout installiert hat. Wenn ich hinzufügen möchte, sagen wir italienisch, würde ich die Taste "3" hinzufügen. = "0000410". Nach dem nächsten Abmelden / Anmelden ist die Änderung für den Benutzer sichtbar.

Jetzt habe ich bereits versucht, verschiedene Windows-Nachrichten zu senden, wie beispielsweise WM_SETTINGCHANGE oder den Befehl "RUNDLL32.EXE user32.dll, UpdatePerUserSystemParameters". aber noch kein nützliches Ergebnis.

Ich habe keine Ideen mehr, Hunderte von Benutzern würden sich abmelden / logon machen wäre nicht so toll: /

ich dachte auch daran, mouseclicks zu automatisieren (zB mit autoit), aber das macht in der regel mehr probleme, als es gut tut.

4
Haben Sie AutoIt ausprobiert (http://www.autoitscript.com/site/autoit/)? magicandre1981 vor 11 Jahren 0

1 Antwort auf die Frage

2
harrymc

Sie sollten dies nicht durch Bearbeiten der Registrierung tun, da unser Wissen dazu recht begrenzt ist, sondern verwenden Sie den von Windows bereitgestellten Mechanismus.

Microsoft hat Windows PowerShell als Hauptprogrammierschnittstelle entwickelt, die den Zugriff auf praktisch alle Funktionen in Windows ermöglicht. Leider wurde die Familie der PowerShell-Funktionen, die sich auf die Sprache bezieht, International Settings Cmdlets, nur für Windows 8 / Server 2012 eingeführt und ist nicht für Windows 7 oder Vista verfügbar.

Es gibt jedoch Lösungen für Windows 7 oder Vista, wie im MSDN-Artikel beschrieben:
Windows Vista-Befehlszeilen-Konfiguration der internationalen Einstellungen .

Ein Beispiel für die Verwendung dieser Technik finden Sie in Internationale Einstellungen für Regions- und Sprachoptionen konfigurieren mit Befehlszeilenautomatisierung, die im Wesentlichen eine speziell gestaltete XML-Datei mit dem Befehl verwendet:

control intl.cpl,, /f:"intlsettings.xml" 

Nachfolgend sind einige XML-Beispieldateien aufgeführt.

Ändern Sie die aktuelle Sprache

<gs:GlobalizationServices xmlns:gs="urn:longhornGlobalizationUnattend"> <!--User List--> <gs:UserList> <gs:User UserID="Current"/> </gs:UserList> <!-- User Locale--> <gs:UserLocale> <gs:Locale Name="es-US" SetAsCurrent="true"/> </gs:UserLocale> </gs:GlobalizationServices> 

Tastatursprache hinzufügen

<gs:GlobalizationServices xmlns:gs="urn:longhornGlobalizationUnattend">  <gs:UserList> <gs:User UserID="Current" CopySettingsToDefaultUserAcct="true" CopySettingsToSystemAcct="true"/></gs:UserList>  <gs:InputPreferences>  <gs:InputLanguageID Action="add" ID="0804:E0200804"/> </gs:InputPreferences> </gs:GlobalizationServices> 

Tastatursprache entfernen

<gs:GlobalizationServices xmlns:gs="urn:longhornGlobalizationUnattend">  <gs:UserList> <gs:User UserID="Current" CopySettingsToDefaultUserAcct="true" CopySettingsToSystemAcct="true"/></gs:UserList>  <gs:InputPreferences>  <gs:InputLanguageID Action="remove" ID="0804:E0200804"/> </gs:InputPreferences> </gs:GlobalizationServices> 

Quelle

Ich habe versucht, dies ohne Registrierungsänderungen zu tun. Stattdessen habe ich die Windows-API verwendet (mit LoadKeyboardLayout und ActivateKeyboardLayout). Kein Erfolg :/ weberik vor 11 Jahren 0
Diese Funktionen wirken sich auf das aktuelle Tastaturlayout aus, nicht jedoch auf die Sprachleiste. Für eine gute Lösung müssen Sie die Kugel beißen und PowerShell lernen. Es ist viel zu schlucken, aber im Internet gibt es viele hilfreiche Ressourcen. harrymc vor 11 Jahren 0
Nun, ich bin mit Powershell vertraut, aber ich konnte keinen ps-Befehl finden. am ende würde ich nur windows api oder wmi befehle von ps aufrufen, also spielt es keine rolle, ob ich ps, csharp, batch oder was auch immer benutze. Könnten Sie mich vielleicht auf eine dieser "hilfreichen Ressourcen im Internet" verweisen? weberik vor 11 Jahren 0
Ich dachte, dass "Internationale Einstellungen Cmdlets" oben genau das waren, was Sie brauchen. Wie für PS, für Anfänger google für "Powershell-Tutorial" und Sie haben viel mehr als Sie lesen können. Ein weiterer Google-Trick, den ich benutze, ist "Powershell-Dateityp: pdf", der mir beispielsweise [dieses Buch] (http://www.szemtsov.net/books/learn_windows_powershell_3_in_a_month_of_lunches_2nd_edition.pdf) gab. Microsoft ist natürlich eine weitere großartige Quelle. harrymc vor 11 Jahren 0
Oh, danke, mittlerweile habe ich die Cmdlets gefunden. Leider sind sie auf unseren Systemen nicht verfügbar (Vista): / weberik vor 11 Jahren 0