Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Программы » AutoIT (Часть 2)

Модерирует : gyra, Maz

Widok (01-06-2010 13:08): Лимит страниц. Продолжаем здесь.  Версия для печати • ПодписатьсяДобавить в закладки
На первую страницук этому сообщениюк последнему сообщению

   

sproxy



Full Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору

Смена раскладки клавиатуры (русский -> английский;  английский -> русский) для активного окна с помощью быстрых клавиш (Hot key):

Код:
#region: - Option
    Opt('MustDeclareVars',      1)
    Opt('TrayIconDebug',        1)
    Opt('TrayIconHide',         0)
    Opt('WinTitleMatchMode',    2)
#endregion
 
#Include <Misc.au3>
#Include <Timers.au3>
 
AutoItWinSetTitle(@AutoItPID)
Global  $hAutoItWin = WinGetHandle(@AutoItPID)
 
HotKeySet('{ESC}', '_Pro_Exit')
 
#region: - Chenge lang by Hot Key
    HotKeySet('{LWIN}{SPACE}',  '_ChengeWinLang')
    HotKeySet('{RWIN}{SPACE}',  '_ChengeWinLang')
    HotKeySet('+{SPACE}',       '_ChengeWinLang')
#endregion
 
#region: - Chenge lang by Pressed Key (CLBPK)

    Global  $hCLBPK_Sleep_Timer
    Global  $hCLBPK_Check_Timer = _Timer_SetTimer($hAutoItWin, 10, '_ChengeLang_ByPressedKey')
;~  Timers settings:
    Global  $iCLBPK_Sleep_Time = 250
    Global  $iCLBPK_Check_Time = 10
#endregion
 
#region: - Sleep, Exit

While 1
    Sleep(10)
WEnd
 
Func
_Pro_Exit()
    Exit
EndFunc

#endregion
 
Func _ChengeLang_ByPressedKey($hWnd, $Msg, $iIDTimer, $dwTime)
    Switch $iIDTimer
        Case $hCLBPK_Sleep_Timer
            _Timer_KillTimer($hAutoItWin, $hCLBPK_Sleep_Timer)
            $hCLBPK_Check_Timer = _Timer_SetTimer($hAutoItWin, $iCLBPK_Check_Time, '_ChengeLang_ByPressedKey')
        Case $hCLBPK_Check_Timer
            If _IsPressed('5B') Then
                If
_IsPressed('20') Then
                    _ChengeWinLang()
                    _Timer_KillTimer($hAutoItWin, $hCLBPK_Check_Timer)
                    $hCLBPK_Sleep_Timer = _Timer_SetTimer($hAutoItWin, $iCLBPK_Sleep_Time, '_ChengeLang_ByPressedKey')
                EndIf
            EndIf
    EndSwitch
EndFunc
 
Func _ChengeWinLang()
    Local $hWnd
    $hWnd = WinGetHandle('[Active]')
 
    Switch _GetKeyboardLayout($hWnd)
        Case 'ru'
            _ChLang('en', $hWnd)
        Case 'en'
            _ChLang('ru', $hWnd)
    EndSwitch
EndFunc
 
Func _GetKeyboardLayout($hWnd)
    Local $iLangCode
    Local $aRet = DllCall('user32.dll', 'long', 'GetWindowThreadProcessId', 'hwnd', $hWnd, 'ptr', 0)
    $aRet = DllCall('user32.dll', 'long', 'GetKeyboardLayout', 'long', $aRet[0])
 
    $iLangCode = Hex($aRet[0], 4)
 
    Switch $iLangCode
        Case '0409'
            return 'en'
        Case '0419'
            return 'ru'
    EndSwitch
EndFunc
 
Func _ChLang($iLangCode, $hWnd)
   If $iLangCode == 'ru' Then _SetKeyboardLayout('00000419', $hWnd)
   If $iLangCode == 'en' Then _SetKeyboardLayout('00000409', $hWnd)
EndFunc
 
 Func _SetKeyboardLayout($sLayoutID, $hWnd)
    Local $WM_INPUTLANGCHANGEREQUEST = 0x50
    Local $ret = DllCall('user32.dll', 'long', 'LoadKeyboardLayout', 'str', $sLayoutID, 'int', 0)
    DllCall('user32.dll', 'ptr', 'SendMessage', 'hwnd', $hWnd, _
                                                'int', $WM_INPUTLANGCHANGEREQUEST, _
                                                'int', 1, _
                                                'int', $ret[0])
EndFunc


Всего записей: 556 | Зарегистр. 21-11-2007 | Отправлено: 22:40 17-04-2009 | Исправлено: sproxy, 23:00 17-04-2009
   

На первую страницук этому сообщениюк последнему сообщению

Компьютерный форум Ru.Board » Компьютеры » Программы » AutoIT (Часть 2)
Widok (01-06-2010 13:08): Лимит страниц. Продолжаем здесь.


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru