Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   Воспроизвести wav файл на удаленном компьютере (http://forum.oszone.net/showthread.php?t=287041)

cambit 26-08-2014 13:12 2394254

Воспроизвести 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)

Что изменить в нем для выполнения моей задачи?

Iska 26-08-2014 15:05 2394333

Код:

objWMIService.Create "sndrec32.exe /embedding /play /close ""C:\Windows\Media\Notify.wav""", Null, Null, intProcessID

cambit 26-08-2014 16:48 2394365

Апппп... А тогда что именно заменить?

Iska 26-08-2014 17:40 2394402

Последнюю строку из приведённого Вами кода.

cambit 26-08-2014 18:47 2394453

Еще пара уточнений - во второй строке server - имя или IP-адрес компьютера, Share - расшаренная папка, a %computername%.txt - что такое? - файл со списком компьютеров?
И как я понимаю, на удаленном компьютере обязательно должна быть расшаренная папка с правами на запись фалов?

Iska 26-08-2014 19:02 2394471

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» — по указанному пути.

cambit 26-08-2014 20:15 2394500

Спасибо, все работает! А если учетная запись на удаленном компьютере отличается от локального - можно ее указать отдельно (пусть даже и в открытом виде)?

Iska 26-08-2014 21:23 2394529

Да, можно:
Код:

WScript.CreateObject("WbemScripting.SWbemLocator"). _
        ConnectServer("PC3", "root\cimv2", "UserAccount", "Password"). _
        Get("Win32_Process").Create _
        "sndrec32.exe /embedding /play /close ""C:\Windows\Media\Notify.wav"""


cambit 26-08-2014 21:45 2394541

Спасибо огромное, но задача походу усложняется - на время проигрывания файла нужно включить реле - т.е. например в какой нибудь разряд LPT порта записать 1. а после окончания воспроизведения записать туда 0. Походу нужно выполнить на удаленной машине другой скрипт...

Iska 26-08-2014 22:55 2394579

cambit, эта задача явно не для скрипта.

P.S. Для начала: Проект PCPORTS.

cambit 26-08-2014 23:08 2394583

Эт я знаю - эту задачу (включение реле) выполнит другая программа, а вот ее запустить на удаленной машине нужно из скрипта. Т.е. делим задачу на 2 части :
1-я - запустить скрипт Sound.vbs на удаленной машине.
2-я - скрипт Sound.vbs сначала запускает прогу Port_on.exe, затем проигрывает файл.wav, после окончания воспроизведения закрывает прогу Port_on.exe

Iska 26-08-2014 23:15 2394586

cambit, покажите, что из себя представляет «Port_on.exe».

cambit 26-08-2014 23:21 2394587

Во-во! Как раз попробую сделать на основе http://www.kernelchip.ru/pcports.php
Мож прям оттуда запустить sndrec32?

Iska 26-08-2014 23:41 2394599

Цитата:

Цитата cambit
Мож прям оттуда запустить sndrec32? »

Можно и так. А можно и напрямую воспроизводить, не через запуск внешнего приложения. Только для скриптов целая куча способов: vbscript: проигрывание audio-файлов — Серый форум, vbscript: воспроизведение аудио — Серый форум, а уж для больших ЯВУ явно будет поболе.

cambit 26-08-2014 23:59 2394604

Так и
Код:

"sndrec32.exe /embedding /play /close ""C:\Windows\Media\Notify.wav"""
оттуда-же.

Ну тогда конечно лучше так:
1. Запустить приложение, устанавливающее "1" на какой-либо вывод LPT.
2. Воспроизвести файл.
3. Запустить приложение, устанавливающее "0" на тот же вывод LPT.

Iska 27-08-2014 00:08 2394607

Цитата:

Цитата cambit
Так и
Код:

"sndrec32.exe /embedding /play /close ""C:\Windows\Media\Notify.wav"""
оттуда-же. »

«Есссстессственно» ;).

Цитата:

Цитата cambit
Ну тогда конечно лучше так: »

Так у Вас есть уже приложение «устанавливающее … на какой-либо вывод LPT»? И насчёт «лучше» — не уверен. Метод «.Create()» класса «Win32_Process» не ожидает завершения приложения, посему несколько усложнится задача отслеживания его (приложения) завершения.

cambit 30-08-2014 10:01 2396070

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

Iska 30-08-2014 10:41 2396084

Цитата:

Цитата cambit
двух рег-файлов »

Покажите их оба.

cambit 01-09-2014 21:12 2397137

От, бл.. , тут опять проблема... Суть решения проблемы была в переключении режима работы динамиков с стерео на квадрофонические (т.е. - шнур со входа усилителя втыкаем в синий выход звуковой карты и при нормальном воспроизведении аудиофайла синий вход является линейным входом и на усилитель звук, естественно, не идет, когда же файл воспроизводится удаленно - программа должна была переключить динамики в квадрофонический режим, и синий разъем звуковой карты становится выходом тыловых динамиков и звук идет на усилитель. Но как оказалось такой финт проходит только с Windows Media Player, т.к. он дублирует сигнал с фронтальных колонок на тыловые, а ни sndrec32 ни MPLAY32 этого не делают и транслируют звук только на основные - фронтальные динамики, а Windows Media Player в скрытом режиме не работает по-моему...

Iska 01-09-2014 21:32 2397148

Попробуйте на нём локально этот и следующий за ним пример.

cambit 02-09-2014 21:59 2397585

Cпасибо большое! Оба варианта локально работают так как надо... НО! опять не все слава Богу... Походу провалилась моя идея с комутированием выходов. То есть она работает вручную нормально. А вот сменить программно режим работы динамиков не получается. Пытался отследить изменения в реестре при переключении - отследил ветки реестра, определяющие эти режимы, но при изменении просто значений реестра ничего не меняется, наверное нужно внести эти изменения в файл драйвера, а как - не знаю. При мониторинге изменений файлов в момент переключения меняется файл C:\Windows\system32\config\system и все... Что делать - ума не приложу.

Iska 03-09-2014 05:16 2397672

Цитата:

Цитата cambit
При мониторинге изменений файлов в момент переключения меняется файл C:\Windows\system32\config\system и все... »

Это как раз файл улья (hive) раздела реестра «HKEY_LOCAL_MACHINE\SYSTEM»: Архитектура системного реестра. Часть 2.

Цитата:

Цитата cambit
Походу провалилась моя идея с комутированием выходов. … Что делать - ума не приложу. »

Сожалею.


Время: 15:29.

Время: 15:29.
© OSzone.net 2001-