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

Вниз

Как оборвать проигрывание звука при помощи кнопки?   Найти похожие ветки 

 
Slonco   (2004-10-18 10:44) [0]

Интересует метод обрывания цикла именно не через события (у меня так не получилось), а при помощи сканирования клавиатуры. Как вообще ее сканить? Я кроме страшных хуков через дыэлэлы ничего не нашел :(
Вот примерно так хочется сделать
     inkey:=0;
     while inkey=0 do begin
       Windows.Beep(1000, 300);
       Windows.Beep(2000, 300);
       ScanKey;
     end;

Есть ли такая функция ScanKey ? Я не смог найти :(
Допоможить будласка!
Дякую.


 
Woolen ©   (2004-10-18 10:57) [1]

Попробуй именно через события. Не забудь Application.ProcessMessages вставить в цикл. В этом методе вызывается обработка сообщений, в т.ч. и о нажатии клавиатуры. И при поступлении сообщения о нажатии оно будет прочитано в ближайшем Application.ProcessMessages и, сообтветственно, вызовется твое событие, через которое у тебя не получалось. А сканировать клавиатуру в винде можно, но обычно это применяется в игрушках.


 
Woolen ©   (2004-10-18 11:07) [2]

Если интересует именно сканирование клавиатуры, можешь попробовать IDirectInputDevice8::GetDeviceState. Хотя для этого, на Win2k у тебя должен быть нашлепнуть DirectX 8, а как делать в 7, которая в 2000, я не помню.


 
Slonco   (2004-10-18 11:13) [3]

Спасибо, сканирование клавиатуры как таковое мне не нужно. А вот в месте Не забудь Application.ProcessMessages вставить в цикл. пожалуйста поподробнее :))
Очень интересно.


 
Slonco   (2004-10-18 12:52) [4]

Так, вставил я Application.ProcessMessages. Попробовал прицепить на события формы нажатия на кнопки OnKeyPress/OnKeyDown - ничего не вышло. Реакции на кнопки нет. А вот OnClick - сработало!
Что я сделал не так?


 
Slonco   (2004-10-18 13:01) [5]

procedure TalMainForm.FormKeyDown(Sender: TObject; var Key: Word;
 Shift: TShiftState);
begin
 if Key=13 then Inkey:=1;
end;


Вот что я написал в обработчике.


 
Slonco   (2004-10-18 16:05) [6]

От реакции на кнопки я решил отказаться и оставить реакцию на клик.
 Попробовал задать это проигрывание звука для модальной формы (OnActivate). В ответ на это форма отказалась закрываться :( Я уже теряюсь в догадках.


 
Woolen ©   (2004-10-19 12:21) [7]

Форма по умолчанию не обрабатывает ввод с клавиатуры (KeyPreview установлен в False). Делаешь KeyPreview в True и все будет работать. Навероное... Если, конечно, ты этого еще не сделал...


 
abc   (2004-10-19 21:07) [8]

http://isv.iatp.org.ua/
Будильник v 1.2


 
Slonco   (2004-10-25 09:34) [9]

Я решил проблему использованием библиотеки JEDI , а в частности JvThreadTimer - на событие OnTimer повесил свой код

procedure TalcAlertForm.JvThreadTimer1Timer(Sender: TObject);
begin
//  Windows.Beep(1000, 300);
//  Windows.Beep(2000, 300);
end;


Вот собственно и все. Всем спасибо!



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

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

Наверх




Память: 0.49 MB
Время: 0.074 c
1-1100579612
FastByte
2004-11-16 07:33
2004.12.05
Как создать таблицу в Word из Delphi ?


14-1100512899
Cosinus
2004-11-15 13:01
2004.12.05
Что то не могу найти LPT-монитор. Может есть у кого грамотный?


1-1101149739
LinaIns
2004-11-22 21:55
2004.12.05
Клик правой кнопко мыши сделать левым


3-1099569880
Term
2004-11-04 15:04
2004.12.05
есть автоинкрементное поле, как сделать чтобы отчёт снова начался


14-1100464937
Knight
2004-11-14 23:42
2004.12.05
Поможите с сетью...