Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Система";
Текущий архив: 2003.07.31;
Скачать: [xml.tar.bz2];

Вниз

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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.46 MB
Время: 0.012 c
14-100962
Dmitriy O.
2003-07-15 16:34
2003.07.31
Для чего нужны Proxies в ToolsAPI


1-100819
DimaS
2003-07-17 13:46
2003.07.31
Плохо работает fsStayOnTop. Подскажите может есть другой способ


1-100729
andrey__
2003-07-02 17:26
2003.07.31
Форма в TService


14-100953
passm
2003-07-15 13:57
2003.07.31
Антибликовые очки


8-100831
Дмитрий К.К.
2003-04-07 11:50
2003.07.31
TMediaplayer: playing from stream





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский