Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 02.05.2010, 00:38   #1
CraZZZy-GameRRR
Пользователь
 
Регистрация: 15.04.2010
Сообщений: 98
По умолчанию скан-код клавиши

Определяю скан-код нажатой клавиши этой процедурой. Получаю ошибку.

Код:
procedure TForm1.FormKeyPress(Sender: TObject; var Key: Char);
var
  Scan: Byte;

begin
  asm
    mov ah,10h
    int 16h
    mov Scan,ah
  end;
  Form1.Caption := IntToStr(Scan);
end;
CraZZZy-GameRRR вне форума Ответить с цитированием
Старый 02.05.2010, 01:55   #2
Terran
Участник клуба
 
Аватар для Terran
 
Регистрация: 28.11.2007
Сообщений: 1,521
По умолчанию

Возможно, прерывание Int 16h не поддерживается данной версией BIOS, поэтому ошибка.
Всегда рад помочь!
Terran вне форума Ответить с цитированием
Старый 02.05.2010, 13:32   #3
MalCer
Форумчанин
 
Аватар для MalCer
 
Регистрация: 15.07.2008
Сообщений: 615
По умолчанию

Прерывания свято хранятся windows, а вы пытаетесь их использовать. Такое катит только под DOS!!! Terran, все известные биос держат это прерывание.
xor eax, eax
xchg [eax], eax
MalCer вне форума Ответить с цитированием
Старый 04.05.2010, 21:36   #4
CraZZZy-GameRRR
Пользователь
 
Регистрация: 15.04.2010
Сообщений: 98
По умолчанию

Так как делать-то?
CraZZZy-GameRRR вне форума Ответить с цитированием
Старый 04.05.2010, 22:28   #5
W0LF
Форумчанин
 
Аватар для W0LF
 
Регистрация: 28.03.2008
Сообщений: 940
По умолчанию

Гляньте исходник, там реализовано то что вам надо
W0LF вне форума Ответить с цитированием
Старый 04.05.2010, 22:45   #6
CraZZZy-GameRRR
Пользователь
 
Регистрация: 15.04.2010
Сообщений: 98
По умолчанию

Ого! Мудрёно очень. Не поможете разобраться?
CraZZZy-GameRRR вне форума Ответить с цитированием
Старый 05.05.2010, 15:57   #7
W0LF
Форумчанин
 
Аватар для W0LF
 
Регистрация: 28.03.2008
Сообщений: 940
По умолчанию

Так выкидуйте с исходника всё что вам ненужно и получите свой скан-код

Вот пожалуйста...
Вложения
Тип файла: rar ScanCode.rar (1.4 Кб, 46 просмотров)

Последний раз редактировалось Stilet; 26.05.2010 в 14:31.
W0LF вне форума Ответить с цитированием
Старый 25.05.2010, 15:31   #8
CraZZZy-GameRRR
Пользователь
 
Регистрация: 15.04.2010
Сообщений: 98
По умолчанию

Спасибо! А почему он клавишу Alt игнорирует?
CraZZZy-GameRRR вне форума Ответить с цитированием
Старый 25.05.2010, 15:36   #9
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

это считается системной клавишей, поидее при получении сообщения в параметре передается её состояние(или другое сообщение при нажатом альте, не помню)
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 25.05.2010, 19:25   #10
CraZZZy-GameRRR
Пользователь
 
Регистрация: 15.04.2010
Сообщений: 98
По умолчанию

Прочитал статью про хуки - немного понял. Сделал так:
Код:
function LowLevelKeyboardProc(nCode: integer; wParam: WPARAM; lParam: LPARAM): LRESULT; stdcall;
var
  pkb: aHookKEYCODE;
begin
  pkb := aHookKEYCODE(lParam);
  if wParam = WM_KEYDOWN then
    begin
    Form1.Edit1.Text:=IntToStr(pkb.vkCode);
    Form1.Edit2.Text:=IntToStr(pkb.scanCode);
    end
  else if wParam = WM_SYSKEYDOWN then
    begin
    Form1.Edit1.Text:=IntToStr(pkb.vkCode);
    Form1.Edit2.Text:=IntToStr(pkb.scanCode);
    end;

  Result := - 1;
end;
Теперь и alt определяет!

Последний раз редактировалось CraZZZy-GameRRR; 25.05.2010 в 19:40.
CraZZZy-GameRRR вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Получить скан код после WM_KEYEVENT TwiX Общие вопросы Delphi 1 21.04.2010 23:09
написать ASSEMBLER программу отображаущую скан-код нажатия и отпускания клавиш NAC35 Помощь студентам 2 16.06.2009 00:24
написать ассемблер-программу,выводящую на экран скан-код sashok2009 Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 9 08.06.2009 22:11
Чем отличается скан-код от виртуального кода клавиши? The_Darkness Помощь студентам 2 18.07.2008 17:01
Код клавиши... =*=|/|MM0PT@/\=*= Паскаль, Turbo Pascal, PascalABC.NET 3 19.01.2007 13:10