Skip to content

Instantly share code, notes, and snippets.

@MasterGroosha
Created January 16, 2017 22:38
Show Gist options
  • Save MasterGroosha/eaebce2e20f55d6ed4c6abb2892d91a5 to your computer and use it in GitHub Desktop.
Save MasterGroosha/eaebce2e20f55d6ed4c6abb2892d91a5 to your computer and use it in GitHub Desktop.
#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.
#SingleInstance force
ShowHelp()
{
Gui, New, 2 ; Creates a new unnamed and unnumbered GUI.
Gui, 2:Font, s10, Verdana ; Set 10-point Verdana.
Gui, 2:Add, Link, +Wrap Center W480, Telegram Desktop Fixer v1.0`nАвтор: @Groosha, 2017г.`n`nЭтот Fixer, будучи запущенным, заставляет открывать t.me и telegram.me ссылки в нужном приложении.`nПодробнее: <a href="https://t.me/tglive/382">t.me/tglive/382</a>`n`nЧтобы сменить каталог, удалите файл конфигурации, который лежит рядом с файлом программы.
Gui, 2:Add, Button, X220 Y150 gbtnOK, OK
Gui, 2:Show, W500 H200, Telegram Desktop Fixer - Справка
WinActivate , Telegram Desktop Fixer - Справка
; WinWait , Telegram Desktop Fixer - Help
Return
btnOK:
Gui, Destroy
Return
}
AddMenu()
{
#Persistent
Menu, Tray, NoStandard ; Убираем стандартные кнопки, доставшиеся от AHK
Menu, Tray, Add ,Справка, ButtonHelp
Menu, Tray, Add ,Выход, ButtonExit
Return
ButtonHelp:
ShowHelp()
Return
ButtonExit:
ExitApp 0
Return
}
FindFile()
; Функция ищет файл Telegram.exe. Если в папке его нет, надо выбрать каталог заново.
; Если есть, пишем в реестр и в конфиг. В следующий раз GUI не нужен будет.
{
FileSelectFolder, Folder ; Показываем диалог
if (Folder = "")
{
MsgBox, Выбран неправильный путь. Перезапустите приложение!
IniWrite, ERROR, TDFixerConfig.ini, Default, Path
ExitApp 0
}
else
{
tg_found := 0
Loop Files, %Folder%\*.exe
{
; Смотрим, есть ли файл Telegram.exe в каталоге
if (A_LoopFileName = "Telegram.exe")
{
tg_found := 1
Break
}
}
if (tg_found = 0)
{
MsgBox, В этом каталоге нет файла Telegram.exe. Пожалуйста, выберите правильный каталог!
FindFile()
Return
}
else
{
String := RegExReplace(Folder, "\\", "/") ; Путь с обратными слешами
String2 := Format("""{1}\Telegram.exe"" -workdir ""{2}"" -- ""%1""", Folder, String)
RegWrite, REG_SZ, HKEY_CURRENT_USER, SOFTWARE\Classes\tg\shell\open\command,, %String2%
IniWrite, %Folder%, TDFixerConfig.ini, Default, Path
MsgBox, Успешно установлен путь: %Folder%. Не забудьте поставить приложение в автозагрузку.
ExitApp 0
}
}
Return
}
; Функция показа диалога и записи значения в реестр/файл конфига
MainGui()
{
Gui, New, 1 ; Creates a new unnamed and unnumbered GUI.
Gui, 1:Font, s10, Verdana ; Set 10-point Verdana.
Gui, 1:Add, Link, +Wrap Center W480, Это приложение позволяет исправить открытие t.me и telegram.me-ссылок не в том экземпляре Telegram Desktop, постоянно редактируя реестр.`nПожалуйста, воспользуйтесь кнопкой ниже, чтобы выбрать каталог с нужной копией TDesktop. Не забудьте после этого поставить ярлык приложения в автозагрузку!`nПодробнее: <a href="https://t.me/tglive/382">t.me/tglive/382</a>
Gui, 1:Add, Button, X180 Y150 gchooseFolder, Выбрать каталог
Gui, 1:Add, Link, gHelp X215 Y180, <a href="">Справка</a>
Gui, 1:Show, W500 H210, Telegram Desktop Fixer
WinActivate , Telegram Desktop Fixer
WinWait , Telegram Desktop Fixer
WinWaitClose, Telegram Desktop Fixer
ExitApp
Return
; Окошко «Справка» по нажатию на ссылку
Help:
ShowHelp()
Return
chooseFolder:
FindFile()
Return
}
; Проверим наличие файла, если есть, читаем содержимое и пишем в реестр, потом выходим
IniRead, config_path, TDFixerConfig.ini, Default, Path, ERROR ; Если нет файла, то в config_path будет "ERROR"
if (config_path = "ERROR") ; Файла нет, надо показать GUI
{
FileAppend,, TDFixerConfig.ini ; Создаём файл
IniWrite, ERROR, TDFixerConfig.ini, Default, Path ; Ставим заглушку
AddMenu()
MainGui()
}
else
{
; Добавляем меню в трее
AddMenu()
; Каждую минуту обновлять значение в реестре
Loop,
{
backslash_path := RegExReplace(config_path, "\\", "/") ; Путь с обратными слешами
path_to_write := Format("""{1}\Telegram.exe"" -workdir ""{2}"" -- ""%1""", config_path, backslash_path)
RegWrite, REG_SZ, HKEY_CURRENT_USER, SOFTWARE\Classes\tg\shell\open\command,, %path_to_write%
Sleep, 60000 ; Пауза между повторными записями
}
ExitApp 0
}
@stek29
Copy link

stek29 commented Jan 16, 2017

😭

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment