PDA

Просмотр полной версии : Как сделать beep?


Chaak
12.08.2008, 23:12
Как сделать beep(звук сис. спикера) на любом скриптовом языке? Желательно на BAT или VBS

интересует изменение тонов . . .

_antony
12.08.2008, 23:20
Смотри MessageBeep()
http://msdn.microsoft.com/en-us/library/ms680356(VS.85).aspx

elimS2
13.08.2008, 13:11
Смотри MessageBeep()
http://msdn.microsoft.com/en-us/library/ms680356(VS.85).aspx

насколько знаю єто в скриптах vbs работаь не будет. если знаешь как вызвать эту функцию в vbs скрипте - раскажи, с меня +

касательно вопроса:
vbs
1-й способ:

set wshShell = Wscript.CreateObject("wscript.Shell")
beep = chr(007)
WshShell.Run "cmd /c @echo " & beep, 0

2-й способ:

strSoundFile = "C:\WINNT\Media\Notify.wav"
Set objShell = CreateObject("Wscript.Shell")
strCommand = "sndrec32 /play /close " & chr(34) & strSoundFile & chr(34)
objShell.Run strCommand, 0, True


во втором способе мы просто проигрываем один из стандартных звуковых файлов ОС

upd: перепрочитал вопрос, заметил что ты говоришь на счет спикера и изменения тонов. тогда второй способ отпадает. в первом способе проигрываеться только один тон с стандартной задержкой. насколько я знаю - других варинтов нету. сам хотел своей девушке переслать смской текст vbs скрипта пианино-клавиатуры))) чтоб было себя чем развлечь в селе где был только ноут. долго очень копал, но не нашел. везде пишут что в vbs не была заложена такая функциональность

Chaak
13.08.2008, 13:27
Мне нужно сделать определенную задержку. Типа для азбуки морзе.

А на си так можно сделать?

elimS2
13.08.2008, 13:47
да, тогда MessageBeep подходит.

хотя думаю лучше это:

http://msdn.microsoft.com/en-us/library/ms679277(VS.85).aspx

BOOL WINAPI Beep(
__in DWORD dwFreq,
__in DWORD dwDuration
);

Parameters

dwFreq [in] The frequency of the sound, in hertz. This parameter must be in the range 37 through 32,767 (0x25 through 0x7FFF).

dwDuration [in] The duration of the sound, in milliseconds.

Example Code [C++]
The following example demonstrates the use of this function.
Beep( 750, 300 );