Что нового

Как узнать какая раскладка клавиатуры?

cobra2029

Новичок
Сообщения
54
Репутация
0
Здравствуйте!

Возник вопрос как средствами autoit узнать какая раскладка клавиатуры в данный момент?

Поиск юзал, в темах где было упоминание "о раскладке" ответа не нашел.
 

BIOS

Жизнь - игра. График - супер, но сюжет - хреновый.
Сообщения
173
Репутация
69
Re: Язык раскладки

Код:
Func _GetKeyboardLayout($hWnd)
    Local $aRet = DllCall("user32.dll", "long", "GetWindowThreadProcessId", "hwnd", $hWnd, "ptr", 0)
    $aRet = DllCall("user32.dll", "long", "GetKeyboardLayout", "long", $aRet[0])
 
    Return "0000" & Hex($aRet[0], 4)
EndFunc
 
#cs
    "00000407" Немецкий (стандартный)
    "00000409" Английский (США)
    "0000040C" Французский (стандартный)
    "0000040D" Финский
    "00000410" Итальянский
    "00000415" Польский
    "00000419" Русский
    "00000422" Украинский
    "00000423" Белорусский
    "00000425" Эстонский
    "00000426" Латвийский
    "00000427" Литовский
#ce

(c) CreatoR
 
Автор
C

cobra2029

Новичок
Сообщения
54
Репутация
0
Re: Язык раскладки

короче, если нетрудно напишите мне код типа:

Код:
if раскладка  анг then 

MsgBox (1,' ',англ )

endif


сори что туплю.
 

Zaramot

I ♥ AutoIt
Сообщения
1,160
Репутация
660
Re: Язык раскладки

Вот:
Код:
#Include <WinAPIEx.au3>

Const $LANG_RUS = 0x0419 ;Русский
Const $LANG_ENG = 0x0409 ;Англиский

$GetLang = '0x' & Hex(BitAND(_WinAPI_GetKeyboardLayout(WinGetHandle('[ACTIVE]')), 0xFFFF), 4)
If $GetLang = $LANG_RUS Then
	MsgBox(0, '', 'Русская')
Else
	MsgBox(0, '', 'Английская')
EndIf


Другие языки:
Код:
0x0436 - Afrikaans
0x041C - Albanian
0x0401 - Arabic
0x1401 - Arabic Algeria
0x3C01 - Arabic Bahrain
0x0C01 - Arabic Egypt
0x0801 - Arabic Iraq
0x2C01 - Arabic Jordan
0x3401 - Arabic Kuwait
0x3001 - Arabic Lebanon
0x1001 - Arabic Libya
0x1801 - Arabic Morocco
0x2001 - Arabic Oman
0x4001 - Arabic Qatar
0x0401 - Arabic Saudi Arabia
0x2801 - Arabic Syria
0x1C01 - Arabic Tunisia
0x3801 - Arabic U.A.E
0x2401 - Arabic Yemen
0x042B - Armenian
0x044D - Assamese
0x082C - Azeri Cyrillic
0x042C - Azeri Latin
0x042D - Basque
0x0813 - Belgian Dutch
0x080C - Belgian French
0x0445 - Bengali
0x0416 - Portuguese (Brazil)
0x0402 - Bulgarian
0x0455 - Burmese
0x0423 - Byelorussian (Belarusian)
0x0403 - Catalan
0x0C04 - Chinese Hong Kong SAR
0x1404 - Chinese Macau SAR
0x0804 - Chinese Simplified
0x1004 - Chinese Singapore
0x0404 - Chinese Traditional
0x041A - Croatian
0x0405 - Czech
0x0406 - Danish
0x0413 - Dutch
0x0C09 - English Australia
0x2809 - English Belize
0x1009 - English Canadian
0x2409 - English Caribbean
0x1813 - English Ireland
0x2009 - English Jamaica
0x1409 - English New Zealand
0x3409 - English Philippines
0x1C09 - English South Africa
0x2C09 - English Trinidad
0x0809 - English U.K.
0x0409 - English U.S.
0x3009 - English Zimbabwe
0x0425 - Estonian
0x0438 - Faeroese
0x0429 - Farsi
0x040B - Finnish
0x040C - French
0x2C0C - French Cameroon
0x0C0C - French Canadian
0x300C - French Cote d'Ivoire
0x140C - French Luxembourg
0x340C - French Mali
0x180C - French Monaco
0x200C - French Reunion
0x280C - French Senegal
0x1C0C - French West Indies
0x240C - French Congo (DRC)
0x0462 - Frisian Netherlands
0x083C - Gaelic Ireland
0x043C - Gaelic Scotland
0x0456 - Galician
0x0437 - Georgian
0x0407 - German
0x0C07 - German Austria
0x1407 - German Liechtenstein
0x1007 - German Luxembourg
0x0408 - Greek
0x0447 - Gujarati
0x040D - Hebrew
0x0439 - Hindi
0x040E - Hungarian
0x040F - Icelandic
0x0421 - Indonesian
0x0410 - Italian
0x0411 - Japanese
0x044B - Kannada
0x0460 - Kashmiri
0x043F - Kazakh
0x0453 - Khmer
0x0440 - Kirghiz
0x0457 - Konkani
0x0412 - Korean
0x0454 - Lao
0x0426 - Latvian
0x0427 - Lithuanian
0x042F - FYRO Macedonian
0x044C - Malayalam
0x083E - Malay Brunei Darussalam
0x043E - Malaysian
0x043A - Maltese
0x0458 - Manipuri
0x044E - Marathi
0x0450 - Mongolian
0x0461 - Nepali
0x0414 - Norwegian Bokmol
0x0814 - Norwegian Nynorsk
0x0448 - Oriya
0x0415 - Polish
0x0816 - Portuguese
0x0446 - Punjabi
0x0417 - Rhaeto-Romanic
0x0418 - Romanian
0x0818 - Romanian Moldova
0x0419 - Russian
0x0819 - Russian Moldova
0x043B - Sami Lappish
0x044F - Sanskrit
0x0C1A - Serbian Cyrillic
0x081A - Serbian Latin
0x0430 - Sesotho
0x0459 - Sindhi
0x041B - Slovak
0x0424 - Slovenian
0x042E - Sorbian
0x040A - Spanish (Traditional)
0x2C0A - Spanish Argentina
0x400A - Spanish Bolivia
0x340A - Spanish Chile
0x240A - Spanish Colombia
0x140A - Spanish Costa Rica
0x1C0A - Spanish Dominican Republic
0x300A - Spanish Ecuador
0x440A - Spanish El Salvador
0x100A - Spanish Guatemala
0x480A - Spanish Honduras
0x4C0A - Spanish Nicaragua
0x180A - Spanish Panama
0x3C0A - Spanish Paraguay
0x280A - Spanish Peru
0x500A - Spanish Puerto Rico
0x0C0A - Spanish Spain (Modern Sort)
0x380A - Spanish Uruguay
0x200A - Spanish Venezuela
0x0430 - Sutu
0x0441 - Swahili
0x041D - Swedish
0x081D - Swedish Finland
0x100C - Swiss French
0x0807 - Swiss German
0x0810 - Swiss Italian
0x0428 - Tajik
0x0449 - Tamil
0x0444 - Tatar
0x044A - Telugu
0x041E - Thai
0x0451 - Tibetan
0x0431 - Tsonga
0x0432 - Tswana
0x041F - Turkish
0x0442 - Turkmen
0x0422 - Ukrainian
0x0420 - Urdu
0x0843 - Uzbek Cyrillic
0x0443 - Uzbek Latin
0x0433 - Venda
0x042A - Vietnamese
0x0452 - Welsh
0x0434 - Xhosa
0x0435 - Zulu
 

kaster

Мой Аватар, он лучший самый
Команда форума
Глобальный модератор
Сообщения
4,020
Репутация
626
Re: Язык раскладки

cobra2029
Предупреждение За нарушение правил форума (пункт Б.5):
Имя темы должно нести смысловую нагрузку (отражать суть вопроса/проблемы)
Правильно сформулированное название темы привлекает больше внимания, и шансы получить конкретный ответ увеличиваются.


Данные правила могут пополняться локальными правилами раздела.
Как правильно называть темы

"Язык раскладки" - это неприемлемое название темы, переименуйте тему иначе она будет закрыта, а вам возможно будет выдан бан на несколько дней.

С уважением, Модератор форума.
 

Oki

Продвинутый
Сообщения
452
Репутация
62
Код:
Local $aRet = DllCall("user32.dll", "long", "GetWindowThreadProcessId", "hwnd", $hWnd, "ptr", 0)
$aRet = DllCall("user32.dll", "long", "GetKeyboardLayout", "long", $aRet[0])
Имеется в виду, что нужно оставить только одну из этих строк? Как узнать, в каких случаях которую?
 

Oki

Продвинутый
Сообщения
452
Репутация
62
А почему бы не воспользоваться
Код:
@KBLayout
Зачем усложнять и вызывать dll?
Может быть, потому что эта макрокоманда выводит только для окна AutoIt, а не во всех случаях это то же самое?
 
Верх