Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "WinAPI";
Текущий архив: 2005.10.09;
Скачать: [xml.tar.bz2];

Вниз

В чем разнича между GetAsyncKeyState и GetKeyState?   Найти похожие ветки 

 
leonidus ©   (2005-08-15 08:32) [0]

Собственно сабж:) хочется разобраться.


 
KilkennyCat ©   (2005-08-15 09:06) [1]

The key status returned from this function (GetKeyState) changes as a given thread reads key messages from its message queue. The status does not reflect the interrupt-level state associated with the hardware. Use the GetAsyncKeyState function to retrieve that information.

Delphi Help.


 
Ботвин Дмитрий   (2005-08-15 09:23) [2]

Функция GetKeyState отличается от GetAsyncKeyState тем, что возвращает состояние клавиатуры на момент, когда из очереди потока извлечено последнее сообщение от клавиатуры (Дж. Рихтер)


 
leonidus ©   (2005-08-15 10:11) [3]

>Ботвин Дмитрий что-то подобное я читал, но не понял смысл:(
GetAsyncKeyState более стабильно будет работать что-ли?


 
Ботвин Дмитрий   (2005-08-15 11:03) [4]

Нет, просто GetAsyncKeyState всегда возвращает 0 (не нажата), если ее вызывает другой поток, а не тот, который создал окно, находящееся сейчас в фокусе ввода. А GetKeyState можно вызвать
в любой момент и для нее не важно, какое окно в данный момент
в фокусе.


 
alpet ©   (2005-08-15 15:54) [5]

Ботвин Дмитрий   (15.08.05 11:03) [4]

>Нет, просто GetAsyncKeyState всегда возвращает 0 (не нажата)

Странно, а у меня в программе она успешно работает, не зависимо от потока захватившего ввод (или создавшего окно, находящееся сейчас в фокусе ввода). Я поначалу отличия так понял: GetKeyState ловит все нажатия клавиш, что обрабатываются в потоках активного декстопа. GetAsynKeyState ловит нажатия, при изменении состояния клавиатуры в текущем десктопе.

Обьяснение вроде такое:
Although the least significant bit of the return value indicates whether the key has been pressed since
the last query, due to the pre-emptive multitasking nature of Windows, another application can call
GetAsyncKeyState and receive the "recently pressed" bit instead of your application.
The behavior of the least significant bit of the return value is retained strictly for compatibility
with 16-bit Windows applications (which are non-preemptive) and should not be relied upon.

Что значит пока работает obsolete-эффект использования функции, но в будущем это не гарантируется.



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

Форум: "WinAPI";
Текущий архив: 2005.10.09;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.45 MB
Время: 0.013 c
1-1126797235
Alex Kryuchkov
2005-09-15 19:13
2005.10.09
Программное создание макроса в Экселе


1-1126950990
EgorovAlex
2005-09-17 13:56
2005.10.09
Перехожу на юникод и возник вопрос, чем заменить string[250]?


1-1126732753
Чебуратор
2005-09-15 01:19
2005.10.09
Снов StringGrid... :-)


1-1126774119
Курдль
2005-09-15 12:48
2005.10.09
Как заставить TDBCtrlGrid принимать на себя фокус при DragDrop?


1-1125501595
Dmitrich
2005-08-31 19:19
2005.10.09
Загрузка потока в Excel





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский