Поиск:

Ответ в темуСоздание новой темы Создание опроса
> определение раскладки в текущем окне 
:(
    Опции темы
denks
Дата 21.8.2006, 17:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 66
Регистрация: 16.4.2006

Репутация: нет
Всего: нет



Здравствуйте. Хочу написать программу, которая определяет и выводит текущую раскладку в активном окне. Написал код. Он компилится, но работает некорректно. Подскажите пожалуйста в чём ошибка. Спасибо.

Код

.386
.model flat,stdcall
option casemap:none
include C:\masm32\include\user32.inc
include C:\masm32\include\windows.inc
include C:\masm32\include\kernel32.inc
includelib C:\masm32\lib\kernel32.lib
includelib C:\masm32\lib\user32.lib
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

.data
Message1 db "русская",0
Message2 db "английская",0
Message3 db "текущая раскладка",0
process dd ?
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
.code
start :
invoke GetForegroundWindow
invoke GetWindowThreadProcessId,eax,0
mov process,eax
invoke GetKeyboardLayout,process
.if eax != 00000409
invoke MessageBox,0,addr Message1,addr Message3,0
.else
invoke MessageBox,0,addr Message2,addr Message3,0
.endif
invoke ExitProcess,0
end start

PM MAIL   Вверх
dumb
Дата 21.8.2006, 20:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


sceloglauxalbifacies
****


Профиль
Группа: Экс. модератор
Сообщений: 2929
Регистрация: 16.6.2006

Репутация: 7
Всего: 158



Код

;...
invoke GetKeyboardLayout,process
.if eax == 04190419h
invoke MessageBox,0,addr Message1,addr Message3,0
.elseif eax == 04090409h
invoke MessageBox,0,addr Message2,addr Message3,0
.else
invoke MessageBox,0,addr MessageX,addr Message3,0
.endif
;...


а по-хорошему надо список раскладок получать.
PM MAIL   Вверх
denks
Дата 21.8.2006, 20:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 66
Регистрация: 16.4.2006

Репутация: нет
Всего: нет



О, всё работает отлично. Спасибо большое.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Asm для начинающих"
MAKCim
  • Проставьте несколько ключевых слов темы, чтобы её можно было легче найти.
  • Не забывайте пользоваться кнопкой КОД.
  • Телепатов на форуме нет! Задавайте чёткий, конкретный и полный вопрос. Указывайте полностью ошибки компилятора и компоновщика.
  • Новое сообщение должно иметь прямое отношение к разделу форума. Флуд, флейм, оффтопик запрещены.
  • Категорически запрещается обсуждение вареза, "кряков", взлома программ и т.д.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, MAKCim.

 
 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Asm для начинающих | Следующая тема »


 




[ Время генерации скрипта: 0.0400 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.