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

Вниз

Помогите победить тетю клаву   Найти похожие ветки 

 
RapTor ©   (2004-07-07 18:06) [0]

Господа! Как можно из цикла, в коротом нельзя делать Application.ProcessMessages опросить быстро клавиатуру на предмет нажатия "Esc".
По портам 60 и 64 сразу говорю не канает. - не на всех системах пашет.
Может кто-то предложить что-то толковое, корректно и быстро работаеюще под всеми системами?


 
Digitman ©   (2004-07-07 18:18) [1]

заведи некую глобальную флаговую переменную
перед началом цикла флаг
стартуй доп.код.поток, в котором будет крутиться твой страшный цикл
в теле цикла проверяй этот флаг, поднятое его состояние есть искомое условие

взведение флага возложи на обработчик события Application.OnMessage(), где будут отслеживаться сообщения типа WM_KEYDOWN и в случае факта нажатия Esc будет взводиться этот флаг


 
Digitman ©   (2004-07-07 18:32) [2]

можно и иначе, без доп.потока, но суть - та же

в тело цикла вставь проверку :

if PeekMessage(Msg, MyForm.Handle, WM_KEYDOWN, WM_KEYDOWN, PM_NOREMOVE) and Msg.wParam = вирт_код_клавиши_Esc then
.. нажата ..
else
.. не нажата


 
RapTor ©   (2004-07-07 20:31) [3]

Спасибо Digitman ©
Сделал if PeekMessage Все путем. Выносить в отдельный поток мне слегка не удобно.

Может еще подскажешь...
У меня перед циклом
SetPriorityClass(GetCurrentProcess, REALTIME_PRIORITY_CLASS);
SetThreadPriority(GetCurrentThread, THREAD_PRIORITY_TIME_CRITICAL);
Делается. Так надо, к сожалению.
И не срабатывает тогда if PeekMessage.
Что можно сделать?

P.S. Собственно из за этого я и читал порты на прямую.


 
Игорь Шевченко ©   (2004-07-07 21:41) [4]


> SetPriorityClass(GetCurrentProcess, REALTIME_PRIORITY_CLASS);
> SetThreadPriority(GetCurrentThread, THREAD_PRIORITY_TIME_CRITICAL);


Сам из под себя (а заодно и из-под потока клавиатурного ввода) табуретку вышибаешь. Нафига, спрашивается ?


 
RapTor ©   (2004-07-07 22:30) [5]

То: Игорь Шевченко.
Так надо. К сожалению, без форсажа не обойтись.


 
Digitman ©   (2004-07-08 08:08) [6]


> RapTor ©   (07.07.04 22:30) [5]


> Так надо


ну надо так надо
тогда не жди, что кто-то не имеющий ни кванта времени сможет обработать прерывания клавиатуры


> без форсажа не обойтись


что ж за форсаж-то такой страшный ? прямо таки заинтриговал ...


 
Digitman ©   (2004-07-08 08:33) [7]


> RapTor


это не ты ли там в облике Раптора №1 в "Сетях" про "сокет в компоненте" ? уж больно похоже по стилю изложения глубокой мысли - "не канает", "не пашет" ...


> Выносить в отдельный поток мне слегка не удобно


))


 
RapTor ©   (2004-07-08 11:25) [8]

To :Digitman ©
>>это не ты ли там в облике Раптора №1...
Вообщето нет.
>>что ж за форсаж-то такой...
Да ничего особенного не воротил. Но есть таймер в микросекундах.
Без реалтайма дает не точный результат. Вот и все.
Экстренный выход сделать надо но не могу въехать как.


 
Digitman ©   (2004-07-08 12:26) [9]


> таймер в микросекундах


любопытно, зачем тебе понадобилось такое временное разрешение - микросекунды


> Без реалтайма дает не точный результат


если ты пытаешься осуществлять коммуникацию с каким-то прецизионным дивайсом, то многозадачная ОС - изначально неверный выбор, для этой цели существуют риэл-тайм ОС


 
oomneeq   (2004-07-08 20:40) [10]

GetAsyncKeyState не спасет ли отца русской демократии?

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/winui/WinUI/WindowsUserInterface/UserInput/KeyboardInpu t/KeyboardInputReference/KeyboardInputFunctions/GetAsyncKeyState.asp


 
Digitman ©   (2004-07-09 09:06) [11]


> oomneeq


при риэл-тайм приоритете отца русской демократии уже ничто не спасет


 
KADAN ©   (2004-07-09 10:28) [12]

микросекуды??? постойте-ка...
(1/1000*сек)/(1/1000000*сек)=.... ОГО! дык это ж в тысячу раз меньше миллисекунды... я тоже хочу такую точность по времени... мож меня научишь?


 
RapTor ©   (2004-08-02 17:41) [13]

Найди инфу на RTSC и сам сможешь сделать.



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

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

Наверх




Память: 0.49 MB
Время: 0.059 c
1-1094081926
vidiv
2004-09-02 03:38
2004.09.19
Regular Expressions в Дельфи 7


14-1093603759
SergP
2004-08-27 14:49
2004.09.19
Чем можно сделать chm?


6-1089671512
Лев Ландау
2004-07-13 02:31
2004.09.19
Помогите в реализации хттп запроса ! ! !


14-1093524695
hgd
2004-08-26 16:51
2004.09.19
Помогите с установка компонента


14-1092885095
КаПиБаРа
2004-08-19 07:11
2004.09.19
Тестирование ПО под разными OS