Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Прочее";
Текущий архив: 2011.08.21;
Скачать: [xml.tar.bz2];

Вниз

PlaySound из Windows Service под Windows 2008 Server   Найти похожие ветки 

 
DVM ©   (2011-04-28 12:56) [0]

Возникла необходимость дать службе возможность издавать звук. Зачем - долго объяснять, но вот надо и все. Само собой, начиная с Windows Vista это не получается сделать.
Вариант с созданием отдельного приложения, запускаемого на десктопе залогиненного пользователя и взаимодействующего со службой (что вобщем то является идеологически правильным) отпадает, так служба запущена на сервере и там нет залогиненных пользователей.

Может у кого есть какие мысли как заставить сервис издать звук?
Если коротко, то это своего рода оповещение о неполадках.


 
clickmaker ©   (2011-04-28 13:17) [1]

> так служба запущена на сервере и там нет залогиненных пользователей

а кто тогда слушатель? или это для развлечения одмина, запертого в серверной? )


 
DVM ©   (2011-04-28 13:50) [2]


> а кто тогда слушатель? или это для развлечения одмина, запертого
> в серверной? )

Скорее для привлечения админа или кого-то подобного ибо звук от сервера выведен в другое помещение.


 
Вариант   (2011-04-28 13:59) [3]


> DVM ©   (28.04.11 12:56)

Не пробовал издавать звуки из под сервиса, возможно поможет это ->
http://www.microsofttranslator.com/bv.aspx?from=ru&to=en&a=http%3A%2F%2Fsupport.microsoft.com%2Fkb%2F255584%2Fen-us%3Ffr%3D1

И второй вариант, возможно просто использовать waveOutOpen и т.д.???

PS:Кстати мы для привлечения админа шлем ему SMS(у нас есть такая возможность), email и сообщение через net send


 
OW ©   (2011-04-28 13:59) [4]


> Может у кого есть какие мысли

может, письмо/смс?


 
Inovet ©   (2011-04-28 14:20) [5]

> [3] Вариант   (28.04.11 13:59)
> waveOutOpen и т.д.???
>
> PS:Кстати мы для привлечения админа шлем ему SMS(у нас есть
> такая возможность), email и сообщение через net send

В колонкак и в текстовых сообщениях: "Вставай проклятьем заклеймённый". Вобщем, действительно при наличии сети (а зачем без неё сервер), как-то неправильно тянуть звуковые провода в другое помещение, опять же все могут быть на обеде или дома.


 
Anatoly Podgoretsky ©   (2011-04-28 14:22) [6]

> DVM  (28.04.2011 12:56:00)  [0]

И там некому слушать!


 
Anatoly Podgoretsky ©   (2011-04-28 14:23) [7]

> OW  (28.04.2011 13:59:04)  [4]

Курьерской службой


 
Empleado ©   (2011-04-28 14:26) [8]


> DVM ©   (28.04.11 12:56)  

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


 
Медвежонок Пятачок ©   (2011-04-28 14:33) [9]

Может у кого есть какие мысли как заставить сервис издать звук?

Если служба начнет печатать текст обращения к админу на чешском телеграфном аппарате Т-100, то админ реально сможет это услышать


 
clickmaker ©   (2011-04-28 14:33) [10]

> Курьерской службой

голубиной почтой, а голубя натренировать на звук


 
Медвежонок Пятачок ©   (2011-04-28 14:40) [11]

выдвинуть лоток цидирома.
к лотку привязать ниточку.
ниточка дергает тумблер.
тумблер включает бумбокс.

вариант: ниточка переводи стрелки часов с кукушкой на 23:00


 
OW ©   (2011-04-28 14:45) [12]


> выдвинуть лоток цидирома.
> к лотку привязать ниточку.
> ниточка

открывает решетку клетки и голубь полетел..


 
clickmaker ©   (2011-04-28 14:48) [13]

> выдвинуть лоток цидирома

задвинуть лоток сидирома с предустановленной чашкой кофе
кофе проливается на клетку с попугаем
попугай орет в микрофон "серррвер накрывается, кррретины!"
звук от микрофона выведен в нужные места офиса


 
DVM ©   (2011-04-28 15:20) [14]


> PS:Кстати мы для привлечения админа шлем ему SMS(у нас есть
> такая возможность), email и сообщение через net send

Слать то я разумеется шлю, сервис отправляет данные о проблеме клиентскому ПО, установленному на машине дежурного администратора, тут проблем нет. Но, этого как показывает практика, недостаточно. Дежурный администратор может уснуть, отключить у себя эту клиентскую программу или забыть ее запустить, отойти и т.д. Поэтому было решено подключить колонку к серверу и вывести от нее звук в помещение где сидит дежурный админ. Но сервис, зараза звуки не издает.

SMS хорошо бы, но админы разные, телефоны разные, не совсем подходит.
Нужен постоянный и длительный раздражитель :)


> выдвинуть лоток цидирома.
> к лотку привязать ниточку.
> ниточка дергает тумблер.
> тумблер включает бумбокс.

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

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


 
clickmaker ©   (2011-04-28 15:27) [15]

а как-нибудь через CreateProcessAsUser нельзя извратиться?


 
DVM ©   (2011-04-28 15:28) [16]


> Вариант   (28.04.11 13:59) [3]

Посмотрел по ссылке. Скорее всего не поможет, ибо:
1) Статья 2006 года, висты еще не было вроде.
2) Под XP звук из сервиса есть!
3) Моя служба не LOCALSYSTEM и не может ей быть, иначе она не сможет мониторить то, что мониторит. Служба запускается от имени определенного пользователя, так что в профиле его все прописано правильно насчет звуковых устройств. Эта же служба запущенная как консольное приложение звук прекрасно под этим же пользователем издает.


 
Вариант   (2011-04-28 15:36) [17]


> DVM ©   (28.04.11 15:28) [16]

Ок, буду  знать, что не поможет - отрицательный результат - тоже результат. А что насчет waveOutXXX???

Или хочется таки одной командой вывести звук?


 
DVM ©   (2011-04-28 15:43) [18]


> Вариант   (28.04.11 15:36) [17]


> А что насчет waveOutXXX???

Я пока искал, натыкался на обсуждения различных метов вывода звука, там и DirectSound пробовали - безрезультатно. Думаю PlaySound сводится к тем же более низкоуровневым функциям.

Проблема в том, что для воспроизведения звука нужен интерактивный пользователь, возможно с пом CreateProcessAsUser такого удастся создать.


 
DiamondShark ©   (2011-04-28 16:10) [19]


> DVM ©   (28.04.11 15:28) [16]
>  Скорее всего не поможет, ибо:

Т.е., теоретизировать лучше, чем проверить?


> Служба запускается от имени определенного пользователя,
> так что в профиле его все прописано правильно насчет звуковых
> устройств. Эта же служба запущенная как консольное приложение
> звук прекрасно под этим же пользователем издает.

При интерактивном и неинтерактивном входе реестры могут какбэ немного отличаться.
Дамп нужной ветки реестра в двух случаях решил бы это однозначно.
Но теоретизировать лучше.


> Думаю PlaySound сводится к тем же более низкоуровневым функциям.

К тем же, да не совсем. PlaySound работает с устройством по умолчанию, а в waveOutXXX устройство можно явно указать.

Ну и, разумеется, код никто никому не покажет.


 
DVM ©   (2011-04-28 16:14) [20]


> DiamondShark ©   (28.04.11 16:10) [19]


> Ну и, разумеется, код никто никому не покажет.

Код чего ты хочешь увидеть? Вызова PlaySound? Службы? Какой код?


> Т.е., теоретизировать лучше, чем проверить?

Я проверю, не переживай.


 
DVM ©   (2011-04-28 16:17) [21]


> DiamondShark ©   (28.04.11 16:10) [19]



> При интерактивном и неинтерактивном входе реестры могут
> какбэ немного отличаться.

Проверял? Или теоретизируешь?


 
DiamondShark ©   (2011-04-28 16:18) [22]


> DVM ©   (28.04.11 16:14) [20]

Вызова PlaySound.
С результатами диагностики.


> Я проверю, не переживай.

Гы. Мне вообще-то пофиг. Проблема у тебя, а не у меня.
Но за пол-дня ты так и не проверил, исключительно из философских соображений.


 
DiamondShark ©   (2011-04-28 16:20) [23]


> DVM ©   (28.04.11 16:17) [21]

Тебе зарплату за работающие программы платят, или за "поймай на слове чувака с форума"?


 
Jan   (2011-04-28 16:49) [24]

Пишем приложение, которое запускает звук и по событию, событие порождаем из сервиса. А вообще сама постановка задачи - бред)


 
DVM ©   (2011-04-28 17:11) [25]


> Jan   (28.04.11 16:49) [24]


> Пишем приложение, которое запускает звук и по событию, событие
> порождаем из сервиса.

Нет залогиненного пользователя, нет интерактивной сессии, этому приложению негде исполняться со звуком точно так же как и сервису.


 
sniknik ©   (2011-04-28 17:32) [26]

> А вообще сама постановка задачи - бред)
да ну?
представь кучу стоек с серверами, мониторов нет, где то "глюк" (позвонили клиенты сказали сайт/что то х.з. что ...  не работает... а у тебя все ок, пингуется, т.е. проблема где то в приложении, и предположим приложение твое...), "идти на звук" гораздо удобнее чем считать стойки/читать таблички с номерами серверов.


 
DVM ©   (2011-04-28 17:50) [27]


> DiamondShark ©   (28.04.11 16:18) [22]


> Вызова PlaySound.
> С результатами диагностики.

Ну тут все проще простого. PlaySound ошибки не выдает, т.е результат ее исполнения TRUE. Просто звука нет. Попробую переделать на waveOutXXX, но что-то мне подсказывает, что не в этом дело.


procedure TPlaySoundThread.Execute;
begin
 while not Terminated do
   begin
     try
       ....
       Win32Check(PlaySound(PChar(SoundFile), 0, SND_FILENAME or     SND_NOWAIT));
       ....
     except
       on e: Exception do
         Logger.Error(e.ClassName + " : " + e.Message);
     end;
   end;
end;


 
clickmaker ©   (2011-04-28 18:03) [28]

флаг SND_SYSTEM не поможет?


 
Jeer ©   (2011-04-28 18:10) [29]

Вывести сигнал на порт.
Службе не возбраняется делать это.


 
DiamondShark ©   (2011-04-28 18:12) [30]


> DVM ©   (28.04.11 17:50) [27]
> Ну тут все проще простого. PlaySound ошибки не выдает

И не выдаст в таком варианте. Добавь SND_NODEFAULT.

Как на счёт доступности файла? Попробуй его открыть с логированием результата.

У меня нет висты и выше под рукой, сам проверить не могу.
Если с результатом и с доступом к файлу всё ок, может флажок SND_SYSTEM поможет.


 
Inovet ©   (2011-04-28 18:51) [31]

А флаг SERVICE_INTERACTIVE_PROCESS к выводу звука имеет отношение?


 
DiamondShark ©   (2011-04-28 19:06) [32]


> Inovet ©   (28.04.11 18:51) [31]
> А флаг SERVICE_INTERACTIVE_PROCESS к выводу звука имеет
> отношение?

Абсолютно никакого.


 
Jan   (2011-04-28 21:08) [33]


> да ну?
> представь кучу стоек с серверами, мониторов нет, где то
> "глюк" (позвонили клиенты сказали сайт/что то х.з. что .
> ..  не работает... а у тебя все ок, пингуется, т.е. проблема
> где то в приложении, и предположим приложение твое...),
> "идти на звук" гораздо удобнее чем считать стойки/читать
> таблички с номерами серверов

там другая ситуация - нужно просто подать знак, если что-то не так судя по описанию автора

> Нет залогиненного пользователя, нет интерактивной сессии,
>  этому приложению негде исполняться со звуком точно так
> же как и сервису

пожно спикером попищать, выдать управляющий сигнал на lpt/com, а там ключ с реле присобачить


 
DVM ©   (2011-04-28 22:24) [34]


> DiamondShark ©   (28.04.11 18:12) [30]


> И не выдаст в таком варианте. Добавь SND_NODEFAULT.

то же самое, PlaySound ошибок не возвращает. Звука нет.


> Как на счёт доступности файла? Попробуй его открыть с логированием
> результата.

Файл доступен 100%. Служба запущена от имени того же самого пользователя, от которого я ее запускаю как консольное приложение, в режиме консольного приложения звук есть. На всякий случай проверил - есть доступ.


> У меня нет висты и выше под рукой, сам проверить не могу.
>
> Если с результатом и с доступом к файлу всё ок, может флажок
> SND_SYSTEM поможет.

Не, тоже не помог. Тишина, ошибок нет.


> Inovet ©   (28.04.11 18:51) [31]
> А флаг SERVICE_INTERACTIVE_PROCESS к выводу звука имеет
> отношение?

Этот флаг теперь вообще мало что меняет, если вообще что меняет.


> пожно спикером попищать, выдать управляющий сигнал на lpt/com,
>  а там ключ с реле присобачить

Спикер тоже из службы молчит :)


 
Eraser ©   (2011-04-28 22:34) [35]

>
>
> [0] DVM ©   (28.04.11 12:56)

в висте полностью переделали звуковую архитектуру в очередной раз, так что подозреваю, что прямого решения нет. самое простое - запускать процесс воспроизводящий звук в нужной терминальной сесии. Вот пример http://rouse.drkb.ru/winapi.php#servicenotifyer


 
DVM ©   (2011-04-28 22:43) [36]


> Eraser ©   (28.04.11 22:34) [35]


> самое простое - запускать процесс воспроизводящий звук в
> нужной терминальной сесии

Для этого эту сессию надо организовать. На сервере нет залогиненных пользователей как я уже говорил, нет доступной терминальной сессии откуда бы я мог с помощью отдельного процесса вывести звук.


 
Inovet ©   (2011-04-28 22:53) [37]

Виндоус звук выдаёт ещё до логина, значит можно, только какой своей частью она это делает.


 
Rouse_ ©   (2011-04-28 23:03) [38]


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

Вообще-то аппаратные проблемы софтверно не решаются. А тут на лицо проблема которая должна решаться административными методами.
Но раз уж так хочецо - писискрипер же есть в наличии, он по идее всегда при правильном подходе бибикить должен.


 
Rouse_ ©   (2011-04-28 23:07) [39]

Ну и до кучи NetMessageBufferSend глобально должен разбудить заспанного админа.


 
sniknik ©   (2011-04-28 23:10) [40]

> нужно просто подать знак
в чем бредовость "подания" знака звуком? заодно и амина "закемарившего" разбудит...
и, да, можно по сети послать команду на рабочую станцию... ну, а если это неполадки сети.
и да может можно чего то другое придумать (типа лотка жмущего )

p.s. честно, достает уже. советы от даже не пытающихся вникнуть/представить ситуацию, но заявляющих, утрировано "автор сам дурак. раз делает не так как делал бы они... если бы могли".
сам недавно был в практически такой же ситуации.
http://delphimaster.net/view/1-1297432020/

> в нужной терминальной сесии.
и где же ты сессия когда ты так нужна... :)
> [0] служба запущена на сервере и там нет залогиненных пользователей.

> писискрипер же есть в наличии
> Спикер тоже из службы молчит :)

> NetMessageBufferSend
а сети к примеру нет. отвалилась. о чем и нужно посигналить...



Страницы: 1 2 вся ветка

Форум: "Прочее";
Текущий архив: 2011.08.21;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.64 MB
Время: 0.004 c
15-1304569666
OW
2011-05-05 08:27
2011.08.21
Indy. IdSMTP. Lotus Notes 6.5 Incorrect format in MIME data


15-1303780922
Мазут
2011-04-26 05:22
2011.08.21
Защитил свои авторские права - в турьму...


15-1304368197
Юрий
2011-05-03 00:29
2011.08.21
С днем рождения ! 3 мая 2011 вторник


1-1262678404
Michail89
2010-01-05 11:00
2011.08.21
Завершение дочернего процесса


2-1305104750
Feamor
2011-05-11 13:05
2011.08.21
Ищу совета по функции AssignFile и ее работы в сети





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский