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

Вниз

Beep   Найти похожие ветки 

 
AlexandrRya   (2003-05-19 22:35) [0]

Народ, кто знает, как сделать аналог Sound и Nosound в W2k? Beep мне не подходитЮ так как я не знаю, с колько времени будет продолжаться сигнал. Я делал так:

////////////////////////////////////////////////////////////////
void DoBeep(WORD wFreq, WORD wDelay)
{
DWORD dwParam;
if (bPlayed) {
TerminateThread(hThread, 0);
CloseHandle(hThread);
}
dwParam = (DWORD)MAKELONG(wFreq, wDelay);
hThread = CreateThread(NULL, 0, ThreadProc, (LPVOID)&dwParam, 0, &dwThread);
bPlayed = TRUE;
}

//////////////////////////////////////////////////////////

DWORD WINAPI ThreadProc (LPVOID lpParam)
{
DWORD dwParam;
WORD wFreq;

dwParam = *(LPDWORD)lpParam;
wFreq = HIWORD(dwParam);
Beep(wFreq+100,LOWORD(dwParam)+100);
bPlayed = FALSE;
SendMessage(hwnd, SM_SOUNDSTOP, 0, 0);
return 0;
}

/////////////////////////////////////////////////////

То есть как только сигнал нужно было прервать я просто грохал нитку :). Но при этом оказалось, что каждый раз после некорректного завершения такой нитки остается открытым файл-устройство \Device\Beep. Если кто-то знает, помогите. Может кто-то подскажет, ка закрыть уже открытый файл, зная только его имя.
Но лучше объясните, как написать Sound и NoSound. Знаю, что для этого kernel32 использует NtDeviceIoControlFile(...), может кто-то стакими чтуками сталкивался? В NtDDK она не описана, хотя пару раз упомиается в комментарих.


 
Севостьянов Игорь ©   (2003-05-20 11:41) [1]

Какие-то сложности у тя с этим - по моему проще

DoBeep := True;
while DoBeep do
begin
Beep(100, 1);
if <условие> then DoBeep := False;
end;


 
Севостьянов Игорь ©   (2003-05-20 11:42) [2]

Да забыл вставить либо Sleep(0); либо Apllication.ProcessMessages


 
Bogachev   (2003-05-20 20:21) [3]

USES mmsystem;

sndPlaySound("C:\TEST.WAV",SND_ASYNC); // PLAY
sndPlaySound("C:\TETS.WAV",SND_ASYNC+SND_LOOP); // Loop Mode (зацикливание)
sndPlaySound(Nil,SND_ASYNC); //STOP

Плай саунд делать в отдельной нитке а останавливать в гланой.
плюс прописать FreeOnTerminate := True побочной нитке!


 
AlexandrRya   (2003-05-20 22:28) [4]

Thanks to all

To Bogachev> мне надо через спикер :)



 
KDS ©   (2003-05-21 17:12) [5]

Используй "Бипку" из модуля "Виндовз"
Windows.Beep(1024,3000);
Цитирую Била Гейтса (из хэлпа):
The Beep function generates simple tones on the speaker. The function is synchronous; it does not return control to its caller until the sound finishes.

BOOL Beep(
DWORD dwFreq, // sound frequency, in hertz
DWORD dwDuration // sound duration, in milliseconds
);

Parameters

dwFreq

Windows NT:Specifies the frequency, in hertz, of the sound. This parameter must be in the range 37 through 32,767 (0x25 through 0x7FFF).
Windows 95:The parameter is ignored.

dwDuration
Windows NT:Specifies the duration, in milliseconds, of the sound.
Windows 95:The parameter is ignored.


 
KDS ©   (2003-05-21 17:14) [6]

Используй "Бипку" из модуля "Виндовз"
Windows.Beep(1024,3000);
Цитирую Била Гейтса (из хэлпа):
The Beep function generates simple tones on the speaker. The function is synchronous; it does not return control to its caller until the sound finishes.

BOOL Beep(
DWORD dwFreq, // sound frequency, in hertz
DWORD dwDuration // sound duration, in milliseconds
);

Parameters

dwFreq

Windows NT:Specifies the frequency, in hertz, of the sound. This parameter must be in the range 37 through 32,767 (0x25 through 0x7FFF).
Windows 95:The parameter is ignored.

dwDuration
Windows NT:Specifies the duration, in milliseconds, of the sound.
Windows 95:The parameter is ignored.


 
Verg ©   (2003-05-21 21:21) [7]

Windows 95:The parameter is ignored.


Вот, вот....


 
AlexandrRya   (2003-05-21 22:21) [8]

To KDS:
Именно ее я и использую:

...
Beep(wFreq+100,LOWORD(dwParam)+100);
...



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

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

Наверх




Память: 0.48 MB
Время: 0.014 c
3-100579
Bless
2003-07-08 09:51
2003.07.31
Что дает SET NOCOUNT ON?


7-101004
Zero Ice
2003-05-21 16:43
2003.07.31
I/o ports


4-101034
СлБ
2003-05-28 08:02
2003.07.31
Создание полупрозрачной формы


7-100995
DVM
2003-05-21 14:13
2003.07.31
Прием файлов своим окном из проводника. Проблема.


1-100699
Guest7
2003-07-18 13:39
2003.07.31
Добавить к TDateTime несколько минут