Форум программистов, компьютерный форум, киберфорум
Наши страницы
Batch (CMD/BAT)
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.83/46: Рейтинг темы: голосов - 46, средняя оценка - 4.83
Aleksey_UA21
0 / 0 / 0
Регистрация: 08.02.2013
Сообщений: 5
1

Конкретный звук на запуск конкретной программы

08.02.2013, 12:43. Просмотров 8719. Ответов 16
Метки нет (Все метки)

Доброе время суток!
Не знаю к какому разделу мой вопрос больше относится, поэтому пишу здесь. (если что, не судите строго).

Значит проблема следующего характера:
Нужно сделать на windows xp, чтоб при запуске конкретной программы проигрывался конкретный звук. Например: при запуске "мозилы" играет "Желтые тюльпаны", "тотал командр"- "Сыщики", почта - "Простоквашино" и т.д.

Нашел совет создать bat-ник. Сделал с таким кодом
Bash
1
2
@start "opera.exe" "C:\Program Files\Opera\opera.exe"
@start "PowerOn.wav" "c:\WINDOWS\Media\ILLUMIN\PowerOn.wav"
Но при этом музыка запускается в WMP (или другом плеере). Это не удобно.
Как сделать, чтоб звук проигрывался средствами самого windows, как например системные звуки (вход, выход, щелчок, свернуть, развернуть и т.д.), без запуска сторонних проигрывателей.

Или же может кто-то знает более простое решение данной задачи?
Подскажите пожалуйста, буду весьма благодарен.
0
Лучшие ответы (1)
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.02.2013, 12:43
Ответы с готовыми решениями:

Запуск HTML через конкретный браузер
как можно сделать чтобы index.html открылся через конкретный браузер с находящийся в папке в этой...

Конкретный ноутбук не подключается к конкретной wi fi сети
Доброго времени суток, подскажите пожалуйста, есть сеть wi fi, прекрасно работает, подключаются...

Как будет сочетаться конкретный монитор с конкретной видеокартой?
Привет.Скажите пожалуйста с такой видео картой Sapphire 11192-14-20G, HD 6670, 1024МБ, GDDR5 такой...

Запуск программы без создания окна. Запуск фоновой программы
Вопрос, как сделать, чтобы консольное приложение при запуске не создавало окошко консоли. Т.е....

Как из программы найти конкретный сайт
Как из программы на VB найти конкретный сайт и его HTML-код?

16
Eva Rosalene
Ladybug
4129 / 1602 / 305
Регистрация: 06.01.2013
Сообщений: 4,194
Завершенные тесты: 2
08.02.2013, 14:54 2
Через vbs запустить winamp скрытно, и, подождав секунд 5 закрыть

Добавлено через 1 минуту
Аудиодвижок на бате... Нет чувак, это вряд-ли. П.С. Возможно есть консольные плееры.
0
Aleksey_UA21
0 / 0 / 0
Регистрация: 08.02.2013
Сообщений: 5
10.02.2013, 13:06  [ТС] 3
Простите, я от программирования в общем человек далекий, если не сложно,черкните код, который нужен, чтоб
Цитата Сообщение от FraidZZ Посмотреть сообщение
Через vbs запустить winamp скрытно, и, подождав секунд 5 закрыть
И может у кого есть еще какие идеи, чтоб
сделать на windows xp, чтоб при запуске конкретной программы проигрывался конкретный звук. Например: при запуске "мозилы" играет "Желтые тюльпаны", "тотал командр"- "Сыщики", почта - "Простоквашино" и т.д.
кроме батника?
0
Charles Kludge
Клюг
7653 / 3168 / 383
Регистрация: 03.05.2011
Сообщений: 8,381
10.02.2013, 14:53 4
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

Писал я такую приблуду.
Кликните здесь для просмотра всего текста
Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
format PE console 4.0
 
include 'win32a.inc'
 
        invoke  GetCommandLine
        mov edi, eax
        mov al, 20h
        xor ecx,ecx
        dec ecx
    repne   scasb
    jnz gtfo
 
    invoke  mciSendString,edi,0,0,0
gtfo:   invoke  ExitProcess,eax
 
data import
 
 library kernel32,'KERNEL32.DLL',\
     winmm,'WINMM.DLL'
 
 import kernel32,\
    ExitProcess,'ExitProcess',\
    GetCommandLine,'GetCommandLineA'
 
 import winmm,\
    mciSendString,'mciSendStringA'
 
end data

exe'шник в аттаче.
пример для батника:
Bash
1
start/B mcisend play %SystemRoot%\Media\tada.wav wait
wait для проигрывания обязателен.
полный список команд mci
1
Вложения
Тип файла: zip mcisend.zip (477 байт, 211 просмотров)
10.02.2013, 14:53
Aleksey_UA21
0 / 0 / 0
Регистрация: 08.02.2013
Сообщений: 5
11.02.2013, 10:32  [ТС] 5
Спасибо, Charles Kludge!!!
Это именно то, что я хотел.
0
Dragokas
Эксперт WindowsАвтор FAQ
17104 / 7159 / 861
Регистрация: 25.12.2011
Сообщений: 10,955
Записей в блоге: 16
12.02.2013, 21:24 6
Ладно, пусть и мое будет.

Исходник на Visual Basic
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
Option Explicit
Option Compare Text
 
Public Declare Function mciSendString& Lib "winmm.dll" Alias "mciSendStringA" _
    (ByVal lpstrCommand$, _
    ByVal lpstrReturnString$, _
    ByVal uReturnLength&, _
    ByVal hwndCallback&)
 
Private Const MCI_ALIAS As String = "Media_1" '// Любой псевдоним
 
Private myFSO   As Object
Private stdIn   As Object
Private stdOut  As Object
Private stdErr  As Object
 
 
Sub Main()
    On Error GoTo errH
    Dim strFileName$, arrCMD, ASync As Boolean
    
    Set myFSO = CreateObject("Scripting.FileSystemObject")
    Set stdIn = myFSO.GetStandardStream(0&) '// Устанавливаем связь с потоками
    Set stdOut = myFSO.GetStandardStream(1&)
    Set stdErr = myFSO.GetStandardStream(2&)
 
    arrCMD = ParseCMD() '// Получаем аргументы ком. строки
    
    '// Using Block
    If Not IsArray(arrCMD) Then Using: UnloadStream: Exit Sub '// Нет аргументов
    
    If arrCMD(0) = "stop" Then StopSnd '// Остановить (достаточно 1 аргумента)
    
    If UBound(arrCMD) = 0 Then Using: UnloadStream: Exit Sub '// Только 1 аргумент
    
    '// ASync Flag
    ASync = True
    If UBound(arrCMD) >= 2 Then If arrCMD(2) = "wait" Then ASync = False
    
    '// Check FileName for existence
    strFileName = arrCMD(1)
    If Dir$(strFileName) = vbNullString Then
        strFileName = App.Path & "\" & strFileName
        If Dir$(strFileName) = vbNullString Then '// Пытаемся найти в рабочем каталоге
            stdOut.writeline "WARNING: specified file does not exists!"
            stdOut.writeline "Anywhere, this command was sended to MCISendString API :)"
        End If
    End If
 
    Select Case arrCMD(0) '// main command
        Case "play"
            PlaySnd Chr(34) & strFileName & Chr(34), ASync '// Воспроизвести
        'Case "stop"
        '    StopSnd '// Остановить
        Case Else '// Another command
            MCISend Command()
    End Select
    
    UnloadStream
    Exit Sub
errH:
    stdOut.writeline "CRITICAL ERROR: " & Err.Number & ". " & Err.Description
    Err.Clear
End Sub
 
Sub StopSnd()
    MCISend "Stop " & MCI_ALIAS '// Останавливаем воспроизведение
    MCISend "Close " & MCI_ALIAS '// Закрываем файл
End Sub
 
Sub PlaySnd(strFileName$, Optional ASync As Boolean = True)
        '// Закрываем файл.
        '// Если он не закрыт, воспроизведение будет продолжено с предыдущей позиции
        '// Seek не использую. Приводит к искажениям в начале воспроизведения на некоторых дорожках.
    MCISend "Close " & MCI_ALIAS
    MCISend "Open " & strFileName & " alias " & MCI_ALIAS '// Присваиваем алиас
    MCISend "Play " & MCI_ALIAS & IIf(ASync, "", " wait")
End Sub
 
Sub MCISend(lpstrCommand$)
    mciSendString lpstrCommand, vbNullString, 0&, 0&
End Sub
 
Function ParseCMD(Optional comm$) '// Парсер командной строки
    On Error GoTo errH
    Dim st, argv, arg, n&, a&
    
    If Len(comm) = 0 Then comm = Command()
    If Len(comm) = 0 Then Exit Function
 
    comm = Replace(comm, " " & Chr(34), Chr(34)) '// ( ")->(")
    comm = Replace(comm, Chr(34) & " ", Chr(34)) '// (" )->(")
    
    st = Split(comm, Chr(34))
    ReDim argv(0 To UBound(Split(Replace(comm, Chr(34), " "))))
    For n = 0 To UBound(st)
        If n Mod 2 = 0 Then '// Не в кавычках
            For Each arg In Split(st(n))
                argv(a) = arg
                a = a + 1
            Next
          Else '// в кавычках - не разбивать по пробелам
            argv(a) = st(n)
            a = a + 1
        End If
    Next
    ReDim Preserve argv(0 To a - 1)
    ParseCMD = argv
    Exit Function
errH:
    stdOut.writeline "CRITICAL ERROR: " & Err.Number & ". " & Err.Description
    Err.Clear
End Function
 
Sub Using()
    With stdOut
        .writeline ""
        .writeline "MCISendString. Console Sound Player."
        .writeline ""
        .writeline "Using:"
        .writeline App.EXEName & ".exe [play|pause|resume|stop] [FileName] {wait}"
    End With
End Sub
 
Sub UnloadStream()
    Set stdIn = Nothing
    Set stdOut = Nothing
    Set stdErr = Nothing
    Set myFSO = Nothing
End Sub


Синтаксис такой же.
Bash
1
2
3
4
5
6
7
8
9
Поддерживает пробелы в пути к файлу.
::Воспроизвести
mcisend.exe play tada.wav wait
::Приостановить
mcisend.exe pause tada.wav wait
::Продолжить
mcisend.exe resume tada.wav wait
::Остановить
mcisend.exe stop
И другие команды из справки по API-функции MCISendString.
2
Вложения
Тип файла: rar mcisend.rar (5.3 Кб, 87 просмотров)
Dragokas
Эксперт WindowsАвтор FAQ
17104 / 7159 / 861
Регистрация: 25.12.2011
Сообщений: 10,955
Записей в блоге: 16
13.02.2013, 20:38 7
А еще NirCMD умеет:

mediaplay [play time] [audio file]
Plays the specified audio file (.mp3, .wav, and so on) for the specified number of milliseconds.
Examples:
Bash
1
2
nircmd.exe mediaplay 10000 "c:\temp\1.mp3" 
nircmd.exe mediaplay 180000 "c:\my files\1.wav"
1
Aleksey_UA21
0 / 0 / 0
Регистрация: 08.02.2013
Сообщений: 5
13.02.2013, 22:36  [ТС] 8
Цитата Сообщение от Dragokas Посмотреть сообщение
Bash
1
2
mediaplay 10000 "c:\temp\1.mp3" 
mediaplay 180000 "c:\my files\1.wav"
Что-то не работает.
А за NirCMD спасибо.
0
Dragokas
Эксперт WindowsАвтор FAQ
17104 / 7159 / 861
Регистрация: 25.12.2011
Сообщений: 10,955
Записей в блоге: 16
14.02.2013, 02:07 9
Aleksey_UA21, видимо само название программы не дописали в начало. Попробуйте теперь. У меня работает.
0
Aleksey_UA21
0 / 0 / 0
Регистрация: 08.02.2013
Сообщений: 5
14.02.2013, 12:15  [ТС] 10
Во, теперь работает
0
trash50
8 / 3 / 0
Регистрация: 05.02.2014
Сообщений: 42
05.02.2014, 15:26 11
Как встроит JS в BATник
попробовал так \ гдето ошибка?

Кликните здесь для просмотра всего текста

Bash
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
@if (true == false) @end /*
@echo off
 
:begin
cscript //nologo /e:jscript "%~f0" mcisend play %SystemRoot%\Media\tada.wav
echo PAUSE END     ‘Ґ©з*б %time:~0,-3%
echo  ```````````````````````````````````````````````
goto :begin
 
:: Конец CMD-части
goto :EOF */
 
 
 
 
 
WScript.mcisend(WScript.Arguments(0))
 
 
 
Option Explicit
Option Compare Text
 
Public Declare Function mciSendString& Lib "winmm.dll" Alias "mciSendStringA" _
    (ByVal lpstrCommand$, _
    ByVal lpstrReturnString$, _
    ByVal uReturnLength&, _
    ByVal hwndCallback&)
 
Private Const MCI_ALIAS As String = "Media_1" '// Любой псевдоним
 
Private myFSO   As Object
Private stdIn   As Object
Private stdOut  As Object
Private stdErr  As Object
 
 
Sub Main()
    On Error GoTo errH
    Dim strFileName$, arrCMD, ASync As Boolean
    
    Set myFSO = CreateObject("Scripting.FileSystemObject")
    Set stdIn = myFSO.GetStandardStream(0&) '// Устанавливаем связь с потоками
    Set stdOut = myFSO.GetStandardStream(1&)
    Set stdErr = myFSO.GetStandardStream(2&)
 
    arrCMD = ParseCMD() '// Получаем аргументы ком. строки
    
    '// Using Block
    If Not IsArray(arrCMD) Then Using: UnloadStream: Exit Sub '// Нет аргументов
    
    If arrCMD(0) = "stop" Then StopSnd '// Остановить (достаточно 1 аргумента)
    
    If UBound(arrCMD) = 0 Then Using: UnloadStream: Exit Sub '// Только 1 аргумент
    
    '// ASync Flag
    ASync = True
    If UBound(arrCMD) >= 2 Then If arrCMD(2) = "wait" Then ASync = False
    
    '// Check FileName for existence
    strFileName = arrCMD(1)
    If Dir$(strFileName) = vbNullString Then
        strFileName = App.Path & "\" & strFileName
        If Dir$(strFileName) = vbNullString Then '// Пытаемся найти в рабочем каталоге
            stdOut.writeline "WARNING: specified file does not exists!"
            stdOut.writeline "Anywhere, this command was sended to MCISendString API :)"
        End If
    End If
 
    Select Case arrCMD(0) '// main command
        Case "play"
            PlaySnd Chr(34) & strFileName & Chr(34), ASync '// Воспроизвести
        'Case "stop"
        '    StopSnd '// Остановить
        Case Else '// Another command
            MCISend Command()
    End Select
    
    UnloadStream
    Exit Sub
errH:
    stdOut.writeline "CRITICAL ERROR: " & Err.Number & ". " & Err.Description
    Err.Clear
End Sub
 
Sub StopSnd()
    MCISend "Stop " & MCI_ALIAS '// Останавливаем воспроизведение
    MCISend "Close " & MCI_ALIAS '// Закрываем файл
End Sub
 
Sub PlaySnd(strFileName$, Optional ASync As Boolean = True)
        '// Закрываем файл.
        '// Если он не закрыт, воспроизведение будет продолжено с предыдущей позиции
        '// Seek не использую. Приводит к искажениям в начале воспроизведения на некоторых дорожках.
    MCISend "Close " & MCI_ALIAS
    MCISend "Open " & strFileName & " alias " & MCI_ALIAS '// Присваиваем алиас
    MCISend "Play " & MCI_ALIAS & IIf(ASync, "", " wait")
End Sub
 
Sub MCISend(lpstrCommand$)
    mciSendString lpstrCommand, vbNullString, 0&, 0&
End Sub
 
Function ParseCMD(Optional comm$) '// Парсер командной строки
    On Error GoTo errH
    Dim st, argv, arg, n&, a&
    
    If Len(comm) = 0 Then comm = Command()
    If Len(comm) = 0 Then Exit Function
 
    comm = Replace(comm, " " & Chr(34), Chr(34)) '// ( ")->(")
    comm = Replace(comm, Chr(34) & " ", Chr(34)) '// (" )->(")
    
    st = Split(comm, Chr(34))
    ReDim argv(0 To UBound(Split(Replace(comm, Chr(34), " "))))
    For n = 0 To UBound(st)
        If n Mod 2 = 0 Then '// Не в кавычках
            For Each arg In Split(st(n))
                argv(a) = arg
                a = a + 1
            Next
          Else '// в кавычках - не разбивать по пробелам
            argv(a) = st(n)
            a = a + 1
        End If
    Next
    ReDim Preserve argv(0 To a - 1)
    ParseCMD = argv
    Exit Function
errH:
    stdOut.writeline "CRITICAL ERROR: " & Err.Number & ". " & Err.Description
    Err.Clear
End Function
 
Sub Using()
    With stdOut
        .writeline ""
        .writeline "MCISendString. Console Sound Player."
        .writeline ""
        .writeline "Using:"
        .writeline App.EXEName & ".exe [play|pause|resume|stop] [FileName] {wait}"
    End With
End Sub
 
Sub UnloadStream()
    Set stdIn = Nothing
    Set stdOut = Nothing
    Set stdErr = Nothing
    Set myFSO = Nothing
End Sub
0
Dragokas
Эксперт WindowsАвтор FAQ
17104 / 7159 / 861
Регистрация: 25.12.2011
Сообщений: 10,955
Записей в блоге: 16
05.02.2014, 23:19 12
trash50,
Цитата Сообщение от Dragokas Посмотреть сообщение
Исходник на Visual Basic
точнее VB 6.

Это не JScript. Рядом лежит скомпилированный EXE-шник.
0
Borodа
98 / 92 / 8
Регистрация: 07.08.2013
Сообщений: 299
06.02.2014, 01:59 13
Цитата Сообщение от Aleksey_UA21 Посмотреть сообщение
Не знаю к какому разделу мой вопрос больше относится, поэтому пишу здесь.
Вам скорее всего в реестр. Т.к. там всё намного проще.
Вот так, например:
Windows comes with a bunch of sound events where a wav file will play when an action is done. If you want to add sound events to program actions, you have to crank up the registry editor and go to HKEY_CURRENT_USER\AppEvents\Schemes\Apps There are two folders, .Default and Explorer. Click on Apps with the right mouse button. Choose New, Key. The name of the key must be the name of the .EXE file you want sounds for. For better reading change the key Default from "none" to the name of the application. Click on the key you created with the right mouse button. Choose New, Key named Open . Create another new key name called Close Go to control panel \ sound events. There is a new item and two subitems, Open program and Close program, for the program you just added to the registry. Add sound files to them. The next time you start/close the EXE file the sound will play.
http://www.activewin.com/tips/reg/enhance_2.shtml

 Комментарий модератора 
Borodа, на дату посмотрите.


Добавлено через 1 час 3 минуты

Не по теме:

Цитата Сообщение от Borodа Посмотреть сообщение
Borodа, на дату посмотрите.
Ну и ладно...
Я просто привел ссылку на более подробное описание.
На technet было описание с напдписью Windows 7 в шапке.

В любом случае структура рееста в этом контексте осталась прежней.



Добавлено через 7 минут
А вот так можно проиграть wav средствами самой винды:
Bash
1
powershell -c (New-Object Media.SoundPlayer "c:\windows\media\chimes.wav").PlaySync();
0
Sapphire
58 / 52 / 0
Регистрация: 15.12.2012
Сообщений: 449
06.02.2014, 06:31 14
Во блин, не знал и не надо было, а теперь обязательно поэкспериментирую Особо порадовало что средствами VB можно это дело устроить
0
Dragokas
Эксперт WindowsАвтор FAQ
17104 / 7159 / 861
Регистрация: 25.12.2011
Сообщений: 10,955
Записей в блоге: 16
07.02.2014, 22:37 15
Borodа, Powershell есть не везде.
Sapphire, если хочется действительно средствами винды, то:
1) VBS:
Visual Basic
1
2
3
4
5
6
Set oVoice = CreateObject("SAPI.SpVoice")
set oSpFileStream = CreateObject("SAPI.SpFileStream")
oSpFileStream.Open "c:\ringout.wav"
oVoice.SpeakStream oSpFileStream
oSpFileStream.Close
oVoice.Speak "Finished Playing wave file."
2) VBS:

Автор=Xameleon
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
'/// by Xameleon
 
Set WMPlayer = New WMPlayerClass
 
Dim FilePath
 
'/// Так же можно указать URl - ссылку на файл в интернете
FilePath = "C:\ringout.wav"
 
'/// Открываем ресурс
WMPlayer.OpenMedia FilePath
 
'/// Выводим длительность файла
msgbox "Длительность файла: " & WMPlayer.CurrentMedia.DurationString,vbInformation,"WMPlayerClass"
 
'/// проверка изменения громкости
msgbox "Сейчас будет произведена проверка изменения громкости звука. Эффект эхо. 100% 50% 10%"
WMPlayer.Settings.Volume = 100
WMPlayer.Play
WMPlayer.Settings.Volume = 50
WMPlayer.Play
WMPlayer.Settings.Volume = 10
WMPlayer.Play
 
'/// проверка изменения баланса
MsgBox "Сейчас будет произведена проверка баланса. (левого и правого динамика)",vbInformation,"WMPlayerClass"
WMPlayer.Settings.Volume = 100
WMPlayer.Settings.Balance = -100
WMPlayer.Play
WMPlayer.Settings.Balance = 100
WMPlayer.Play
 
MsgBox "Проверка завершена.",vbInformation,"WMPlayerClass"
 
'/// Класс проигрывателя
Class WMPlayerClass
    '/// Переменная для хранения ссылки на объект плеера
    Dim WMPlayer
    Private Sub Class_Initialize()
        Set WMPlayer = CreateObject("WMPlayer.OCX")
        WMPlayer.settings.autoStart = False
        WMPlayer.settings.enableErrorDialogs = False
    End Sub
 
    '/// Свойство возвращает ссылку на объект настроек плеера
    Public Property Get Settings
        Set Settings = WMPlayer.Settings
    End Property
 
    '/// Метод подключения к ресурсу
    Function OpenMedia(URL)
        '/// Несколько из констант состояния открытия
        Const wmposMediaLoading = 11
        Const wmposMediaLocating = 9
        Const wmposPlaylistOpenNoMedia = 6
        Const wmposMediaOpen = 13
        Const wmposPlaylistOpening = 5
        Const wmposOpeningUnknownURL = 21
        Const wmposUndefined = 0
 
        '/// Для корректного получения данных о содержимом, нужно открыть ресурс.
        WMPlayer.URL = URL
        '/// Убираем звук        
        WMPlayer.settings.mute=true
        '/// Запускаем на проигрывание
        WMPlayer.controls.Play
        '/// Ждём состояния открытия файла. Если файл открыть не удалось вернётся wmposPlaylistOpenNoMedia
        Do
            WScript.Sleep 10
        Loop Until WMPlayer.OpenState = wmposMediaOpen or WMPlayer.OpenState=wmposPlaylistOpenNoMedia
        '/// Останавливаем проигрывание
        WMPlayer.controls.Stop
        '/// Возвращаем звук
        WMPlayer.settings.mute=false
    End Function
 
    '/// Свойство возвращает ссылку на параметры открытого файла
    Public Property Get CurrentMedia
        Set CurrentMedia = WMPlayer.CurrentMedia
    End Property
 
    '/// Метод запуска проигрывания
    Function Play()
        WMPlayer.Controls.Play
        '/// Ожидаем окончания проигрывания (ждём пока плеер не перейдёт в состояние остановки)
        Do
            WScript.Sleep 100
        Loop Until WMPlayer.playState = 1
    End Function
End Class

3) VBS
Visual Basic
1
2
3
4
5
6
7
Set WMP = WScript.CreateObject("MediaPlayer.MediaPlayer","WMP_")
WMP.Open "C:\WINDOWS\Media\Chimes.wav"
WMP.Play
'Do
'   WScript.Sleep 100
'Loop Until WMP.playState = 1
msgbox ""
4) HTA
Кликните здесь для просмотра всего текста
Javascript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<html>
<head>
<title>Sound</title>
<script language="JScript">
function playsound() {
  document.all.sound.src = "C:\\WINDOWS\\Media\\chimes.wav"
}
</script>
<bgsound id=sound>
</head>
<body>
<script language="JScript">
 
playsound();
 
</script>
</body>
</html>
2
trash50
8 / 3 / 0
Регистрация: 05.02.2014
Сообщений: 42
15.02.2014, 10:14 16
Цитата Сообщение от Dragokas Посмотреть сообщение
4) HTA

Кликните здесь для просмотра всего текста

Bash
1
2
3
4
5
6
7
8
9
10
11
12
13
14
@if (true == false) @end /*
:: @echo off
:begin
cscript /nologo /e:javascript "%~dpf0"
:: 
@pause
:: Конец CMD-части
goto :EOF */
 
 
function playsound() {
  document.all.sound.src = "C:\\WINDOWS\\Media\\chimes.wav"
}
playsound();

soundjs2.cmd(16, 3) Ошибка выполнения Microsoft JScript: 'document' - определение отсутствует;
Прошу Вас подсказать.
0
Dragokas
Эксперт WindowsАвтор FAQ
17104 / 7159 / 861
Регистрация: 25.12.2011
Сообщений: 10,955
Записей в блоге: 16
15.02.2014, 14:54 17
Bash
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
@echo off&:: <!--
"%windir%\system32\mshta.exe" "%~f0"
pause
goto :eof
//-->
<html>
    <head>
    <HTA:APPLICATION
        ID="objHTA"
        WindowState="minimize"
        ShowInTaskbar="yes"
    />
    </head>
<bgsound id=sound>
<script>
    document.all.sound.src = "C:\\WINDOWS\\Media\\chimes.wav";
    setTimeout("Go()",1000);
 
    function Go() {
        window.close();
    }
</script>
</html>
1
15.02.2014, 14:54
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.02.2014, 14:54

Выбор оболочки под C++ для написания конкретной программы
Привет всем ! Проконсультируйте пожалуйста меня по поводу оболочек под C++ Дело в том, что я...

Запуск студией и запуск самой виндой. Разница работы программы
Итак, проблема такова: есть проект, который замечательно работает при нажатии F5 в студии. При...

Можно ли ограничить скорость чтения с диска для конкретной программы?
У меня ноут под Win 8.1 x64. Единственное слабое место - hdd. Если запущен qbittorrent, время от...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
17
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.