Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.05.28;
Скачать: CL | DM;

Вниз

setkeyboardstate   Найти похожие ветки 

 
Mr tray   (2006-05-07 15:57) [0]

Здравствуйте! Объясните мне, пожалуйста, для чего существует setkeyboardstate . Я его вызываю с разними параметрами, но чё то не улавливаю, в чем фишка. Хелп читал - не помогло.


 
Интересующийся   (2006-05-07 16:04) [1]

> Я его вызываю с разними параметрами.....

Код в студию!


 
Джо ©   (2006-05-07 16:05) [2]

Копирует 256-байтный буфер состояния клавиатуры в таблицу состояния клавиатуры текущего потока. Этот буфер представляет собой таблицу, описывающую текущее состояние клавиш (нажата/ненажата), точнее, виртуальных клавиш. Получить его можно функцией GetKeyboardState. Не годится для установки таких "глобальных клавиш" как Caps Lock и т.п.


 
Mr tray   (2006-05-07 16:11) [3]

Джо
спасибо. но это я понял из хелпа. как я понимаю, с помощью этой функции можно виртуально нажать кнопку?


 
Интересующийся   (2006-05-07 16:19) [4]

Для установки одной из клавиш-переключателей во включеное состояние применяется значение 0x81 в 256-битовом массиве. Для установки во включенное состояние непереключаемой (обычной клавиши) применяется значение 0x80. Виртуальная клавиша представляет собой индекс элемента в массиве.

В члуаи успеха возвращает Истину.

P.S.
Microsoft Windows 2000 API. Р. Саймон. DiaSoft 2001
Глава 9. ст 324

Там и пример на CD есть в котором CTRL устанавливается в нажатое состояние (у меня диска нет).


 
Джо ©   (2006-05-07 16:41) [5]

> [3] Mr tray   (07.05.06 16:11)
> Джо
> спасибо. но это я понял из хелпа. как я понимаю, с помощью
> этой функции можно виртуально нажать кнопку?

В общем, да. С оговорками, указанными в справке и MSDN.


 
Mr tray   (2006-05-07 17:17) [6]

Интересующийся, спасибо. А где можно достать эту самую книгу по api доктора Саймона-Франкинштейна :) ?


 
Mr tray   (2006-05-07 17:29) [7]

мм. что значит 0x<какое-то число> ? и что в это записи не так?
var
 a:TKeyboardState;
begin
 a[65]:=0x80;
 setkeyboardstate(a);
end;


 
TUser ©   (2006-05-07 17:52) [8]


> что значит 0x<какое-то число> ?

Шестнадцатиричный формат в Паскале.

> и что в это записи не так?

все так.


 
Джо ©   (2006-05-07 17:53) [9]

> Шестнадцатиричный формат в Паскале.

В C.


 
Джо ©   (2006-05-07 17:55) [10]

> [7] Mr tray   (07.05.06 17:29)
> и что в это записи не так?

Формат записи шестнадцатеричного числа. Нужно так: $80


 
Интересующийся   (2006-05-07 18:02) [11]

>мм. что значит 0x<какое-то число> ? и что в это записи не так?

0 (ноль) x (икс) - насколько я понимаю.

Про код я сказать ничего немогу!

> Интересующийся, спасибо. А где можно достать эту самую книгу по api доктора Саймона-Франкинштейна :)?

Спроси лучше где к ней диск найти :)))))

Я через Internet заказывал (пришла без диска)!!!

Ищи в сети:
Автор: Ричард Саймон
Издательство: SAMS и DiaSoft (www.diasoft.kiev.ua)

ББК 33.112
ISBN 966-7393-74-7

Но без диска она неинтересна, там все примеры на диске, а в книге только ссылки на файлы.

P.S.
Может другую в Inete поискать?
У "Притера" гниги хорошие, может у них есть про API.


 
TUser ©   (2006-05-07 18:03) [12]

Совсем сдурел я. Замени 0x на значек $.


 
Интересующийся   (2006-05-07 18:07) [13]

> Формат записи шестнадцатеричного числа. Нужно так: $80

Верно (в нормальный вид я и забыл перевисти), 0x81 и 0x81 я из книги брал.


 
Mr tray   (2006-05-07 23:03) [14]

ага. ясно. спасибо всем. только, как я понял
var
 a:TKeyboardState;
begin
 a[65]:=$80;
 setkeyboardstate(a);
end;

виртуально нажиает кнопку с кодом 65, то бишь "a". у меня фокус стоит на edit1. виртуально нажимаю кнопку, но ничего не вводится. почему? или я что-то не так понял?


 
Интересующийся   (2006-05-08 02:45) [15]

> или я что-то не так понял?


var
a:TKeyboardState;
begin
a[65]:=$80;
setkeyboardstate(a);
end;


Данный код нетолько сам неработает, но и блокирует ввод (редактирование)в "TMemo"!

P.S.
Кроме того, как я понял из описания функции она работает толька для процесса в контексте которого она запускается.

У MS VBA есть функция позволяющая нажимать клавиши (в том чесле в чужих прогах), думаю тебе необходимо реализовать ее вариант т олько в Delphi!

Ищи инфу о том как программно клавишу нажать в своем и чужом приложении. Насчет функции VB здесь вроде инфа лежала как это сделать.


 
Mr tray   (2006-05-08 17:29) [16]

вроде бы нашел. посылки wm_keydown, wm_keyup (но они чего-то не работают) и wm_char (он работает). sendmessage(getfocus,wm_char,97,5) печатает 5 букв "a" в, допустим, tedit, на котором сейчас стоит фокус.


 
Mr tray   (2006-05-09 16:26) [17]

никто не знает, почему посылка wm_keydown ничего не делает?



Страницы: 1 вся ветка

Текущий архив: 2006.05.28;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.028 c
15-1146827391
Slava812
2006-05-05 15:09
2006.05.28
Для любителей С


15-1146750860
acL
2006-05-04 17:54
2006.05.28
Как установить игру


3-1144434747
Alex Romanskiy
2006-04-07 22:32
2006.05.28
Картинка в DBGridEh


2-1147265255
antonn
2006-05-10 16:47
2006.05.28
вопрос по типу "file of byte"


2-1147261376
Fl@sh
2006-05-10 15:42
2006.05.28
Клиент сервер и мемори стрим