Private Declare Function MessageBeep Lib "user32" _
(ByVal wType As Long) As Long
Private Const MB_NASTERISK = &H40&
Private Const MB_XCLMTION = &H30&
Private Const MB_HAND = &H10&
Private Const MB_QUESTION = &H20&
Private Const MB_MASK = &HF0&
Private Sub сommand1_click()
Call MessageBeep(MB_NASTERISK)
End Sub
Private Sub command2_click()
Call MessageBeep(MB_XCLMTION)
End Sub
Можно ли присвоить звук макросу?
Можно ли присваивать в макросах Ворда или Екселя звуки событиям? :eek: Можно ли заставить звучать динамик компа (т.е. чтобы были "пики", а лучше мелодия, наподобие старых одноголосых рингтонов). Т.е. возможна ли одноголосая (через динамик) или многоголосая (через звук. карту) "индикация" работы макроса?
Есть объект Windows Media Player. Комментарии излишни.:)
Цитата: AxXxB
Есть объект Windows Media Player. Комментарии излишни.:)
Т.е. загружать WMP? Ну не серьезно. Мой макрос ведь не для услаждения слуха работает, а просто должен проинформировать, что "то-то и то-то". А пропищать никак нельзя? Лет 300 назад в Турбобейсике была команда beep. И к ней можно было подписать (не помню как) параметры на длительность и частоту нот. Вот это была жизнь. А потом появились Биллы Гейтсы, "окна", WMP и мир стал блеклым... :D
И в VBA тоже есть Beep, только там нельзя ничего приписывать - просто пишешь Beep и все. Попробуй. :D
Цитата: AxXxB
ЗЫ. Скажи, как сделать, чтобы мой макрос запускался на чужом компьютере и не ругался, мол, небезопасно?
Тема уже неоднократно обсуждалась на форуме в этом разделе!! Способов несколько.. В поиск!!
А вообще хочешь чо-то спросить - пользуйся поиском.. Поиском не нашел - создавай тему.. а не справшивай в теме абсолютно не имеющей отношения к твоему вопросу!!
Цитата: Dmitry2064
Можно ли присваивать в макросах Ворда или Екселя звуки событиям? :eek: Можно ли заставить звучать динамик компа (т.е. чтобы были "пики", а лучше мелодия, наподобие старых одноголосых рингтонов). Т.е. возможна ли одноголосая (через динамик) или многоголосая (через звук. карту) "индикация" работы макроса?
Ищи в стророну WinAPI..
[COLOR="Navy"]Sub beep()
Dim I
For I = 1 To 3 ' Loop 3 times.
beep ' Sound a tone.
Next I
End Sub[/COLOR]
Так оно мне в ответ пишет (на строке [COLOR="Navy"]beep[/COLOR]): [COLOR="Green"]Run Time err: 28. Out of stack space[/COLOR] ...:(
Т.е. оно уже не зазвучит? (или может дело в том, что на ноутбуке нет встроенного динамика?)
Т.е. оно уже не зазвучит? (или может дело в том, что на ноутбуке нет встроенного динамика?)[/QUOTE]
Вообще-то в ВБ функция beep проигрывает не звук из внутреннего динамика, а "Стандартный звук" в Винде (если у тебя не она, то тогда не знаю, но точно не из вн. динамика). А то что "Превышен размер стека" - это скорее всего из-за того, что звук слишком длинный, и, не успевая проиграться один раз, вызывается повторно. Поэтому попробуй просто написать beep и послушай, что получится. У меня аудиодрайвера нет, подсказать не могу, но вн. динамик есть, поэтому с полной уверенностью заявляю, что из него ничего не должно идти. Попробую где-нибудь найти.
Во!!! Нашел!!!
Чтобы проиграть как обычный звук, используется функция АПИ MessageBeep. Можно проиграть пять звуков.
Код:
И т. д. Сам не испытал (по причине, описанной выше), но ошибок нет.
Чтобы проиграть звук из внутр. динамика, используется ВинАПИ Beep.
Код:
Private Declare Function Beep& Lib "kernel32" _
(ByVal dwFreq As Long, ByVal dwDuration As Long)
Private Sub Command1_Click()
Call Beep(val(Text1), val(text2))
End Sub
(ByVal dwFreq As Long, ByVal dwDuration As Long)
Private Sub Command1_Click()
Call Beep(val(Text1), val(text2))
End Sub
В ней dwFreq - частота, dwDuration - длина. Испытал - работает!
ЗЫ. Все-таки жив еще любимый Яндех :D :D :D
P.S. А beep действительно выдал звук Виндов по умолчанию. Правда не смог повторить его 3 раза, как предписано инструкцией. Какой цикл не пиши, бипает один раз. (Да и то хорошо - чувствуешь себя мультимедийным программером из "Силиконовой долинки" ):cool:
Эти функции действуют и там, и там. Вот тебе примерчик на ВБА (см. вложение). Не бойся включить макросы - макровирусов там нет.
ЗЫ. Оценка - 5 баллов
Спасибо за вложение. Будем разбирать...