Вопрос: Как узнать язык операционной системы программно на ассемблере? Code (Text): invoke GetOEMCP .if eax == 866 .endif Code (Text): comment ® ¤=-=¤=-=¤=-=¤=-=¤=-=¤=-=¤=-=¤=-=¤=-=¤=-=¤=-=¤=-=¤=-=¤=-=¤=-=¤=-=¤ 437 MS-DOS United States 708 Arabic (ASMO 708) 709 Arabic (ASMO 449+, BCON V4) 710 Arabic (Transparent Arabic) 720 Arabic (Transparent ASMO) 737 Greek (formerly 437G) 775 Baltic 850 MS-DOS Multilingual (Latin I) 852 MS-DOS Slavic (Latin II) 855 IBM Cyrillic (primarily Russian) 857 IBM Turkish 860 MS-DOS Portuguese 861 MS-DOS Icelandic 862 Hebrew 863 MS-DOS Canadian-French 864 Arabic 865 MS-DOS Nordic 866 MS-DOS Russian (former USSR) 869 IBM Modern Greek 874 Thai 932 Japan 936 Chinese (PRC, Singapore) 949 Korean 950 Chinese (Taiwan; Hong Kong SAR, PRC) 1361 Korean (Johab) ¤=-=¤=-=¤=-=¤=-=¤=-=¤=-=¤=-=¤=-=¤=-=¤=-=¤=-=¤=-=¤=-=¤=-=¤=-=¤=-=¤=-=¤=-=¤ ® Что-то здесь не стройно. Неужели это все коды? А Deutsch? Есть ли ещё варианты, узнать какой язык? Например в формате: "Русский", "English"
через API операционной системы... то, что перечисленные коды начинаются с 437, а не с 0, и идут не по порядку, дает повод задуматься о том, что промежуточные коды имеют право на существование)) API операционной системы должно позволять узнать язык в текущей локализации операционной системы... то есть строку получить можно, если вы об этом... ЗЫ решите, какая операционная система, а API, я думаю, вам гугл подскажет...
Либо считывать название папки Мои Документы и соответственно определять язык из заранее заготовленных вариантов
Либо считывать название папки Мои Документы и соответственно определять язык из заранее заготовленных вариантов Кто сказал что речь идёт только о форточках?
Как бэ не самый надежный вариант, лучше через API и ничего не придумывать лишнего. paralvic, скачай справочник по API той операционной системы, для которой ты хочешь узнать язык. Такая функция есть практически в любой ОС.
В "Макрософаке": Узнаем имя папки Мои документы функцией : SHGetFolderPath Она смотрит реестр: Code (Text): Windows Registry Editor Version 5.00 [HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders] "!Do not use this registry key"="Use the SHGetFolderPath or SHGetKnownFolderPath function instead" "Personal"="C:\\Yoprst Jungle" Вопрос знатокам: Yoprst Jungle - какая страна?
А ответа ещё не было. По кодовым страницам очень ненадежно определять язык операционной системы функциями типа Get..CP.. Вот список всех:
Code (Text): GetModuleHandle("ntdll.dll"); EnumResourceLanguages(..., RT_VERSION, MAKEINTRESOURCE(1), ...); трололо
Отличный девиз: То, что не удается запрограммировать на ассемблере, приходится паять. ntdll.dll: Английский (США) Ещё вариант: Code (Text): .686p .MMX .XMM .model flat, stdcall option casemap :none ; регистрозависимы include \MASM32\INCLUDE\user32.inc include \MASM32\INCLUDE\kernel32.inc includelib \MASM32\LIB\user32.lib includelib \MASM32\LIB\kernel32.lib .code tit db ":Your language is:",0 lc dd 0 buf db 32 dup(0) buf_len equ $ - offset buf LOCALE_SENGLANGUAGE equ 01001h start: CALL GetSystemDefaultLCID ;здесь уже 00000419 = Russian mov lc, eax invoke GetLocaleInfoA, lc, LOCALE_SENGLANGUAGE, addr buf, buf_len invoke MessageBox,0,addr buf, addr tit,100030h invoke ExitProcess, 0 end start У кого какие будут результаты выполнения?
Вот список возможных языков Виндовс Он достаточно длинный, поэтому прикреплен файлом. Первая строчка - 0 идентификатор последняя - 1000h (дальше скорее всего ничего нет) Рад, что записан латиницей, представляете всё это на национальных языках? КОГДА БУДУТ МОЛДАВСКИЕ ОПЕРАЦИОННЫЕ СИСТЕМЫ?
Great А вот и нет!!! Чтобы метод был индусским надо вывести окошко и попросить пользователя ввести язык, а потом уже тысяча ифоф и сравнения названия папки, а если результаты не совпадают, то резкий шутдаун... чтобы не повадно врать было...
Либо считывать название папки Мои Документы Не во всех языках мира присутствует это понятие а стало быть и папка как таковая. Так например в Челябинской локализации эта папка отсутствует. В ней вообще нет никаких папок потому, что все данные храняца в одном файле - user33.dat и никакие усложнения с директориями не требуются. Очень удобно хранить все данные в одном файле - вся информация всегда под рукой, а резервное копирование вообще доступно любому школьнику.
PSR1257 А я думал, что они суровей... могли бы просто хранить на диске, без фат вообще. Резервное копирование не слишком усложняется - скопировал посекторно и всё...
Z3N скопировал посекторно Если мы про Челябинскую ФС, то там тоже все проще, hdd отфарматирован на один большой сектор. Тоже очень удобно, BIOS'у не нужна возня с этм MBR.
... осталось добавить что CPU Chelyabinsk может быть перепрограммирован на совершенно любые команды включая n-операндные.