Форум: "Начинающим";
Текущий архив: 2006.05.28;
Скачать: [xml.tar.bz2];
Вниз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;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.01 c