Воспроизвести wav файл на удаленном компьютере
Привет всем! Имеется необходимость воспроизвести Wav-файл на удаленной машине. В статье "7 способов выполнить команду на удалённом компьютере" есть такой код :
Код:
Computer = "PC3"
Command = "cmd.exe /c systeminfo.exe > \\server\share\%computername%.txt"
Set objWMIService = GetObject ("winmgmts:\\" & Computer & "\root\cimv2:Win32_Process")
Result = objWMIService.Create ("calc.exe", Null, Null, intProcessID)
Что изменить в нем для выполнения моей задачи?
|
Код:
objWMIService.Create "sndrec32.exe /embedding /play /close ""C:\Windows\Media\Notify.wav""", Null, Null, intProcessID
|
Апппп... А тогда что именно заменить?
|
Последнюю строку из приведённого Вами кода.
|
Еще пара уточнений - во второй строке server - имя или IP-адрес компьютера, Share - расшаренная папка, a %computername%.txt - что такое? - файл со списком компьютеров?
И как я понимаю, на удаленном компьютере обязательно должна быть расшаренная папка с правами на запись фалов?
|
cambit, для воспроизведения вторая строка Вам совершенно не нужна. Она собирает информацию об удалённом компьютере в файл на разделённом ресурсе.
Для простого воспроизведения достаточно:
Код:
WScript.CreateObject("WbemScripting.SWbemLocator"). _
ConnectServer("PC3", "root\cimv2"). _
Get("Win32_Process").Create _
"sndrec32.exe /embedding /play /close ""C:\Windows\Media\Notify.wav"""
наличия на удалённой машине файлов «sndrec32.exe» — в PATH и «Notify.wav» — по указанному пути.
|
Спасибо, все работает! А если учетная запись на удаленном компьютере отличается от локального - можно ее указать отдельно (пусть даже и в открытом виде)?
|
Да, можно:
Код:
WScript.CreateObject("WbemScripting.SWbemLocator"). _
ConnectServer("PC3", "root\cimv2", "UserAccount", "Password"). _
Get("Win32_Process").Create _
"sndrec32.exe /embedding /play /close ""C:\Windows\Media\Notify.wav"""
|
Спасибо огромное, но задача походу усложняется - на время проигрывания файла нужно включить реле - т.е. например в какой нибудь разряд LPT порта записать 1. а после окончания воспроизведения записать туда 0. Походу нужно выполнить на удаленной машине другой скрипт...
|
cambit, эта задача явно не для скрипта.
P.S. Для начала: Проект PCPORTS.
|
Эт я знаю - эту задачу (включение реле) выполнит другая программа, а вот ее запустить на удаленной машине нужно из скрипта. Т.е. делим задачу на 2 части :
1-я - запустить скрипт Sound.vbs на удаленной машине.
2-я - скрипт Sound.vbs сначала запускает прогу Port_on.exe, затем проигрывает файл.wav, после окончания воспроизведения закрывает прогу Port_on.exe
|
cambit, покажите, что из себя представляет «Port_on.exe».
|
Так и
Код:
"sndrec32.exe /embedding /play /close ""C:\Windows\Media\Notify.wav"""
оттуда-же.
Ну тогда конечно лучше так:
1. Запустить приложение, устанавливающее "1" на какой-либо вывод LPT.
2. Воспроизвести файл.
3. Запустить приложение, устанавливающее "0" на тот же вывод LPT.
|
Цитата:
Цитата cambit
Так и
Код:
"sndrec32.exe /embedding /play /close ""C:\Windows\Media\Notify.wav"""
оттуда-же. »
|
«Есссстессственно» ;).
Цитата:
Цитата cambit
Ну тогда конечно лучше так: »
|
Так у Вас есть уже приложение «устанавливающее … на какой-либо вывод LPT»? И насчёт «лучше» — не уверен. Метод «.Create()» класса «Win32_Process» не ожидает завершения приложения, посему несколько усложнится задача отслеживания его (приложения) завершения.
|
Вопрос с портом отпал, и решился очень оригинальным способом - коммутацией выходов звуковой карты путем внесения изменений в реестр. Т.о. в указанный выше код нужно добавить выполнение двух рег-файлов -до и после воспроизведения и, раз невозможно отследить окончание воспроизведения, паузу в несколько секунд (подберу точно позже).
|
От, бл.. , тут опять проблема... Суть решения проблемы была в переключении режима работы динамиков с стерео на квадрофонические (т.е. - шнур со входа усилителя втыкаем в синий выход звуковой карты и при нормальном воспроизведении аудиофайла синий вход является линейным входом и на усилитель звук, естественно, не идет, когда же файл воспроизводится удаленно - программа должна была переключить динамики в квадрофонический режим, и синий разъем звуковой карты становится выходом тыловых динамиков и звук идет на усилитель. Но как оказалось такой финт проходит только с Windows Media Player, т.к. он дублирует сигнал с фронтальных колонок на тыловые, а ни sndrec32 ни MPLAY32 этого не делают и транслируют звук только на основные - фронтальные динамики, а Windows Media Player в скрытом режиме не работает по-моему...
|
Попробуйте на нём локально этот и следующий за ним пример.
|
Cпасибо большое! Оба варианта локально работают так как надо... НО! опять не все слава Богу... Походу провалилась моя идея с комутированием выходов. То есть она работает вручную нормально. А вот сменить программно режим работы динамиков не получается. Пытался отследить изменения в реестре при переключении - отследил ветки реестра, определяющие эти режимы, но при изменении просто значений реестра ничего не меняется, наверное нужно внести эти изменения в файл драйвера, а как - не знаю. При мониторинге изменений файлов в момент переключения меняется файл C:\Windows\system32\config\system и все... Что делать - ума не приложу.
|
Цитата:
Цитата cambit
При мониторинге изменений файлов в момент переключения меняется файл C:\Windows\system32\config\system и все... »
|
Это как раз файл улья (hive) раздела реестра «HKEY_LOCAL_MACHINE\SYSTEM»: Архитектура системного реестра. Часть 2.
Цитата:
Цитата cambit
Походу провалилась моя идея с комутированием выходов. … Что делать - ума не приложу. »
|
Сожалею.
|
Время: 15:29.
© OSzone.net 2001-