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

Вниз

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

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

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

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

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

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

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


 
DVM ©   (2011-04-28 23:13) [41]


> Rouse_ ©   (28.04.11 23:03) [38]


> он по идее всегда при правильном подходе бибикить должен.

не бибикает, проверено или подход у меня (Windows.Beep) неверный.


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

> не бибикает
а, Windows Audio? оно же само служба. в XP по крайней мере.

uses
 MMSystem;

sndPlaySound("C:\Windows\Media\Windows XP - восклицание.wav", SND_NODEFAULT or SND_ASYNC or SND_LOOP);


 
Rouse_ ©   (2011-04-28 23:24) [43]


> или подход у меня (Windows.Beep) неверный.

Сбилди на FASM вот это и стартуй как сервис (ток с флагом драйвера), драйвер загрузется бикнет и выгрузится.
format PE DLL native 4.0 at 10000h
entry DriverEntry

include "macro/struct.inc"
include "macro/proc32.inc"
include "KMD/KMD.inc"

section ".text" code readable executable notpageable

proc DriverEntry lpDriverObject, lpusRegistryPath
       mov ah,2
       mov dl,7
       int 21h
       mov     [eax + DRIVER_OBJECT.DriverUnload], DriverUnload
       mov     eax, STATUS_SUCCESS
       ret
endp

proc DriverUnload lpDriverObject
       ret
endp

section ".data" data readable writeable notpageable

section ".rdata" data readable notpageable

section "INIT" import code discardable executable readable writeable

section ".reloc" fixups data readable discardable


 
Rouse_ ©   (2011-04-28 23:26) [44]

точнtt

      push eax
      mov ah,2
      mov dl,7
      int 21h
      pop eax


 
Eraser ©   (2011-04-28 23:26) [45]

> [36] DVM ©   (28.04.11 22:43)

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


 
Rouse_ ©   (2011-04-28 23:30) [46]

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

http://www.koders.com/c/fidFEC3527B9D951559D62722A9C0C603863106CA9B.aspx


 
DVM ©   (2011-04-28 23:31) [47]


> sniknik ©   (28.04.11 23:23) [42]


> а, Windows Audio? оно же само служба. в XP по крайней мере.

не взлетит


 
Rouse_ ©   (2011-04-28 23:54) [48]

Как-то так:

unit Unit1;

interface

uses
 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
 Dialogs, GSListView, StdCtrls;

type
 TForm1 = class(TForm)
   GSListView1: TGSListView;
   Button1: TButton;
   procedure Button1Click(Sender: TObject);
 end;

var
 Form1: TForm1;

implementation

{$R *.dfm}

const
 ntdll = "ntdll.dll";

type
 UNICODE_STRING = record
   Length: WORD;
   MaximumLength: WORD;
   Buffer: PWideChar;
 end;
 PUNICODE_STRING = ^UNICODE_STRING;

 OBJECT_ATTRIBUTES = record
   Length: ULONG;
   RootDirectory: THandle;
   ObjectName: PUNICODE_STRING;
   Attributes: ULONG;
   SecurityDescriptor: Pointer;
   SecurityQualityOfService: Pointer;
 end;
 POBJECT_ATTRIBUTES = ^OBJECT_ATTRIBUTES;

 IO_STATUS_BLOCK = record
   case integer of
     0:
      (Status: DWORD);
     1:
      (Pointer: Pointer;
       Information: ULONG);
 end;
 PIO_STATUS_BLOCK = ^IO_STATUS_BLOCK;

 BEEP_SET_PARAMETERS = record
  Frequency,
  Duration: DWORD;
 end;

 function ZwOpenFile(FileHandle: PHANDLE; DesiredAccess: ACCESS_MASK;
   ObjectAttributes: POBJECT_ATTRIBUTES; IoStatusBlock: PIO_STATUS_BLOCK;
   ShareAccess: ULONG; OpenOptions: ULONG): DWORD; stdcall; external ntdll;

 procedure RtlInitUnicodeString(
   DestinationString : PUNICODE_STRING;
   SourceString : LPCWSTR); stdcall; external ntdll;

function GetCtlCode: Integer;
const
 FILE_DEVICE_BEEP = $00000001;
 METHOD_BUFFERED = $00000000;
 FILE_ANY_ACCESS = $00000000;
begin
 Result:=
    (FILE_DEVICE_BEEP shl 16) or
    (FILE_ANY_ACCESS shl 14) or METHOD_BUFFERED;
end;

procedure TForm1.Button1Click(Sender: TObject);
const
 OBJ_CASE_INSENSITIVE         = $00000040;
 FILE_SYNCHRONOUS_IO_NONALERT = $00000020;
 FILE_READ_DATA = 1;
var
 hDeviceHandle: THandle;
 US: UNICODE_STRING;
 OA: OBJECT_ATTRIBUTES;
 IO: IO_STATUS_BLOCK;
 NTSTAT, dwReturn: DWORD;
 BSP: BEEP_SET_PARAMETERS;
begin
 RtlInitUnicodeString(@US, StringToOleStr("\Device\Beep"));
 FillChar(OA, SizeOf(OBJECT_ATTRIBUTES), #0);
 OA.Length := SizeOf(OBJECT_ATTRIBUTES);
 OA.ObjectName := @US;
 OA.Attributes := OBJ_CASE_INSENSITIVE;
 NTSTAT := ZwOpenFile(@hDeviceHandle, FILE_READ_DATA or SYNCHRONIZE,
   @OA, @IO, FILE_SHARE_READ or FILE_SHARE_WRITE or
   FILE_SHARE_DELETE, FILE_SYNCHRONOUS_IO_NONALERT);
 if NTSTAT = 0 then
 try
   BSP.Frequency := 1000;  // < тут сам подбирай
   BSP.Duration := 300;    // < тут сам подбирай
   DeviceIoControl(hDeviceHandle, GetCtlCode,
         @BSP, SizeOf(BEEP_SET_PARAMETERS),
         nil, 0, dwReturn, nil)
 finally
   CloseHandle(hDeviceHandle);
 end;
end;

end.


 
DVM ©   (2011-04-29 00:06) [49]


> Rouse_ ©   (28.04.11 23:54) [48]

Из службы все равно нет звука, только что проверил под Windows 7. Из консольного приложения звук есть.


 
Иксик ©   (2011-04-29 00:38) [50]

http://stackoverflow.com/questions/2143439/play-wave-file-from-a-windows-service-c


 
Jan   (2011-04-29 01:25) [51]


> в чем бредовость "подания" знака звуком?

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

> амина "закемарившего" разбудит

все можно сделать передавая данные о состоянии сервера по сети и настроив на другой стороне клиента для обработки событий. либо отсылая email/sms как уже писали

> и, да, можно по сети послать команду на рабочую станцию.
> .. ну, а если это неполадки сети

клиентская часть может общаться с сервером, соответственно если сервер не отвечает тоже дудим в дуду

ps: DRM, а почему дудеть не может сама юзверская машина (на которой стоит клиент, который общается с сервером)? причем можно установить клиента на несколько разных машин, кричать будет с разных мест:)


 
DVM ©   (2011-04-29 07:31) [52]


> Jan   (29.04.11 01:25) [51]


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

Она может и она дудит, но:

1) Админ убавит звук и привет дуделка
2) Проблема может быть с сетью и привет связь
3) Еще 1000 и 1 человеческий фактор-отмазка (повис комп я не слышал, повисла программа не продудела, не работает звуковая звука не было и т.д.)

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


 
Anatoly Podgoretsky ©   (2011-04-29 07:47) [53]

> DVM  (29.04.2011 07:31:52)  [52]

Как будто этиже отмазки не смогут применить к серверу.


 
sniknik ©   (2011-04-29 08:16) [54]

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

p.s. реально не на то усилия направляете...


 
boriskb ©   (2011-04-29 09:31) [55]


> p.s. реально не на то усилия направляете...


Соглашусь.
Это очень частая ситуация, к сожалению

Вспомните ветку примерно 5-летней давности: "К жене приехала подруга и по ночам сидит в инете - спать не дает. Как программно  уменьшить звук/запретить и т.п."

По-моему из той же серии.

Шибко умные :)))


 
Вариант   (2011-04-29 09:44) [56]


> to DVM ©  


Я проверил с waveOutXXX функциями под Windows 7 из сервиса. Звук есть.


 
DVM ©   (2011-04-29 10:11) [57]


> Вариант   (29.04.11 09:44) [56]

Хорошая новость, сейчас и я попробую тогда. Спасибо.


 
sniknik ©   (2011-04-29 10:13) [58]

> под Windows 7 из сервиса. Звук есть.
наверное потому, что не сервер... на серверах дефаултные права по другому задают.
как то, тоже "парился", нужно было "убить" процесс из под сервиса, все работало, в той же программе (запускалась в 2 вариантах, от параметра), тем же кодом (одна ветка отрабатывала), тем же юзером... программой "убивало"  сервисом нет (именно на сервере, на рабочей станции и там и там работало).
решилось админскими методами, они что то в политиках настраивали... там у сервисов "подъем" прав до дебага был не разрешён, а без этого и "убийство" процесса.


 
DVM ©   (2011-04-29 10:50) [59]

Да, действительно, под Windows 7 звук из сервиса, через waveOutXXX получается выдать.
Сейчас попробую на Windows Server 2008.


 
DVM ©   (2011-04-29 10:54) [60]

Под Server 2008 waveOutXXX, тоже сработало. Всем помогавшим большое спасибо!
Ошибался я насчет waveOutXXX.


 
Anatoly Podgoretsky ©   (2011-04-29 11:17) [61]

> boriskb  (29.04.2011 09:31:55)  [55]

Какое из той, совсем из противоположно, у него вообще тихий звук.
Я бы решал проблему через сетевое взаимодействие, еще и надежнее.


 
boriskb ©   (2011-04-29 11:26) [62]


> Я бы решал проблему ...


:)

А я бы решал как у Жванецкого один персонаж "Дадим по башке и отыграем своё"

Вот когда этот "провод что из серверной к динамикам идет"  окажется перекушенным/ передавленным (случайно конечно :) ) тогда и придется возвращаться к проблемме.
А почему нет? СМС не помогант, почта не помогает, он не не услышал/вышел/не заметил/не обратил внимания/ заснул и т.п. что мешаеет ему так же и со звуком поступить?
:))


 
Anatoly Podgoretsky ©   (2011-04-29 11:40) [63]

> boriskb  (29.04.2011 11:26:02)  [62]

Что мешает это сделать на сервере, что ему мешает так поступить, если
надежда на пищалку, то надежда услышать в другой комнате вообще мизерная


 
DiamondShark ©   (2011-04-29 12:10) [64]


> Но раз уж так хочецо - писискрипер же есть в наличии, он
> по идее всегда при правильном подходе бибикить должен.

Всё совсем наоборот.
Именно писискрипер, т.е. девайс на базе 8253/8254 или его эмуляция, в современных матерях встречается чуть более, чем никогда. Пипикалка какая-то есть, но реализована она совсем другими механизмами. Обращаться с ним умеет только БИОС, стандартный драйвер виндос с ним не работает, а на замену такой мелочи производители матерей могут и забить болтЪ.
И это, как ни печально, тенденция.
Так что приходится постепенно привыкать к мысли, что чем дальше в лес, тем ну его нафиг этот пикер.


 
Jan   (2011-04-29 17:41) [65]


> Админ убавит звук и привет дуделка

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

Проблема может быть с сетью и привет связь

аналогично. через какой-то промежуток времени сервер не отвечает - гудим из клиента

> Еще 1000 и 1 человеческий фактор-отмазка

ну вам виднее:)


 
Jan   (2011-04-29 17:42) [66]


> Вот когда этот "провод что из серверной к динамикам идет"
>  окажется перекушенным/ передавленным (случайно конечно
> :) ) тогда и придется возвращаться к проблемме

хуже если через него статика пойдет


 
Rouse_ ©   (2011-04-29 18:56) [67]


> > Админ убавит звук и привет дуделка

Ничто не мешает админу отрубить колонки и бибикалку :)
На всех моих тачках именно так кстати и сделано :)


 
Anatoly Podgoretsky ©   (2011-04-29 19:22) [68]

> Rouse_  (29.04.2011 18:56:07)  [67]

Ничто не мешает уволить админа.


 
Rouse_ ©   (2011-04-29 20:38) [69]

Так я про это с самого начала и сказал - проблема административного характера :)
Если описать задачу, то ТЗ должно быть поставлено так: как программно разбудить админа?


 
sniknik ©   (2011-04-29 21:24) [70]

> так: как программно разбудить админа?
скорее так: обратить внимание, даже того который этого не хочет.

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



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

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

Наверх





Память: 0.61 MB
Время: 0.005 c
2-1304994871
Gu
2011-05-10 06:34
2011.08.21
Аплеты панели управления в Win7x64


15-1303631548
arevo
2011-04-24 11:52
2011.08.21
InstallShield


1-1263292251
Игорь_З
2010-01-12 13:30
2011.08.21
передача параметров из сишной dll


4-1249393654
DevilDevil
2009-08-04 17:47
2011.08.21
Как создать пункт меню с иконкой. Желательно с альфаканалом


15-1303664339
TUser
2011-04-24 20:58
2011.08.21
Материализм и эмпириокритицизм





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский