Главная страница
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.063 c
3-1099560515
kolos_rus
2004-11-04 12:28
2004.12.05
OLE и Blob - поля Interbase


1-1101297047
Nox
2004-11-24 14:50
2004.12.05
Тип переменной вмещающей число с 30 нулями


1-1101292981
Всезнайка
2004-11-24 13:43
2004.12.05
Переход на нужную страницу в CHM-хелпе


3-1099419559
avkar
2004-11-02 21:19
2004.12.05
Сообщения от SQL Server


1-1100774111
Vika_cc
2004-11-18 13:35
2004.12.05
frxClass.dcu