Форум программистов, компьютерный форум, киберфорум
Batch (CMD/BAT)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.53/100: Рейтинг темы: голосов - 100, средняя оценка - 4.53
0 / 0 / 0
Регистрация: 08.02.2013
Сообщений: 5

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

08.02.2013, 12:43. Показов 19477. Ответов 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)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
08.02.2013, 12:43
Ответы с готовыми решениями:

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

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

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

16
Модератор
Эксперт JS
 Аватар для Eva Rosalene
5241 / 2115 / 416
Регистрация: 06.01.2013
Сообщений: 4,846
08.02.2013, 14:54
Через vbs запустить winamp скрытно, и, подождав секунд 5 закрыть

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

Решение

Писал я такую приблуду.
Кликните здесь для просмотра всего текста
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
Вложения
Тип файла: zip mcisend.zip (477 байт, 305 просмотров)
1
0 / 0 / 0
Регистрация: 08.02.2013
Сообщений: 5
11.02.2013, 10:32  [ТС]
Спасибо, Charles Kludge!!!
Это именно то, что я хотел.
0
Эксперт WindowsАвтор FAQ
 Аватар для Dragokas
18033 / 7736 / 892
Регистрация: 25.12.2011
Сообщений: 11,502
Записей в блоге: 16
12.02.2013, 21:24
Ладно, пусть и мое будет.

Исходник на 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.
Вложения
Тип файла: rar mcisend.rar (5.3 Кб, 121 просмотров)
2
Эксперт WindowsАвтор FAQ
 Аватар для Dragokas
18033 / 7736 / 892
Регистрация: 25.12.2011
Сообщений: 11,502
Записей в блоге: 16
13.02.2013, 20:38
А еще 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
0 / 0 / 0
Регистрация: 08.02.2013
Сообщений: 5
13.02.2013, 22:36  [ТС]
Цитата Сообщение от Dragokas Посмотреть сообщение
Bash
1
2
mediaplay 10000 "c:\temp\1.mp3" 
mediaplay 180000 "c:\my files\1.wav"
Что-то не работает.
А за NirCMD спасибо.
0
Эксперт WindowsАвтор FAQ
 Аватар для Dragokas
18033 / 7736 / 892
Регистрация: 25.12.2011
Сообщений: 11,502
Записей в блоге: 16
14.02.2013, 02:07
Aleksey_UA21, видимо само название программы не дописали в начало. Попробуйте теперь. У меня работает.
0
0 / 0 / 0
Регистрация: 08.02.2013
Сообщений: 5
14.02.2013, 12:15  [ТС]
Во, теперь работает
0
8 / 3 / 0
Регистрация: 05.02.2014
Сообщений: 42
05.02.2014, 15:26
Как встроит 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
Эксперт WindowsАвтор FAQ
 Аватар для Dragokas
18033 / 7736 / 892
Регистрация: 25.12.2011
Сообщений: 11,502
Записей в блоге: 16
05.02.2014, 23:19
trash50,
Цитата Сообщение от Dragokas Посмотреть сообщение
Исходник на Visual Basic
точнее VB 6.

Это не JScript. Рядом лежит скомпилированный EXE-шник.
0
101 / 95 / 8
Регистрация: 07.08.2013
Сообщений: 299
06.02.2014, 01:59
Цитата Сообщение от 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
Во блин, не знал и не надо было, а теперь обязательно поэкспериментирую Особо порадовало что средствами VB можно это дело устроить
0
Эксперт WindowsАвтор FAQ
 Аватар для Dragokas
18033 / 7736 / 892
Регистрация: 25.12.2011
Сообщений: 11,502
Записей в блоге: 16
07.02.2014, 22:37
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
8 / 3 / 0
Регистрация: 05.02.2014
Сообщений: 42
15.02.2014, 10:14
Цитата Сообщение от 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
Эксперт WindowsАвтор FAQ
 Аватар для Dragokas
18033 / 7736 / 892
Регистрация: 25.12.2011
Сообщений: 11,502
Записей в блоге: 16
15.02.2014, 14:54
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
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
15.02.2014, 14:54
Помогаю со студенческими работами здесь

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

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
17
Ответ Создать тему
Новые блоги и статьи
Фото всей Земли с борта корабля Orion миссии Artemis II
kumehtar 04.04.2026
Это первое подобное фото сделанное человеком за 50 лет. Снимок называют новым вариантом легендарной фотографии «The Blue Marble» 1972 года, сделанной с борта корабля «Аполлон-17». Новое фото. . .
Вывод диалогового окна перед закрытием, если документ не проведён
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать программный контроль на предмет проведения документа. . .
Программный контроль заполнения реквизита табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать контроль заполнения реквизита "ПричинаСписания". . .
wmic не является внутренней или внешней командой
Maks 02.04.2026
Решение: DISM / Online / Add-Capability / CapabilityName:WMIC~~~~ Отсюда: https:/ / winitpro. ru/ index. php/ 2025/ 02/ 14/ komanda-wmic-ne-naydena/
Программная установка даты и запрет ее изменения
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: при создании документов установить период списания автоматически. . .
Вывод данных в справочнике через динамический список
Maks 01.04.2026
Реализация из решения ниже выполнена на примере нетипового справочника "Спецтехника" разработанного в конфигурации КА2. Задача: вывести данные из ТЧ нетипового документа. . .
Программное заполнения текстового поля в реквизите формы документа
Maks 01.04.2026
Алгоритм из решения ниже реализован на нетиповом документе "ВыдачаОборудованияНаСпецтехнику" разработанного в конфигурации КА2, в дополнении к предыдущему решению. На форме документа создается. . .
К слову об оптимизации
kumehtar 01.04.2026
Вспоминаю начало 2000-х, университет, когда я писал на Delphi. Тогда среди программистов на форумах активно обсуждали аккуратную работу с памятью: нужно было следить за переменными, вовремя. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru