Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

определение последней нажатой клавишы [D6, WinXP]


Валентин ©   (2005-07-25 12:19:00) 

Под хрюшой не подскажите как определить последнюю нажатую клавишу, типа аналога:
 asm
   in al, 60h
   mov Key, al
 end;

Спасибо.


alpet   (2005-07-26 09:14:00) [1]

Валентин   (25.07.05 14:46) [3]
Еще лучше PM_NOREMOVE or PM_QS_INPUT, дабы выбирать сообщения только от клавиатуры и мыши. Замечу, что функция PeekMessage действует в пределах вызывающего потока (точнее пока окно hWnd имеет фокус, сообщения от клавиатуры будут поступать в очередь потока). Если тебе нужно получать нажатия клавиш для всех процессов в десктопе - есть функции GetKeyState, GetAsyncKeyState, и наконец можно использовать ловушки.


Валентин   (2005-07-25 14:46:00) [2]

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

Пока только это смог нарисовать:

function GetLastKey(myWND: Integer): byte;
var
 myMSG: MSG;
begin
 PeekMessage(myMSG, myWND, 0, 0, PM_NOREMOVE);// или PM_REMOVE?
 result:= myMSG.wParam;
 DispatchMessage(myMsg);
 // Хотя я так понимаю в result должен быть скан код. чем перевести?
end;

Спасибо, и извините за ламерские вопросы.


Anatoly Podgoretsky   (2005-07-25 12:54:00) [3]

PeekMessage


kblc   (2005-07-25 12:39:00) [4]

Как я понимаю этот же код в ХР не работает?


Наверх

Титульная страница Поиск, карта сайта Написать письмо