如果特定Windows窗体处于打开状态,如何停止媒体播放器?Visual Studio C#

如果特定Windows窗体处于打开状态,如何停止媒体播放器?Visual Studio C#,c#,C#,我在为学校作业做游戏。对于使用WMP的背景音乐,其中一个规范是关闭背景音乐。当进入其中一种游戏模式时。游戏的编码方式是为特定的游戏打开一个新窗口。游戏模式。但我无法暂停/停止音乐窗口。根据我的编程基础知识,特定窗口是打开的,可能是使用了 如果声明说什么时候。特定窗口打开时,音乐停止。这是我最好的主意 static class MediaMixer { static public void StopPlaying() { var input = new NativeMethods

我在为学校作业做游戏。对于使用WMP的背景音乐,其中一个规范是关闭背景音乐。当进入其中一种游戏模式时。游戏的编码方式是为特定的游戏打开一个新窗口。游戏模式。但我无法暂停/停止音乐窗口。根据我的编程基础知识,特定窗口是打开的,可能是使用了 如果声明说什么时候。特定窗口打开时,音乐停止。这是我最好的主意

static class MediaMixer
{

  static public void StopPlaying()
  {
    var input = new NativeMethods.INPUT { Type = 1 };
    input.Data.Keyboard = new NativeMethods.KEYBDINPUT
    {
      Vk = 0xB2,
      Scan = 0,
      Flags = 0,
      Time = 0,
      ExtraInfo = IntPtr.Zero
    };
    var inputs = new NativeMethods.INPUT[] { input };
    NativeMethods.SendInput(1, inputs, Marshal.SizeOf(typeof(NativeMethods.INPUT)));
  }

  static public void MuteVolume(IntPtr handle)
  {
    NativeMethods.SendMessageW(handle.Value,
                               NativeMethods.WM_APPCOMMAND,
                               handle.Value,
                               (IntPtr)NativeMethods.APPCOMMAND_VOLUME_MUTE);
  }


}

这回答了你的问题吗?和
static class NativeMethods
{

  public const int WM_APPCOMMAND = 0x319;
  public const int APPCOMMAND_VOLUME_MUTE = 0x80000;

  [StructLayout(LayoutKind.Sequential)]
  public struct INPUT
  {
    public uint Type;
    public MOUSEKEYBDHARDWAREINPUT Data;
  }

  [StructLayout(LayoutKind.Sequential)]
  public struct KEYBDINPUT
  {
    public ushort Vk;
    public ushort Scan;
    public uint Flags;
    public uint Time;
    public IntPtr ExtraInfo;
  }

  [DllImport("user32.dll", SetLastError = true)]
  static public extern uint SendInput(uint numberOfInputs, 
                                      INPUT[] inputs,
                                      int sizeOfInputStructure);

}