def callback(self, event): pythoncom.CoInitialize() """ This callback is invoked whenever a keyboard event is occured (i.e when a key is released in this example) """ name = event.name if len(name) > 0: # not a character, special key (e.g ctrl, alt, etc.) # uppercase with [] if name == "space": # " " instead of "space" name = " " elif name == "enter": # add a new line whenever an ENTER is pressed name = "[ENTER]\n" elif name == "decimal": name = "." elif name == "f9": sessions = AudioUtilities.GetAllSessions() for session in sessions: volume = session._ctl.QueryInterface(ISimpleAudioVolume) if session.Process and session.Process.name().strip( ".exe") in volumeList: mVol = volume.GetMasterVolume() if mVol - .05 > 0: volume.SetMasterVolume(mVol - .1, None) else: volume.SetMasterVolume(0, None) elif name == "f10": sessions = AudioUtilities.GetAllSessions() for session in sessions: volume = session._ctl.QueryInterface(ISimpleAudioVolume) if session.Process and session.Process.name().strip( ".exe") in volumeList: #print(session.Process.name() + " yuh") mVol = volume.GetMasterVolume() if mVol + .05 < 1: volume.SetMasterVolume(mVol + .1, None) else: volume.SetMasterVolume(1.0, None) elif name == "f8": makeSelection() elif name == "esc": exit() else: # replace spaces with underscores name = name.replace(" ", "_") name = f"[{name.upper()}]" self.log += name
def get_sessions(): sessions = AudioUtilities.GetAllSessions() for session in sessions: volume = session._ctl.QueryInterface(ISimpleAudioVolume) if session.Process: # print(f"{session} :%s" % volume.GetMasterVolume()) normalize_session(session)
def lower_sound(flag): """ The function lowers the sound of the computer. Parameters: flag (bool): controls the option to lower and to return the sound. Returns: int: 1 if lowered and 0 if returned the sound. """ sessions = AudioUtilities.GetAllSessions() for session in sessions: devices = AudioUtilities.GetSpeakers() interface = devices.Activate(IAudioEndpointVolume._iid_, CLSCTX_ALL, None) volume = cast(interface, POINTER(IAudioEndpointVolume)) volume.GetMute() volume.GetMasterVolumeLevel() volume.GetVolumeRange() if flag: volume.SetMasterVolumeLevel(-60.0, None) return 1 else: volume.SetMasterVolumeLevel(-30.0, None) return 0
def mute(self): sessions = AudioUtilities.GetAllSessions() for session in sessions: interface = session.SimpleAudioVolume if session.Process and session.Process.name() == self.process_name: interface.SetMute(1, None) return f'{self.process_name} has been muted.' # debug
def muteApp(app): sessions = AudioUtilities.GetAllSessions() for session in sessions: volume = session._ctl.QueryInterface(ISimpleAudioVolume) if session.Process and session.Process.name() == app: b = volume.GetMute() volume.SetMute(not b, None)
def ChangeFirefox(number): # Kan än så länge bara maxa vad Master volume är, Processvolume är procentuell av master volume sessions = AudioUtilities.GetAllSessions() for session in sessions: if session.DisplayName == "Mozilla Firefox": volume = session.SimpleAudioVolume session.SimpleAudioVolume.SetMasterVolume(number, None)
def playSound(audioFile): print("Playing " + audioFile) sessions = AudioUtilities.GetAllSessions() # Decrease all app for session in sessions: volume = session._ctl.QueryInterface(ISimpleAudioVolume) volume.SetMasterVolume(0.1, None) time.sleep(3) # Play the audio playsound(audioFile) # Make sure Python is full volume for session in sessions: if session.Process and session.Process.name() == "Python.exe": volume = session._ctl.QueryInterface(ISimpleAudioVolume) volume.SetMasterVolume(1.0, None) time.sleep(3) # Set all app back to full for session in sessions: volume = session._ctl.QueryInterface(ISimpleAudioVolume) volume.SetMasterVolume(1.0, None)
def _refresh_sessions(self): # only do this if enough time passed since we last scanned for processes if self._last_session_refresh and time.time( ) - self._last_session_refresh < self._settings[ 'process_refresh_frequency']: return self._last_session_refresh = time.time() # take all active sessions and map out those that belong to processes to their process name session_list = filter(lambda s: s.Process, AudioUtilities.GetAllSessions()) self._sessions = {} for session in session_list: try: session_name = session.Process.name() except psutil.NoSuchProcess: continue if session_name in self._sessions: self._sessions[session_name].append(session) else: self._sessions[session_name] = [session] # take the master session active_device = AudioUtilities.GetSpeakers() active_device_interface = active_device.Activate( IAudioEndpointVolume._iid_, CLSCTX_ALL, None) self._master_session = cast(active_device_interface, POINTER(IAudioEndpointVolume))
def main(): sessions = AudioUtilities.GetAllSessions() for session in sessions: volume = session._ctl.QueryInterface(ISimpleAudioVolume) if session.Process and session.Process.name() == "vlc.exe": print("volume.GetMasterVolume(): %s" % volume.GetMasterVolume()) volume.SetMasterVolume(0.6, None)
def process_volume(self): sessions = AudioUtilities.GetAllSessions() for session in sessions: interface = session.SimpleAudioVolume if session.Process and session.Process.name() == self.process_name: print('Volume:', interface.GetMasterVolume()) # debug return interface.GetMasterVolume()
def setNVDAVolume(withMin=False): from ..settings import _addonConfigManager try: sessions = AudioUtilities.GetAllSessions() except: # noqa:E722 # no supported log.warning( "AudioUtilities getAllCessions not supported on this system") return False for session in sessions: try: name = session.Process.name() except: # noqa:E722 continue if name.lower() == "nvda.exe": volume = session.SimpleAudioVolume mute = volume.GetMute() if mute: volume.SetMute(not mute, None) log.warning("Unmute NVDA volume") volumeLevel = volume.GetMasterVolume() minLevel = float(_addonConfigManager.getMinNVDAVolumeLevel()) / 100 if not withMin or (withMin and volumeLevel <= minLevel): levels = [0.0, 0.2, 0.4, 0.6, 0.8, 1.0] index = _addonConfigManager.getNVDAVolumeLevel() / 10 level = float(levels[int(index)]) volume.SetMasterVolume(level, None) log.warning("NVDA volume is set to %s" % level) return True return False
def unmute(self): sessions = AudioUtilities.GetAllSessions() for session in sessions: interface = session.SimpleAudioVolume if session.Process and session.Process.name() == self.process_name: interface.SetMute(0, None) print(self.process_name, 'has been unmuted.') # debug
def update(): sessions = AudioUtilities.GetAllSessions() sessionNames = list() for session in sessions: #You have a volume, add yourself to list if session.Process: sessionNames.append(session.Process.name()) #Skip over "null" sessions if not session.Process or session.Process.name() in AudioController.audioSessionNames: #Don't do anything #You're either a session without a volume, or you're already in the list continue #You're have a volume, you're not already on the list, so add yourself to the list AudioController(session) for audioController in AudioController.audioControllers: #Check to see whether the program with a previously made slider has been closed if audioController.name not in sessionNames: audioController.removeController() root.update() continue #You're still open, and you're an audiocontroller audioController.setVolume(audioController.getSliderVolume()) #Roughly "60FPS", 1000/60 ~ 17ms root.after(20, update)
def set_volume(self, decibels): sessions = AudioUtilities.GetAllSessions() for session in sessions: interface = session.SimpleAudioVolume if session.Process and session.Process.name() == self.process_name: self.volume = min(1.0, max(0.0, decibels)) interface.SetMasterVolume(self.volume, None)
def run(self): while (True): updateList = False sessions = AudioUtilities.GetAllSessions() if (len(sessions) != len(self.currentSession)): self.volumes = [] for session in sessions: if session.Process: volumeOld = session._ctl.QueryInterface( ISimpleAudioVolume) self.volumes.append(volumeOld.GetMasterVolume()) updateList = True else: #loop and check each element loopItr = 0 for session in sessions: if session.Process: volumeOld = session._ctl.QueryInterface( ISimpleAudioVolume) levelOld = volumeOld.GetMasterVolume() if (levelOld != self.volumes[loopItr]): updateList = True self.volumes[loopItr] = levelOld loopItr += 1 if updateList: self.tableQueue.put(sessions) self.currentSession = (sessions) self.update_table.emit() time.sleep(1)
def test_session_unicode(self): """Makes sure printing a session doesn't crash.""" with captured_output() as (out, err): sessions = AudioUtilities.GetAllSessions() print("sessions: %s" % sessions) for session in sessions: print("session: %s" % session) print("session.Process: %s" % session.Process)
def set_session(session_name, value): sessions = AudioUtilities.GetAllSessions() for session in sessions: volume = session._ctl.QueryInterface(ISimpleAudioVolume) if session in normalize_session(session): print(f"{session} :%s" % volume.GetMasterVolume()) print(session.DisplayName) volume.SetMasterVolume(10, None)
def mute(): sessions = AudioUtilities.GetAllSessions() for session in sessions: volume = session._ctl.QueryInterface(ISimpleAudioVolume) currentVolume = volume.GetMasterVolume() if session.Process and session.Process.name( ) == "Spotify.exe" and (1 - currentVolume) <= .9: volume.SetMasterVolume(0, None)
def increase_volume(self, decibels): sessions = AudioUtilities.GetAllSessions() for session in sessions: if session.Process: interface = session.SimpleAudioVolume # 1.0 is the max value, raise by decibels self.volume = min(1.0, self.volume + decibels) interface.SetMasterVolume(self.volume, None)
def setProcessMute(name, state): sessions = AudioUtilities.GetAllSessions() for session in sessions: if session.Process != None: volume = session.SimpleAudioVolume #print session.Process if session.Process.name() == name: volume.SetMute(state, None)
def setProcessVolume(name, value): sessions = AudioUtilities.GetAllSessions() for session in sessions: if session.Process != None: volume = session.SimpleAudioVolume #print session.Process if session.Process.name() == name: volume.SetMasterVolume(float(value / 100.0), None)
def main(): sessions = AudioUtilities.GetAllSessions() for session in sessions: volume = session.SimpleAudioVolume if session.Process and session.Process.name() == "chrome.exe": volume.SetMute(0, None) else: volume.SetMute(1, None)
def changeVolumeOfApplication(application_name, amount): sessions = AudioUtilities.GetAllSessions() for session in sessions: volume = session._ctl.QueryInterface(ISimpleAudioVolume) if session.Process: if session.Process.name() == application_name: changeVolume(volume, amount) print("%s: %s" % (application_name, round(volume.GetMasterVolume()*100)))
def process_get(self): sessions = AudioUtilities.GetAllSessions() objects = [] strs = [] for session in sessions: objects.append(session) strs.append(str(session)) return objects, strs
def seslistele(): sesler.clear() sessions = AudioUtilities.GetAllSessions() for i in sessions: #ses çıkaran uygulamaları listeliyor try: sesler.append(i.Process.name()) except: pass print(sesler)
def test_volume_by_process_example(self): volume_by_process_example.main() sessions = AudioUtilities.GetAllSessions() for session in sessions: volume = session.SimpleAudioVolume if session.Process and session.Process.name() == "chrome.exe": self.assertEqual(volume.GetMute(), 0) else: self.assertEqual(volume.GetMute(), 1)
def set_volume(self, decibels): sessions = AudioUtilities.GetAllSessions() for session in sessions: interface = session.SimpleAudioVolume if session.Process and session.Process.name() == self.process_name: # only set volume in the range 0.0 to 1.0 self.volume = min(1.0, max(0.0, decibels)) interface.SetMasterVolume(self.volume, None) print('Volume set to', self.volume) # debug
def increase_volume(self, decibels): sessions = AudioUtilities.GetAllSessions() for session in sessions: interface = session.SimpleAudioVolume if session.Process and session.Process.name() == self.process_name: # 1.0 is the max value, raise by decibels self.volume = min(1.0, self.volume+decibels) interface.SetMasterVolume(self.volume, None) print('Volume raised to', self.volume) # debug
def test_getallsessions_reliability(self): """ Verifies AudioUtilities.GetAllSessions() is reliable even calling it multiple times, refs: https://github.com/AndreMiras/pycaw/issues/1 """ for _ in range(100): sessions = AudioUtilities.GetAllSessions() self.assertTrue(len(sessions) > 0)
def setAppVolumePid(pid, level): try: sessions = AudioUtilities.GetAllSessions() for session in sessions: volume = session.SimpleAudioVolume if session.Process and session.ProcessId == pid: volume.SetMasterVolume(level, None) except: pass