atutunnik94 писал(а):
А появился еще вопрос, как в окне отключить системные звуки, что бы окно не выдавало этот звук при нажатии?В индивидуальном окне -- никак. Для всей системы можно отключить программно. Вот к примеру отключение системного звука Beep, но если программа закрэшится, то звук останется в последнем состоянии для всей системы:
Схема
Add(MainForm,2953706,329,203)
{
Width=233
Height=110
Position=1
link(onCreate,5005951:doWork2,[])
}
Add(Button,4886028,455,273)
{
Left=130
Top=30
TabOrder=-1
Caption="Test"
link(onClick,7401773:doMessage,[])
}
Add(Message,7401773,525,273)
{
Message="Test Beep"
Icon=1
}
Add(CheckBox,14509333,455,168)
{
Left=20
Top=30
Width=100
TabOrder=-1
Checked=0
Caption="Enabled Beep"
link(onCheck,5005951:doWork1,[(494,174)(494,160)(410,160)])
}
Add(InlineCode,3415143,525,217)
{
WorkPoints=#13:doDisableBeep|12:doEnableBeep|
Code=#15:unit HiAsmUnit;|0:|9:interface|0:|29:uses Windows,kol,Share,Debug;|0:|4:type|28: THiAsmClass = class(TDebug)|10: private|22: setbeep: boolean;|9: public|20: constructor Create;|33: destructor Destroy; override;|58: procedure doDisableBeep(var _Data:TData; Index:word); |56: procedure doEnableBeep(var _Data:TData; Index:word);|5: end;|0:|14:implementation|0:|31:constructor THiAsmClass.Create;|5:begin|15: inherited; |52: SystemParametersInfo(SPI_GETBEEP, 0, @setbeep, 0);|5:end; |0:|31:destructor THiAsmClass.Destroy;|5:begin|78: SystemParametersInfo(SPI_SETBEEP, ord(setbeep), nil, SPIF_SENDWININICHANGE);|15: inherited; |5:end; |0:|66:procedure THiAsmClass.doDisableBeep(var _Data:TData; Index:word); |5:begin|67: SystemParametersInfo(SPI_SETBEEP, 0, nil, SPIF_SENDWININICHANGE);|4:end;|0:|64:procedure THiAsmClass.doEnableBeep(var _Data:TData; Index:word);|5:begin|67: SystemParametersInfo(SPI_SETBEEP, 1, nil, SPIF_SENDWININICHANGE);|4:end;|0:|0:|4:end.|
}
Add(IndexToChanel,12161559,455,217)
{
Point(Index)
link(onEvent1,3415143:doDisableBeep,[])
link(onEvent2,3415143:doEnableBeep,[])
link(Index,14509333:Checked,[])
}
Add(HubEx,5005951,406,217)
{
link(onEvent,12161559:doEvent,[])
}
В коде предусмотрен возврат системного звука в исходное состояние при закрытии программы, но doEnableBeep и doDisableBeep работают независимо от начальной системной установки.