Code: Select all
#NoEnv ; Recommended for performance and compatibility with future AutoHotkey releases.
; #Warn ; Enable warnings to assist with detecting common errors.
SendMode Input ; Recommended for new scripts due to its superior speed and reliability.
SetWorkingDir %A_ScriptDir% ; Ensures a consistent starting directory.
#Persistent
#SingleInstance Force
EnvGet, A_LocalAppData, LocalAppData
global A_LocalAppData := A_LocalAppData
ProcessExist(ProcessName)
{
Process, Exist, %ProcessName%
return ErrorLevel
}
;~ Close Discord gracefully if it is running
CloseDiscord()
{
if ProcessExist("Discord.exe")
{
WinActivate, ahk_exe Discord.exe
WinWaitActive, ahk_exe Discord.exe
ControlSend,, {Alt down}{F4 down}{F4 up}{Alt up}, ahk_exe Discord.exe
Process, WaitClose, Discord.exe
}
}
RefreshTray()
{
Menu, Tray, DeleteAll
Menu, Tray, Add
Loop, Files, %A_LocalAppData%\Programs\Discord account switcher\*, D
{
Menu, Tray, Add, %A_LoopFileName%, MenuHandler
}
}
IfNotExist, %A_LocalAppData%\Programs\Discord account switcher
{
FileCreateDir, %A_LocalAppData%\Programs\Discord account switcher\Account 2
FileAppend, Account 1, %A_LocalAppData%\Programs\Discord account switcher\Active account.txt
}
RefreshTray()
return
MenuHandler:
CloseDiscord()
FileRead, ActiveAccount, %A_LocalAppData%\Programs\Discord account switcher\Active account.txt
FileMoveDir, %A_AppData%\Roaming\discord, %A_LocalAppData%\Programs\Discord account switcher\%ActiveAccount%
FileMoveDir, %A_LocalAppData%\Programs\Discord account switcher\%A_ThisMenuItem%, %A_AppData%\Roaming\discord
RefreshTray()
FileDelete, %A_LocalAppData%\Programs\Discord account switcher\Active account.txt
FileAppend, %A_ThisMenuItem%, %A_LocalAppData%\Programs\Discord account switcher\Active account.txt
Run, %A_AppData%\Microsoft\Windows\Start Menu\Programs\Discord Inc\Discord.lnk
return