Форум: "WinAPI";
Текущий архив: 2004.12.05;
Скачать: [xml.tar.bz2];
ВнизКак оборвать проигрывание звука при помощи кнопки? Найти похожие ветки
← →
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 вся ветка
Форум: "WinAPI";
Текущий архив: 2004.12.05;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.042 c