КАПУСТА: почитай,обсуди,отдохни!

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.


Вы здесь » КАПУСТА: почитай,обсуди,отдохни! » WinApi » Быстро узнаем состояние кнопок мыши и клавиатуры!


Быстро узнаем состояние кнопок мыши и клавиатуры!

Сообщений 1 страница 4 из 4

1

Код:
var 
   key: tkeyboardstate; 
   i: integer; 
begin 
   getkeyboardstate(key); 
   form1.Caption:=''; 
   for i:=0 to 255 do 
     if (key[i]=128)or(key[i]=129) then 
       form1.Caption:=form1.Caption+inttostr(i)+' '; 
end;

Попробуйте вставить данный код в таймер с интервалом 1!

0

2

Да, код хорош, и не без известен, но такая проблема, у меня на клавиатуре есть доп. клавиши: play, stop... И есть программа-плеер, я хочю чтобы она распознавала нажатые доп. клавиши. Когда форма находится в фокусе, то всё нормально, но только фокус прогпадает, и программа таким методом не может определить нажата клавиша или нет. А вот Winamp определяет нажатые клавиши, даже когда в трее. У меня два вывода: Либо он держит скрытую форму в фокусе постоянно, но это было бы заметно: когда я щёлкаю на любое окно, оно бы тут же теряло фокус, чего не происходит. Либо там хуки, но это уже сложней.

Поделитесь пожалуйста своими мыслямина эту тему.

0

3

Посмотри здесь: http://www.delphisources.ru/pages/faq/b … _comp.html

+1

4

Ну во первых тот код только посылает нажатие клавиш какому-нибудь объекту, а не считывает состояние клавиатуры, во-вторых, отправить нажатие клавиши любому окну можно всего лишь двумя процедурами:

Код:
SendMessage(Handle,WM_KEYDOWN,VK_DOWN,0);
SendMessage(Handle,WM_KEYUP,VK_DOWN,0);

А там просто есть поиск по названию окна, и более упрощённое управление.
И кроме того у меня что то с блокнотом не получилось сконнектится handle нашёл, отправил текст, а туда пришло 4 пробела вместо строки: "This is a test", очевидно проблема кодировок, или "выпендрёж" автора, переборщил он с этим, усложнил всё.

0


Вы здесь » КАПУСТА: почитай,обсуди,отдохни! » WinApi » Быстро узнаем состояние кнопок мыши и клавиатуры!