Форум: "Прочее";
Текущий архив: 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