예제 #1
0
 private static ProgramData ChangeData(RPIProgramData RPIData, ProgramData PCData)
 {
     if (RPIData.ChangeDevice)
     {
         List <ProgramData> AllPrograms = Mixer.Mixer.GetAllPrograms();
         for (int i = 0; i < AllPrograms.Count; i++)
         {
             Boolean IsUsed = false;
             for (int j = 0; j < GlobalPCData.Programs.Count; j++)
             {
                 if (AllPrograms[i].PID == GlobalPCData.Programs[j].PID)
                 {
                     IsUsed = true;
                     break;
                 }
             }
             if (IsUsed == false)
             {
                 return(AllPrograms[i]);
             }
         }
     }
     else
     {
         if (true)
         {
             Mixer.Mixer.UpdateProgram(RPIData);
             PCData.Volume = RPIData.Volume;
             PCData.IsMute = RPIData.IsMute;
             return(PCData);
         }
     }
     return(PCData);
 }
예제 #2
0
        public static void UpdateProgram(RPIProgramData RPIData)
        {
            Process[] AllProcess = Process.GetProcesses();
            if (DoesPIDExist(AllProcess, RPIData.PID))
            {
                AudioSessionEnumerator sessions = EnumerateSessions();
                foreach (AudioSessionControl session in sessions)
                {
                    if (RPIData.PID == GetSessionPID(session))
                    {
                        SimpleAudioVolume simpleVolume = session.QueryInterface <SimpleAudioVolume>();

                        simpleVolume.MasterVolume = (float)RPIData.Volume / 100;

                        simpleVolume.IsMuted = RPIData.IsMute;
                    }
                }
            }
        }