Исходник Софт AHK | Sound Mixer | Релиз

Тема в разделе "AutoHotKey", создана пользователем BASS_DEVSOFTWARE, 23 фев 2019.

Метки:
  1. BASS_DEVSOFTWARE

    BASS_DEVSOFTWARE vk.com/bass_devware
    Проверенный

    Регистрация:
    29 апр 2017
    Сообщения:
    151
    Симпатии:
    113
    [​IMG]
    [​IMG]


    Sound Mixer - скрипт, благодаря которому вы сможете создавать бинды на изменение звука в любых запущенных приложениях вашего ПК.



    Актуальная версия - 0.6 Release



    [​IMG]


    Звуковой микшер - используйте интуитивно понятный пользовательский интерфейс для создания/настройки профильных горячих клавиш.
    Функции сортировки процессов и изменения звука в активном окне позволят без лишних заморочек
    найти, задать и сохранить.

    Удобно ли при первой необходимости убрать звук в активном окне, увеличить звучание беседы "дискорда" и слегка добавить громкости к играющей музыке в браузере?
    Решать только вам.

    /// Source 0.4v \\\
    
    
    
    
    ;    author - bass_devware
    ;    If you copy, modify or use my script lines for your own goals - indicate my authorship.
    ;    @bass_devware
    
    
    
    #SingleInstance ignore
    OnExit, ExitLabel
    if not A_IsAdmin
        Run *RunAs "%A_ScriptFullPath%",,UseErrorLevel
        if errorlevel
        {
        MsgBox, 262160, SoundMixer Reborn, For the script to work properly`, you must run it with admin rights.
        ExitApp
        }
    clientv = 4
    ;/////Проверка обновления \\\\\
    oWhr := ComObjCreate("WinHttp.WinHttpRequest.5.1")
    oWhr.Open("GET", "https://raw.githubusercontent.com/MirchikAhtung/soundmixer/master/readme.txt", false)
    oWhr.Send()
    html := oWhr.ResponseText
    RegExMatch(html, "0.(.*)v`n`n  2.", version)
    if version1 != % clientv
    {
    MsgBox, 262212, Update released,     Version of your client - 0.%clientv%`nLatest version - 0.%version1%`n`nWant to download the new version now?`n`n"YES" - Open Browser Page`n"NO" - Open current version (0.%clientv%)
    IfMsgBox Yes
    {
    run, https://github.com/MirchikAhtung/soundmixer/blob/master/SoundMixer_R0.%version1%.exe
    ExitApp
    }
    }
    ;/////Проверка обновления \\\\\
    var = 0
    Gui, Margin, 10, 10
        Gui, Add, ListView, w500 h600 vList +disabled +AltSubmit, PID|Process Name|Command Line
            for process in ComObjGet("winmgmts:").ExecQuery("Select * from Win32_Process")
                LV_Add("", process.ProcessID, process.Name, process.CommandLine)
                    LV_ModifyCol()
                        Gui, Add, Edit, x16 y650 w220 h20 vEdit +disabled,
                            Gui, Add, Hotkey, x16 y625 w60 h20 gAWHotkey vAWHotkey +disabled,
                                Gui, Add, Radio, x16 y675 w70 h20 vSelected gSelected +disabled, Selected
                                    Gui, Add, Radio, x85 y675 w100 h20 vAW gAW +disabled, Active Window
                                        Gui, Add, Button, x246 y625 w80 h20 +Disabled vEdit2 gEdit, Edit
                                            Gui, Add, Button, x246 y650 w80 h20 vAddBtn gAddBtn, Add
                                            Gui, Add, Button, x186 y675 w50 h20 vrefreshprofiles grefreshprofiles , Refresh
                                        Gui, Add, Button, x246 y675 w80 h20 +disabled vRemove gRemove, Remove
                                    Gui, Add, GroupBox, x6 y610 w330 h95 ,
                                Gui, Add, GroupBox, x346 y610 w160 h95 ,
                            Gui, Add, DropDownList, x86 y625 w150 h20 R5 vDDsL hwndhDDL gDDL ,
                        Gui, Add, Radio, x352 y657 w75 w73 vAP gAllProcess +Checked, All process
                    Gui, Add, Radio, x430 y657 w80 w73 vOM gOnlyMedia, Only media
                Gui, Add, Slider, x350 y680 w152 h20 vSlider Range0-100 ToolTip  +disabled, 0
            Gui, Add, Button, x356 y625 w70 h20 vSave gSave +disabled, Save
        Gui, Add, Button, x430 y625 w70 h20 vCancel  gCancel +disabled, Cancel
    Gui, Show,w510 h710, SoundMixer Reborn | @bass_devware | 0.%clientv%v
    return
    
    AllProcess:
    LV_Delete()
            for process in ComObjGet("winmgmts:").ExecQuery("Select * from Win32_Process")
            LV_Add("", process.ProcessID, process.Name, process.CommandLine)
    LV_ModifyCol()
    return
    OnlyMedia:
    LV_Delete()
        Loop, Parse, % GetActive_Media(), `,
    {
            PATH := GetModuleFileNameEx(A_LoopField)
                Loop, % PATH
            Name := A_LoopFileName
        LV_Add("", A_LoopField, Name, Path)
    }
    LV_ModifyCol()
    return
    
    AddBtn:
    GuiControl,enable,List
        GuiControl, disable, refreshprofiles
    add = 1
    return
    
    GuiContextMenu:
    selectedis = %A_EventInfo%
    if A_EventInfo != 0
    {
    GuiControl, disable, AP
        GuiControl,disable,OM
            GuiControl, disable, DDsL
                GuiControl,disable,List
                    GuiControl,disable,AddBtn
                        GuiControl,enable,cancel
                        GuiControl,enable,Selected
                    GuiControl,enable,AW
                LV_GetText(selectedprocessPID, selectedis, 1)
            LV_GetText(selectedprocessName, selectedis, 2)
        gui, submit, nohide
    GuiControl,,edit, PID - %selectedprocessPID% | Process - %selectedprocessName%
    }
    return
    
    AWHotkey:
    if editvar != save
    {
    GuiControl,enable,save
    GuiControl,enable,slider
    }
    return
    
    Selected:
    GuiControl,enable,AWHotkey
    tosave = 1
    return
    AW:
    GuiControl,enable,AWHotkey
    tosave = 2
    return
    Save:
    if tosave = 2
    {
    selectedprocessPID = ActiveWindow
        selectedprocessName = ActiveWindow
    }
    if AWHotkey !=
        {
            GuiControl, Enable, refreshprofiles
                GuiControl,disable,AWHotkey
                    gui, submit, nohide
                        ItemText = %slider% | %AWHotkey% | %selectedprocessPID% | %selectedprocessName%
                            SendMessage, 0x143, 0, &ItemText , , ahk_id %hDDL%  ;  CB_ADDSTRING
                                GuiControl,enable,DDsL
                                    GuiControl,disable,Selected
                                        GuiControl,disable,AW
                                    GuiControl,disable,save
                                GuiControl,disable, slider
                            GuiControl,Enable,AddBtn
                        GuiControl,disable,cancel
                    GuiControl,,AWHotkey,
                GuiControl, Enable, AP
            GuiControl,Enable,OM
        LV_Modify(selectedis, "-Focus")
    goto refreshprofiles
        }
    return
    
    Cancel:
    GuiControl,enable,DDsL
        GuiControl,disable,Selected
            GuiControl,disable,AW
                GuiControl,disable,save
                    GuiControl,Enable,AddBtn
                        GuiControl,disable,cancel
                        GuiControl,,AWHotkey,
                    GuiControl,disable,AWHotkey
                GuiControl,disable,slider
            GuiControl,Enable,AP
        GuiControl,Enable,OM
    LV_Modify(selectedis, "-Focus")
    return
    
    remove:
    gui, submit, nohide
        RegExMatch(DDsL, "(.*) \Q|\E (.*) \Q|\E (.*) \Q|\E (.*)", rprofile)
            hotkey, %rprofile2%, hotkey, off, UseErrorLevel
                SendMessage, 0x158, 1, &DDsL, , ahk_id %hDDL%  ;  CB_FINDSTRINGEXACT
                    ItemIndex := ErrorLevel
                SendMessage, 0x0144, ItemIndex, , , ahk_id %hDDL%  ;  CB_DELETESTRING
            SendMessage, 0x014F, 1, , , ahk_id %hDDL%   ;    CB_SHOWDROPDOWN
        GuiControl,disable,remove
    GuiControl,disable,edit2
    return
    
    DDL:
    gui, submit, nohide
    if DDsL !=
    {
        GuiControl,enable,remove
    GuiControl,enable,edit2
    }
    return
    
    edit:
    gui, submit, nohide
    if editvar != save
    {
        RegExMatch(DDsL, "(.*)\Q|\E(.*)\Q|\E(.*)\Q|\E(.*)", profile)
            GuiControl,enable,slider
                GuiControl,enable,AWHotkey
                    GuiControl,disable,list
                    GuiControl,disable,remove
                GuiControl,disable,AddBtn
            GuiControl,, edit2, Save
        GuiControl, Disable, refreshprofiles
    editvar = save
    }
    else
        {
    if AWHotkey =
            {
    AWHotkey := profile2
            }
        GuiControl,Disable,AWHotkey
            upd = %slider%|%AWHotkey%|%profile3%|%profile4%
                ItemText := DDsL
                    Sleep 100
                        SendMessage, 0x158, 1, &ItemText, , ahk_id %hDDL%  ;  CB_FINDSTRINGEXACT
                            ItemIndex := ErrorLevel
                                SendMessage, 0x0144, ItemIndex, , , ahk_id %hDDL%  ;  CB_DELETESTRING
                                GuiControl,disable,slider
                            ItemText := upd
                        SendMessage, 0x014A, ItemIndex, &ItemText , , ahk_id %hDDL%  ;  CB_INSERTSTRING
                    GuiControl,, edit2, Edit
                GuiControl,disable,edit2
            GuiControl,Enable,AddBtn
        editvar = 0
    SendMessage, 0x014F, 1, , , ahk_id %hDDL%   ;    CB_SHOWDROPDOWN
        }
    return
    
    refreshprofiles:
    ControlGet, refprofiles, List,, ComboBox1, A
        Loop, parse, refprofiles, `n, `r
        {
            RegExMatch(A_LoopField, "(.*) \Q|\E (.*) \Q|\E (.*) \Q|\E (.*)", profile%A_Index%)
                If (profile%A_Index%1 = "" Or profile%A_Index%2 = "" Or profile%A_Index%3 = "" Or profile%A_Index%4 = "")
            {
                    MsgBox Файл с профилями повреждён. [ №%A_Index% ]
                        return
            }
                    tempvar := profile%A_Index%2
                pid%tempvar% := profile%A_Index%3
            process%tempvar% := profile%A_Index%4
        %tempvar% := profile%A_Index%1
    hotkey, %tempvar%, hotkey, on, UseErrorLevel
        }
    return
    
    hotkey:
    If (pid%A_ThisHotkey% = "ActiveWindow" Or process%A_ThisHotkey% = "ActiveWindow")
    {
        WinGet, pid%A_ThisHotkey%, PID, A
    }
    SetAppVolume(pid%A_ThisHotkey%, %A_ThisHotkey%)
    return
    
    ExitLabel:
    if A_ExitReason not in Logoff,Shutdown ; Не ставьте пробелы до и после запятой.
    {
        MsgBox, 262180, SoundMixerR | Exit, Are you sure you want to quit?
        IfMsgBox, No
            return
    }
    ExitApp
    return
    
    SetAppVolume(pid, MasterVolume)
    {
        IMMDeviceEnumerator := ComObjCreate("{BCDE0395-E52F-467C-8E3D-C4579291692E}", "{A95664D2-9614-4F35-A746-DE8DB63617E6}")
        DllCall(NumGet(NumGet(IMMDeviceEnumerator+0)+4*A_PtrSize), "UPtr", IMMDeviceEnumerator, "UInt", 0, "UInt", 1, "UPtrP", IMMDevice, "UInt")
        ObjRelease(IMMDeviceEnumerator)
    
        VarSetCapacity(GUID, 16)
        DllCall("Ole32.dll\CLSIDFromString", "Str", "{77AA99A0-1BD6-484F-8BC7-2C654C9A9B6F}", "UPtr", &GUID)
        DllCall(NumGet(NumGet(IMMDevice+0)+3*A_PtrSize), "UPtr", IMMDevice, "UPtr", &GUID, "UInt", 23, "UPtr", 0, "UPtrP", IAudioSessionManager2, "UInt")
        ObjRelease(IMMDevice)
    
        DllCall(NumGet(NumGet(IAudioSessionManager2+0)+5*A_PtrSize), "UPtr", IAudioSessionManager2, "UPtrP", IAudioSessionEnumerator, "UInt")
        ObjRelease(IAudioSessionManager2)
    
        DllCall(NumGet(NumGet(IAudioSessionEnumerator+0)+3*A_PtrSize), "UPtr", IAudioSessionEnumerator, "UIntP", SessionCount, "UInt")
        Loop % SessionCount
        {
            DllCall(NumGet(NumGet(IAudioSessionEnumerator+0)+4*A_PtrSize), "UPtr", IAudioSessionEnumerator, "Int", A_Index-1, "UPtrP", IAudioSessionControl, "UInt")
            IAudioSessionControl2 := ComObjQuery(IAudioSessionControl, "{BFB7FF88-7239-4FC9-8FA2-07C950BE9C6D}")
            ObjRelease(IAudioSessionControl)
    
            DllCall(NumGet(NumGet(IAudioSessionControl2+0)+14*A_PtrSize), "UPtr", IAudioSessionControl2, "UIntP", ProcessId, "UInt")
            If (pid == ProcessId)
            {
                ISimpleAudioVolume := ComObjQuery(IAudioSessionControl2, "{87CE5498-68D6-44E5-9215-6DA47EF883D8}")
                DllCall(NumGet(NumGet(ISimpleAudioVolume+0)+3*A_PtrSize), "UPtr", ISimpleAudioVolume, "Float", MasterVolume/100.0, "UPtr", 0, "UInt")
                ObjRelease(ISimpleAudioVolume)
            }
            ObjRelease(IAudioSessionControl2)
        }
        ObjRelease(IAudioSessionEnumerator)
    }
    
    GetModuleFileNameEx(p_pid)
    {
    if A_OSVersion in WIN_95,WIN_98,WIN_ME
    {
    MsgBox, This Windows version (%A_OSVersion%) is not supported.
    return
    }
    
    h_process := DllCall( "OpenProcess", "uint", 0x10|0x400, "int", false, "uint", p_pid )
    if ( ErrorLevel or h_process = 0 )
    return
    
    name_size = 255
    VarSetCapacity( name, name_size )
    
    result := DllCall( "psapi.dll\GetModuleFileNameEx" ( A_IsUnicode ? "W" : "A" ), "uint", h_process, "uint", 0, "str", name, "uint", name_size )
    
    DllCall( "CloseHandle", h_process )
    
    return, name
    }
    
    GetActive_Media()
    {
    IMMDeviceEnumerator := ComObjCreate("{BCDE0395-E52F-467C-8E3D-C4579291692E}", "{A95664D2-9614-4F35-A746-DE8DB63617E6}")
    DllCall(NumGet(NumGet(IMMDeviceEnumerator+0)+4*A_PtrSize), "UPtr", IMMDeviceEnumerator, "UInt", 0, "UInt", 1, "UPtrP", IMMDevice, "UInt")
    ObjRelease(IMMDeviceEnumerator)
    
    VarSetCapacity(GUID, 16)
    DllCall("Ole32.dll\CLSIDFromString", "Str", "{77AA99A0-1BD6-484F-8BC7-2C654C9A9B6F}", "UPtr", &GUID)
    DllCall(NumGet(NumGet(IMMDevice+0)+3*A_PtrSize), "UPtr", IMMDevice, "UPtr", &GUID, "UInt", 23, "UPtr", 0, "UPtrP", IAudioSessionManager2, "UInt")
    ObjRelease(IMMDevice)
    
    DllCall(NumGet(NumGet(IAudioSessionManager2+0)+5*A_PtrSize), "UPtr", IAudioSessionManager2, "UPtrP", IAudioSessionEnumerator, "UInt")
    ObjRelease(IAudioSessionManager2)
    
    DllCall(NumGet(NumGet(IAudioSessionEnumerator+0)+3*A_PtrSize), "UPtr", IAudioSessionEnumerator, "UIntP", SessionCount, "UInt")
    Loop % SessionCount
    {
    DllCall(NumGet(NumGet(IAudioSessionEnumerator+0)+4*A_PtrSize), "UPtr", IAudioSessionEnumerator, "Int", A_Index-1, "UPtrP", IAudioSessionControl, "UInt")
    IAudioSessionControl2 := ComObjQuery(IAudioSessionControl, "{BFB7FF88-7239-4FC9-8FA2-07C950BE9C6D}")
    ObjRelease(IAudioSessionControl)
    
    DllCall(NumGet(NumGet(IAudioSessionControl2+0)+14*A_PtrSize), "UPtr", IAudioSessionControl2, "UIntP", ProcessId, "UInt")
    if (ProcessId)
    PID .= ProcessId ","
    ObjRelease(IAudioSessionControl2)
    }
    ObjRelease(IAudioSessionEnumerator)
    StringTrimRight, PID, PID, 1
    return PID
    }
    
    end::reload
    !end::ExitApp
    



    
    ^^^
    23.02.2019 - v0.1 /
    Выход в свет
    ---
    25.02.2019 - v0.2 /
    Авто-обновление
    Разделение процессов на all/only multimedia
    ---
    26.02.2019 - v0.3 /
    Фикс "мёртвых" кнопок + оптимизация кода
    Выключение звука в активном окне
    ---
    05.03.2019 - v0.4 / Reborn
    Переработана система профилей
    ---
    12.03.2019 - v0.5 / Reborn
    Добавлена возможность выгрузки настроек ваших профилей
    Фикс бага с не разворачиваемым окном
    ---
    23.03.2019 - v0.6 / Release
    Фикс дублирующихся процессов
    Фикс разворачивания окна
    При загрузке профиля, PID будет определятся исходя из имени процесса приложения, а не использоваться с указанного .ini файла. 
    Теперь имеет смысл на постоянной основе пользоваться загрузкой/выгрузкой профиля.
    ^^^
    

    • Научить скрипт определять процесс нужного окна с играющим мультимедиа.
    • [Реализовано] 0.2v

    • Добавить возможность создавать неограниченное кол-во хоткеев.
    • [Реализовано] 0.4v

    • Выключение звука в активном окне
    • [Реализовано] 0.3v

    • Авто-обновление
    • [Реализовано] 0.2v

    • Изменение звука по имени процесса
    • [Реализовано] 0.6v

    • Сохранение настроек
    • [Реализовано] 0.5v
    • Исправить появляющиеся дубликаты процессов
    • [Реализовано] 0.6v

    Скачать:
    GitHub



    В связи с "проблемами" в авто-обновлении скрипта с использованием ресурса blasthack,
    мною было принято решение перенести не только проверку AutoUPD на GitHub, но и скачиваемые ресурсы так же.
    Вследствие этого - все вложения с файлами (скачивание которых в сумме переваливает 150>) удалены.
    Выходящие обновления будут оглашаться в этой теме и поддержка скрипта (по крайне мере до выхода в релиз) прекращена не будет.



    [​IMG]


    Связь/сотрудничество: VK
    Отдельная благодарность этому человеку
     
    #1 BASS_DEVSOFTWARE, 23 фев 2019
    Последнее редактирование: 23 мар 2019
    Cucumber, Proganet, #darksoor и 4 другим нравится это.
  2. NHacker1271

    NHacker1271 Активный участник

    Регистрация:
    17 фев 2016
    Сообщения:
    29
    Симпатии:
    2
    Микшер громкости? Не не не слышал. Но за старание респект.
     
  3. Proganet

    Proganet Новичок

    Регистрация:
    24 фев 2019
    Сообщения:
    4
    Симпатии:
    1
    Убавить звук активного окна до 0.
    
    F2::
        WinGet, PID, PID, A
        SetAppVolume(PID, 0)
    Return
    
     
  4. BASS_DEVSOFTWARE

    BASS_DEVSOFTWARE vk.com/bass_devware
    Проверенный

    Регистрация:
    29 апр 2017
    Сообщения:
    151
    Симпатии:
    113
    Вышло обновление 0.2v

    Что нового?
    • Добавлено автоматическое обновление
    • Добавлено отображение процессов с играющим мультимедиа
    Необходимо перекачать скрипт, в дальнейшем это уже не потребуется.
    И так как BlastHack не разрешает загружать файлы весящие больше 2мб, необходимо ещё дополнительно скачать loader.exe и поместить его в одной директории со скриптом.

    И большая просьба к вышестоящим, при редактировании темы случайно удалил файл.exe с первой версией скрипта, великодушно хочу попросить восстановить этот файл в тему, если это является возможным.
     
  5. #darksoor

    #darksoor Знающий

    Регистрация:
    10 июл 2016
    Сообщения:
    293
    Симпатии:
    54
    Потом на меня будут говорить, что я быдлокодер....

    Что это за чушь вообще такая????
    if A_EventInfo = 0 
    { 
    } 
    else 
    { 
       if var = 1 
       { 
       } 
       else
       {
       ;code
       }
    }
    Если условия делаются так:
    if A_EventInfo != 0 
    { 
       if var != 1
       {
       ;code
       }
    }
    Перепиши все условия.
     
  6. BASS_DEVSOFTWARE

    BASS_DEVSOFTWARE vk.com/bass_devware
    Проверенный

    Регистрация:
    29 апр 2017
    Сообщения:
    151
    Симпатии:
    113
    Спасибо, что указал на мою оплошность. В следующем обновлении исправлю. :boss:

     
    #6 BASS_DEVSOFTWARE, 26 фев 2019
    Последнее редактирование: 2 мар 2019
  7. Proganet

    Proganet Новичок

    Регистрация:
    24 фев 2019
    Сообщения:
    4
    Симпатии:
    1
    Сейчас заценим. А править да, код нужно...
     
  8. BASS_DEVSOFTWARE

    BASS_DEVSOFTWARE vk.com/bass_devware
    Проверенный

    Регистрация:
    29 апр 2017
    Сообщения:
    151
    Симпатии:
    113
    Обновление 0.3v

    Что нового?
    • Исправлена ошибка с хоткеями, когда заменяя предыдущий, "теряли" его и не могли использовать.
    • Добавлен отдельный хоткей для изменения звука в активном окне.
    • Лёгкая оптимизация кода
    Пользователи, имеющие 0.2v клиента могут обновиться прямиком из самой программы, для этого необходимо её просто запустить.
    ВАЖНО: Если вы скачивали файл с BlastHack'a, рядом с файлом SoundMixer.exe должен так же лежать Loader.exe.
    Так же вы можете скачать последнюю версию прямиком из GitHub, а так же с BlastHack, загрузив последнее вложение темы.​
     
  9. BASS_DEVSOFTWARE

    BASS_DEVSOFTWARE vk.com/bass_devware
    Проверенный

    Регистрация:
    29 апр 2017
    Сообщения:
    151
    Симпатии:
    113
    Патч-фикс 0.3b
    • Исправил проверку обновления программы.
    Для исправления данной проблемы необходимо вручную перекачать клиент.​
     
    Proganet нравится это.
  10. BASS_DEVSOFTWARE

    BASS_DEVSOFTWARE vk.com/bass_devware
    Проверенный

    Регистрация:
    29 апр 2017
    Сообщения:
    151
    Симпатии:
    113
    Обновление 0.4 REBORN

    Нововведения:


    • Была добавлена система профилей, благодаря которой исходный код программы был переписан практически с нуля.



    Пользователи, имеющие 0.3v клиента могут обновиться прямиком из самой программы, для этого необходимо её просто запустить.
    ВАЖНО: Если вы скачивали файл с BlastHack'a, рядом с файлом SoundMixer.exe должен так же лежать Loader.exe.
    Так же вы можете скачать последнюю версию прямиком из GitHub, а так же с BlastHack, загрузив последнее вложение темы.​
     
  11. BASS_DEVSOFTWARE

    BASS_DEVSOFTWARE vk.com/bass_devware
    Проверенный

    Регистрация:
    29 апр 2017
    Сообщения:
    151
    Симпатии:
    113
    Баг-репорт

    Со вчерашнего дня, автоматическое обновление официально признано - нерабочим.
    В ближайшем обновлении переделаю автоматическое обновление под нейтральный хостинг.​
     
  12. BASS_DEVSOFTWARE

    BASS_DEVSOFTWARE vk.com/bass_devware
    Проверенный

    Регистрация:
    29 апр 2017
    Сообщения:
    151
    Симпатии:
    113
    New's


    • Начиная с 7-го марта, все виртуальные копии SoundMixer и SoundMixerR перенесены на ресурс GitHub.
    ВАЖНО
    Fixes


    • Автоматическое обновление, как таковое, перестало существовать. Начиная с версии R0.4, обновление будет проходить в порядке ручного скачивания и установки.​
    (Оповещения никуда не делись).
    • Небольшие доработки​
     
  13. index

    index Постоянный участник

    Регистрация:
    5 мар 2018
    Сообщения:
    75
    Симпатии:
    27
    Про обновки
    Раз уж исходники открыты - можешь распространять exe'шником лоадер, который чекает версию скрипта и скачивает .ahk файлы с гитхаба в %appdata%\Roaming\SoundMixerByBASS. В ту же папку закинуть Autohotkey.exe (через FileInstall или скачать с офиц. ресурса и распаковать). Если все обновлено (или нет интернета) - запускаем тот Autohotkey.exe с основным файлом скрипта в качестве параметра.
     
    BASS_DEVSOFTWARE нравится это.
  14. BASS_DEVSOFTWARE

    BASS_DEVSOFTWARE vk.com/bass_devware
    Проверенный

    Регистрация:
    29 апр 2017
    Сообщения:
    151
    Симпатии:
    113
    Обновление 0.5 Reborn

    Что нового?
    • Добавлена возможность выгрузки настроек ваших профилей.
    • Исправлена проблема не разворачиваемого окна SoundMixer, после его сворачивания.



    Для корректной работы проверки на обновления, необходимо перекачать с GitHub'a клиент последней версии.​
     
  15. BASS_DEVSOFTWARE

    BASS_DEVSOFTWARE vk.com/bass_devware
    Проверенный

    Регистрация:
    29 апр 2017
    Сообщения:
    151
    Симпатии:
    113
    Хочу с гордостью представить Релиз по факту скрипта, но по сути программы - SoundMixer

    Sound Mixer Release
    /

    Список изменений:
    • Фикс дублирующихся процессов
    • Фикс разворачивания окна
    • При загрузке профиля, PID будет определятся исходя из имени процесса приложения, а не использоваться с указанного .ini файла.
    Теперь имеет смысл на постоянной основе пользоваться загрузкой/выгрузкой профиля.

    :dance::dance::dance::dance::dance::dance::dance::dance::dance::dance::dance:
    Сегодня ровно месяц с выхода SoundMixer в свет!
    :dance::dance::dance::dance::dance::dance::dance::dance::dance::dance::dance:

    [​IMG]
     
    Proganet нравится это.