Beispiel #1
0
    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
Beispiel #2
0
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)
Beispiel #3
0
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
Beispiel #4
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
Beispiel #5
0
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)
Beispiel #6
0
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)
Beispiel #7
0
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)
Beispiel #8
0
    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))
Beispiel #9
0
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
Beispiel #13
0
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)
Beispiel #14
0
 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)
Beispiel #15
0
    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)
Beispiel #16
0
 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)
Beispiel #17
0
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)
Beispiel #18
0
 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)
Beispiel #19
0
 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)
Beispiel #20
0
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)
Beispiel #21
0
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)
Beispiel #23
0
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
Beispiel #25
0
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)
Beispiel #26
0
 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
Beispiel #29
0
 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)
Beispiel #30
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