Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 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.012 c
15-1146261312
lookin
2006-04-29 01:55
2006.05.28
Skype никто не желает?


15-1146407457
Piter
2006-04-30 18:30
2006.05.28
Кто на чем смотрит DVD?


1-1145257574
MegaVolt
2006-04-17 11:06
2006.05.28
Как убить поток?


1-1145231424
vagra
2006-04-17 03:50
2006.05.28
Визуальный редактор форм


1-1145198224
Volf_555
2006-04-16 18:37
2006.05.28
WARNING. Duplicate resource(s): Type 10 (RCDATA)





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский