DirectSoundでFormがActiveでない時も音を出す

DirectSoundのSecondaryBufferにwaveのbyte配列を書き込んで音を出しているんだけど

DirectSoundのDeviceの持ち主として関連づけられているControl(この場合はSystem.Windows.Formのインスタンス)からフォーカスが外れると音が止まってしまった。


GlobalFocusにするとよい。


SecondaryBufferにアクセスするためのBufferDescriptionで

description.GlobalFocus = true;

してから

SecondaryBuffer buffer = new SecondaryBuffer(description, device);
buffer.Write(0, bytes, LockFlag.None);
buffer.Play(0, BufferPlayFlags.Default);

とすると、Formがアクティブじゃなくても音が鳴り続ける。


参考: