Что нового

Добавить/убрать язык из языковой панели Windows 7

Bill Williamson

Новичок
Сообщения
1
Репутация
0
Версия AutoIt: 3.3.12.0

Описание:
Здравствуйте. Есть у меня скрипт:
Код:
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#include <winapiex.au3>
#include <ButtonConstants.au3>
Tat()
NoTat()

Func Tat()
    Local $var1 = "ON"
    Local $msg
	
    GUICreate("Татарская раскладка", 10, 100, -1, -1, $WS_MINIMIZEBOX) ; Создаёт окно в центре экрана
    GUICtrlCreateLabel($var1, 10, 30, 100, 17, $SS_CENTER)
	GUICtrlSetFont(-1, 12, 700, 0) ; Жирный шрифт
	GUISetState(@SW_SHOW) ; показывает созданное окно
	_WinAPI_LoadKeyboardLayout(1092)
	sleep (500)
EndFunc
Func NoTat()
    Local $var2 = "OFF"
	Local $msg
	GUICreate("Татарская раскладка", 10, 100, -1, -1, $WS_MINIMIZEBOX) ; Создаёт окно в центре экрана
    GUICtrlCreateLabel($var2, 10, 30, 100, 17, $SS_CENTER)
	GUICtrlSetFont(-1, 12, 700, 0) ; Жирный шрифт
	GUISetState(@SW_SHOW) ; показывает созданное окно
	_WinAPI_UnloadKeyboardLayout(1092)
	sleep (500)
EndFunc
Нужно, чтоб при запуске скрипта язык добавлялся, если его нет на языковой панели и удалялся если он есть. Спасибо.
 
A

Alofa

Гость
Bill Williamson сказал(а):
... Нужно, чтоб при запуске скрипта язык добавлялся, если его нет на языковой панели и удалялся если он есть.
Куда добавлялся-то? Т.е. загружался бы в ОС и включался для вашего GUI окна? Или просто кнопка нужна или не нужна?
Опишите задачу подробней, пошагово.


Добавлено:
Сообщение автоматически объединено:

Скрипт включения и выключения Татарской раскладки клавиатуры:
Код:
#include <WinAPISys.au3>
#include <WindowsConstants.au3>
#include <StaticConstants.au3>

Local $iLangID = 0x0444 ; Код языка (Татарский)
Local $aData = _WinAPI_GetKeyboardLayoutList()
If @error Then Exit

For $i = 1 To $aData[0]
	If _WinAPI_HiWord($aData[$i]) = $iLangID Then
		$iLangID = False
		ExitLoop
	EndIf
Next

If $iLangID Then
	_WinAPI_LoadKeyboardLayout($iLangID, $KLF_ACTIVATE)
	Tat('ON')
Else
	_WinAPI_UnloadKeyboardLayout($iLangID)
	Tat('OFF')
EndIf

Func Tat($sText) ; Можно это и через SplashTextOn() сделать (но только НЕ через MsgBox())
    GUICreate(' Татарская раскладка', 130, 100, -1, -1, $DS_SETFOREGROUND, BitOR($WS_EX_TOPMOST, $WS_EX_TOOLWINDOW))
    GUICtrlCreateLabel($sText, 10, 30, 100, 17, $SS_CENTER)
    GUICtrlSetFont(-1, 14, 700, 0) ; Жирный шрифт
    GUISetState() ; показывает созданное окно
    Sleep(1000)
EndFunc
 
Верх