Оновіть мовну панель у Windows Vista / 7 програмно


4

Я намагаюся налаштувати мовну панель (перемикач мови в системі, яка з'являється, якщо у вас встановлено кілька мов введення) для наших користувачів.

мовний рядок

Я легко можу додавати нові мови за допомогою реквілей нижче HKCU, але проблема полягає в тому, що користувачеві необхідно переробити або перезавантажити свій комп’ютер, щоб побачити ефект.

Клавіші, які я використовую (я записую їх з активним налаштуванням), знаходяться в "HKEY_CURRENT_USER \ Клавіатурна розстановка \ Попередня завантаження" нижче цієї клавіші - це ім'я / значення типу REG_SZ.

Зазвичай вже є ключі типу "1" = "0000407" "2" = "0000409", що означає, що у користувача встановлена ​​німецька та англійська розкладки клавіатури, якщо я хочу додати, скажемо італійською мовою, я б додав ключ "3" = "0000410". після наступного входу / входу в систему зміни будуть видимі користувачеві.

Тепер я вже намагався надсилати різні повідомлення Windows, як-от WM_SETTINGCHANGE або команда "RUNDLL32.EXE user32.dll, UpdatePerUserSystemParameters". але поки немає корисного результату.

У мене тут не вистачає ідей, тому що сотні користувачів не можуть бути такими великими: /

Я також думав про автоматизацію клацання мишею (наприклад, з autoit), але це, як правило, викликає більше клопоту, ніж приносить користь.


ви пробували AutoIt ( autoitscript.com/site/autoit )?
magicandre1981

Відповіді:


2

Вам не слід займатися цим шляхом редагування реєстру, оскільки наші знання про це досить обмежені, але використовуйте механізм, поставлений Windows.

Microsoft створила Windows PowerShell як свій основний інтерфейс програмування, який дозволяє отримати доступ практично до всіх функцій в Windows. На жаль, сімейство функцій PowerShell, що стосується мови, International Settings Cmdlets , було введено лише для Windows 8 / Server 2012 і не доступне для Windows 7 або Vista.

Тим не менш, рішення існують для Windows 7 або Vista, як описано у статті MSDN:
Конфігурація командного рядка Windows Vista міжнародних налаштувань .

Приклад використання цієї методики можна знайти в Налаштування регіональних і мовних параметрів Міжнародних налаштувань за допомогою автоматизації командного рядка , який в основному використовує спеціально створений файл XML з командою:

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

Нижче наведено кілька прикладів файлів xml.

Змінення поточної мови

<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>

Додайте мову клавіатури

<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>

Видаліть мову клавіатури

<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>

джерело


Я намагався це зробити без змін у реєстрі. натомість я використав Windows api (використовуючи LoadKeyboardLayout та ActivateKeyboardLayout). успіху немає: /
weberik

Ці функції впливають на поточну розкладку клавіатури, але не на мовну панель. Для гарного рішення вам потрібно буде кусати кулю і навчитися PowerShell. Багато ковтати, але в Інтернеті є багато корисних ресурсів.
harrymc

добре, я знайомий з powerhell, але я не міг знайти рідну команду ps. Врешті-решт я би закликав Windows тільки команди api або wmi з PS, тому це не має великого значення, якщо я використовую ps, csharp, batch чи будь-що інше. Ви можете, можливо, вказати мені на один із таких "корисних ресурсів в Інтернеті"?
weberik

Я подумав, що "Міжнародні налаштування командлетів" вище - те, що вам потрібно. Що стосується PS, то для початківців google для "Підручника з повноважень" і у вас буде набагато більше, ніж ви можете прочитати. Ще один трюк в Google, який я використовую, - це "файли розширення: pdf", які дали мені, наприклад, цю книгу . Microsoft, звичайно, ще одне чудове джерело.
harrymc

о, дякую, на даний момент я знайшов, що командлети. на жаль, їх немає в наших системах (Vista): /
weberik
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.