示例#1
0
        public static void SetMute(MixerInfo mi, bool mute)
        {
            if (IntPtr.Size == 4)
            {
                MIXERCONTROLDETAILS mcd = new MIXERCONTROLDETAILS();
                mcd.cbStruct       = (uint)Marshal.SizeOf(typeof(MIXERCONTROLDETAILS));
                mcd.dwControlID    = mi.muteCtl;
                mcd.cMultipleItems = 0;
                mcd.cChannels      = 1;
                mcd.cbDetails      = 4;
                mcd.paDetails      = Marshal.AllocHGlobal((int)mcd.cbDetails);

                Marshal.WriteInt32(mcd.paDetails, mute ? 1 : 0);

                mixerSetControlDetails(IntPtr.Zero, ref mcd, MIXER.GETCONTROLDETAILSF_VALUE | MIXER.OBJECTF_MIXER);

                Marshal.FreeHGlobal(mcd.paDetails);
            }
            else
            {
                MIXERCONTROLDETAILS64 mcd = new MIXERCONTROLDETAILS64();
                mcd.cbStruct       = (uint)Marshal.SizeOf(typeof(MIXERCONTROLDETAILS64));
                mcd.dwControlID    = mi.muteCtl;
                mcd.cMultipleItems = 0;
                mcd.cChannels      = 1;
                mcd.cbDetails      = 4;
                mcd.paDetails      = Marshal.AllocHGlobal((int)mcd.cbDetails);

                Marshal.WriteInt32(mcd.paDetails, mute ? 1 : 0);

                mixerSetControlDetails(IntPtr.Zero, ref mcd, MIXER.GETCONTROLDETAILSF_VALUE | MIXER.OBJECTF_MIXER);

                Marshal.FreeHGlobal(mcd.paDetails);
            }
        }
示例#2
0
        public static void SetVolume(MixerInfo mi, VOLUME volume)
        {
            if (IntPtr.Size == 4)
            {
                MIXERCONTROLDETAILS mcd = new MIXERCONTROLDETAILS();
                mcd.cbStruct       = (uint)Marshal.SizeOf(typeof(MIXERCONTROLDETAILS));
                mcd.dwControlID    = mi.volumeCtl;
                mcd.cMultipleItems = 0;
                mcd.cChannels      = 2;
                mcd.cbDetails      = (uint)Marshal.SizeOf(typeof(VOLUME));
                mcd.paDetails      = Marshal.AllocHGlobal((int)mcd.cbDetails);

                Marshal.StructureToPtr(volume, mcd.paDetails, false);

                mixerSetControlDetails(IntPtr.Zero, ref mcd, MIXER.GETCONTROLDETAILSF_VALUE | MIXER.OBJECTF_MIXER);

                Marshal.FreeHGlobal(mcd.paDetails);
            }
            else
            {
                MIXERCONTROLDETAILS64 mcd = new MIXERCONTROLDETAILS64();
                mcd.cbStruct       = (uint)Marshal.SizeOf(typeof(MIXERCONTROLDETAILS64));
                mcd.dwControlID    = mi.volumeCtl;
                mcd.cMultipleItems = 0;
                mcd.cChannels      = 2;
                mcd.cbDetails      = (uint)Marshal.SizeOf(typeof(VOLUME));
                mcd.paDetails      = Marshal.AllocHGlobal((int)mcd.cbDetails);

                Marshal.StructureToPtr(volume, mcd.paDetails, false);

                mixerSetControlDetails(IntPtr.Zero, ref mcd, MIXER.GETCONTROLDETAILSF_VALUE | MIXER.OBJECTF_MIXER);

                Marshal.FreeHGlobal(mcd.paDetails);
            }
        }
示例#3
0
        public static bool IsMuted(MixerInfo mi)
        {
            if (IntPtr.Size == 4)
            {
                MIXERCONTROLDETAILS mcd = new MIXERCONTROLDETAILS();
                mcd.cbStruct       = (uint)Marshal.SizeOf(typeof(MIXERCONTROLDETAILS));
                mcd.dwControlID    = mi.muteCtl;
                mcd.cMultipleItems = 0;
                mcd.cChannels      = 1;
                mcd.cbDetails      = 4;
                mcd.paDetails      = Marshal.AllocHGlobal((int)mcd.cbDetails);

                mixerGetControlDetails(IntPtr.Zero, ref mcd, MIXER.GETCONTROLDETAILSF_VALUE | MIXER.OBJECTF_MIXER);

                int rtn = Marshal.ReadInt32(mcd.paDetails);

                Marshal.FreeHGlobal(mcd.paDetails);

                return(rtn != 0);
            }
            else
            {
                MIXERCONTROLDETAILS64 mcd = new MIXERCONTROLDETAILS64();
                mcd.cbStruct       = (uint)Marshal.SizeOf(typeof(MIXERCONTROLDETAILS64));
                mcd.dwControlID    = mi.muteCtl;
                mcd.cMultipleItems = 0;
                mcd.cChannels      = 1;
                mcd.cbDetails      = 4;
                mcd.paDetails      = Marshal.AllocHGlobal((int)mcd.cbDetails);

                mixerGetControlDetails(IntPtr.Zero, ref mcd, MIXER.GETCONTROLDETAILSF_VALUE | MIXER.OBJECTF_MIXER);

                int rtn = Marshal.ReadInt32(mcd.paDetails);

                Marshal.FreeHGlobal(mcd.paDetails);

                return(rtn != 0);
            }
        }
示例#4
0
 static extern uint mixerSetControlDetails(IntPtr hmxobj, ref MIXERCONTROLDETAILS64 pmxcd, MIXER flags);