AHKFastTranslator is an AutoHotkey script that provides a fast and convenient way to translate text using Google Translate API.
It allows you to assign a hotkey that triggers the translation process, and the translated text can be displayed in a tooltip or a message box.
- No need to use a web browser to translate anymore!
- Translate text quickly without leaving your current application.
- Assign a custom hotkey to trigger the translation.
- Display the translated text in a tooltip or a message box.
- The application remembers its position on the screen as well as your settings.
- Copy the translation to the clipboard (optional).
- Run the script at startup (optional).
Source code and live demo:
https://github.com/balawi28/AHKFastTranslator
- Home Board index AutoHotkey (v1.1 and older) Scripts and Functions (v1)
- Search
-
- It is currently 21 May 2024, 08:12
- All times are UTC-05:00
AHK Fast Translator
Post your working scripts, libraries and tools for AHK v1.1 and older
Re: AHK Fast Translator
WOW... Very Impressive!!
Works as advertised and love the customizing options.
Thank you much for this!!!
Works as advertised and love the customizing options.
Thank you much for this!!!
Re: AHK Fast Translator
@V0RT3X Thanks buddy, please keep me posted if you face any bugs.
Re: AHK Fast Translator
So far still loving this. Only wish I could come up with is for it to have a 'Detect language" option.
That is literally the only thing I'm finding that isn't included in the 133 languages. I didn't even realize we had that many...lol.
That is literally the only thing I'm finding that isn't included in the 133 languages. I didn't even realize we had that many...lol.
Re: AHK Fast Translator
Great script can be useful.
I like the ini in the stream of the file
For me, for exemple, a line under the language selection with 3 favorite languages will be easier for use when I need to switch between my most 3 used langages.
And like said V0RT3X a 'detect language' can be also useful.
But great script even without these.
I like the ini in the stream of the file
For me, for exemple, a line under the language selection with 3 favorite languages will be easier for use when I need to switch between my most 3 used langages.
And like said V0RT3X a 'detect language' can be also useful.
But great script even without these.
Re: AHK Fast Translator
@V0RT3X Check Git Hub, I have updated the script to include auto-language detection.
@ozzii Thank you, it is a good idea but a little bit hard to implement.
@ozzii Thank you, it is a good idea but a little bit hard to implement.
Re: AHK Fast Translator
Thank you! This will become part of my portables "toolbox"
I'll get to try it out this week at work. Should be fun.
I'll get to try it out this week at work. Should be fun.
Re: AHK Fast Translator
Hello @balawi28, just thought I'd drop you a note informing that this thing is still working great. I have yet to run into any 'bugs' or anything of the sort.
Hope you don't mind, but I've edited your script (for personal aesthetics) changing the drag method and added a couple small gLabel/ToolTip items.
Hover your mouse over and check out 'Knowledge' and also the header. Header is Google colors. Hope you approve!!
The 'Clipboard Only' radio button is just so I have the option of not using a message box or tooltip, but just what hits the clipboard for pasting.
Hope you don't mind, but I've edited your script (for personal aesthetics) changing the drag method and added a couple small gLabel/ToolTip items.
Hover your mouse over and check out 'Knowledge' and also the header. Header is Google colors. Hope you approve!!
- image.png (2.34 KiB) Viewed 2928 times
- image.png (18.31 KiB) Viewed 2928 times
Spoiler
Code: Select all
#NoEnv ; Recommended for performance and compatibility with future AutoHotkey releases.
#SingleInstance force ; Ensures only one instance of the script is running.
: Source: https://github.com/balawi28/AHKFastTranslator
; Update tray icon
Menu, Tray, Icon, % "HICON:" . Base64PNG_to_HICON(TrayIcon())
global Minimized := True
dict := GetLanguagesDict()
menuOptions := Join(dict, "|")
IniRead, defaultSourceLanguage, %A_ScriptFullPath%:Stream:$DATA, Settings, defaultSourceLanguage,English
IniRead, defaultTargetLanguage, %A_ScriptFullPath%:Stream:$DATA, Settings, defaultTargetLanguage,Arabic
IniRead, hotKeyPrevious, %A_ScriptFullPath%:Stream:$DATA, Settings, hotKeyPrevious, ^+t
IniRead, isRanAtStartup, %A_ScriptFullPath%:Stream:$DATA, Settings, isRanAtStartup, 0
IniRead, outputMethod, %A_ScriptFullPath%:Stream:$DATA, Settings, outputMethod, tooltip
IniRead, EnableClipboard, %A_ScriptFullPath%:Stream:$DATA, Settings, EnableClipboard, 0
; Initalize hotkey
if (StrLen(hotKeyPrevious) != 0)
Hotkey, %hotKeyPrevious%, HotkeyPressed
; Initalize source and target languages
sourceIndex := FindLanguageIndex(dict, defaultSourceLanguage)
targetIndex := FindLanguageIndex(dict, defaultTargetLanguage)
; Tray menu
Menu, Tray, NoStandard ; Remove all standard tray menu options
Menu, Tray, Add, GUI, HotkeyPressed
; Menu, Tray, Add, Run at Startup, StartupToggle ; ๐กฐ
Menu, Tray, Add, Exit, ExitApplication
Menu, Tray, Icon, Exit, Shell32.dll, 132
Menu, Tray, Default, GUI
if (isRanAtStartup)
Menu, Tray, Check, Run at Startup
Gui, +AlwaysOnTop +ToolWindow +LastFound +Border +OwnDialogs
Gui, Margin, 5, 5
Gui, Color, A7A7A7
; โโโโโโโโโโโโโโโ
Gui, Add, Picture, x3 y3 w32 h32, % "HICON:" . Base64PNG_to_HICON(GoogleTranslateLogo())
; โโโโโ
Gui, Font, s14 BOLD q5, ARIAL
Gui, Add, Text, x10 y10 w360 cF9C01C BackgroundTrans CENTER, AHK FAST TRANSLATOR
Gui, Add, Text, x90 y10 w190 BackgroundTrans CENTER HwndhText gDUMMY, โโโโ
AttachTip(hText, "AHK Fast Translate`nโBy: balawi28")
Gui, Add, Text, x9 y9 w360 cE43E31 BackgroundTrans CENTER, AHK FAST TRANSLATOR
Gui, Add, Text, x8 y8 w360 c249444 BackgroundTrans CENTER, AHK FAST TRANSLATOR
; โโโโโ
Gui, Font, s14 w400 q5, Segoe UI
Gui, Add, Text, x318 y-1 cD9D900 HwndhText gHIDE, โช
AttachTip(hText, "HIDE")
Gui, Font, s11
Gui, Add, Text, x338 y1 cFF8F00 HwndhText gReload, |โฉ|
AttachTip(hText, "RELOAD")
Gui, Font, s14
Gui, Add, Text, x358 y-1 cB20000 HwndhText gExit, โ
AttachTip(hText, "EXIT")
; โโโโโโโโโโโโโโโ
Gui, Font, s10 w200 cBLACK q5, Segoe UI
Gui, Add, Text, x20 y40 BackgroundTrans, Select Input Language
Gui, Add, DropDownList, x20 y60 w150 choose%sourceIndex% vSourceLang gOnSourceLangChange, %menuOptions%
Gui, Add, Picture, x178 y64 w23 h16 gSwapLanguages, % "HICON:" . Base64PNG_to_HICON(SwapIcon())
Gui, Add, Text, x210 y40 BackgroundTrans, Select Output Language
Gui, Add, DropDownList, x210 y60 w150 choose%targetInde`x% vTargetLang gOnTargetLangChange, %menuOptions%
; โโโโโโโโโโโโโโโ
Gui, Font, s10 w400 cBLACK q5, ARIAL
Gui, Add, Text, x5 y95 w186 h60 BackgroundTrans 0x00800000, โChoose Output Style
Gui, Font, s10 w200 cBLACK q5, TAHOMA
Gui, Add, Radio, x10 y115 vChoiceClip gClipONLY BackgroundTrans Checked, Clipboard`nOnly
Gui, Add, Radio, x90 y115 vChoiceMsgBox gRadioChoice BackgroundTrans, Message Box
Gui, Add, Radio, x90 y135 vChoiceToolTip gRadioChoice BackgroundTrans, Tooltip
GuiControl,, % outputMethod = "tooltip" ? "ChoiceToolTip" ? : "ChoiceMsgBox" ? : "ChoiceClip", 1
; โโโโโ
Gui, Font, s10 w400 cBLACK q5, ARIAL
Gui, Add, Text, x190 y95 w185 h60 0x00800000, โSet Interface Hotkey
Gui, Font, s10 w200 cBLACK q5, TAHOMA
Gui, Add, Hotkey, x207 y117 w120 h20 vhotKeyCurrent
GuiControl,, hotKeyCurrent, %hotKeyPrevious%
Gui, Font, s8 w200 cBLACK q5, TAHOMA
Gui Add, Button, x330 y117 w40 h20, Save
; โโโโโโโโโโโโโโโ
Gui, Font, s8 w400 c4E4E4E q5 ITALIC, CALIBRI
Gui, Add, Text, x10 y165 w360 BackgroundTrans CENTER, Translated text will appear in Clipboard and Prefered Output selection.
Gui, Add, Edit, x15 y180 w350 vTextToTranslate
; โโโโโโโโโโโโโโโ
Gui, Font, s8 w400 q5 ITALIC, CALIBRI
Gui, Add, Text, x20 y208 c858585 HwndhText gABOUTS, [Knowledge]
AttachTip(hText, "ABOUT")
; โโโโโ
Gui, Font, s8 w200 c4E4E4E q5 NORM, CALIBRI
Gui, Add, CheckBox, x195 y208 vEnableClipboard gCheckBox, Copy Translation to Clipboard
GuiControl,,EnableClipboard,%EnableClipboard%
; โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
; โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
CheckBox:
Gui, Submit, NoHide
IniWrite, %EnableClipboard%, %A_ScriptFullPath%:Stream:$DATA, Settings,EnableClipboard
Return
; Save hotkey routine
ButtonSave:
Gui, Submit, NoHide
if (StrLen(hotKeyPrevious) != 0 and hotKeyPrevious != hotKeyCurrent){
Hotkey, %hotKeyPrevious%, Off
}
if (StrLen(hotKeyCurrent) != 0){
Hotkey, %hotKeyCurrent%, On, UseErrorLevel
Hotkey, %hotKeyCurrent%, HotkeyPressed
}
IniWrite, %hotKeyCurrent%, %A_ScriptFullPath%:Stream:$DATA, Settings,hotKeyPrevious
hotKeyPrevious := hotKeyCurrent
MsgBox, 0x40000,, Hotkey Saved Successfully
Return
#IfWinActive, AHKFastTranslation ahk_class AutoHotkeyGUI
Esc::
Goto, GuiClose
Return
NumpadEnter::
Enter::
Gui, Submit
GuiControl, , TextToTranslate
Minimized := True
url := TranslateURL(dict[SourceLang], dict[TargetLang], TextToTranslate)
response := PostRequest(url)
cleanResponse := SubStr(response, 3, StrLen(response) - 4)
if (SourceLang = "_Auto Detect_")
cleanResponse := SubStr(cleanResponse, 2, StrLen(cleanResponse) - 7)
if (EnableClipboard)
Clipboard := cleanResponse
if (outputMethod = "tooltip"){
ToolTip % cleanResponse
Sleep, 2000 ; Display the tooltip for 2 seconds
ToolTip ; Remove the tooltip
} else
MsgBox, 0x40000,, % cleanResponse
Return
#IfWinActive
DUMMY:
Sleep, 10
Return
ABOUTS:
SetTimer, Countdown, 1000
Timeout := 4
MsgBox, 0x40000, AHK Fast Translate, By: balawi28โhttps://github.com/balawi28/AHKFastTranslator`nReport Bugsโhttps://github.com/balawi28/AHKFastTranslator/issues`n`nHow to Use โ1. Select Input/Output Languages`nโโโโโโ 2. Select Output Style`nโโโโโโ 3. Set Hotkey Preference (if needed)`nโโโโโโ 4. Paste Text to translate`nโโโโโโ 5. Translation Will Appear in Output Preferences, 7
Return
GuiClose:
GuiControl, , TextToTranslate
Minimized := True
Gui, Cancel
Return
HIDE:
Gui, Hide
Return
Reload:
Reload
Exit:
ExitApp
Return
Countdown:
if !WinExist("Shutdown Alert ahk_class #32770") {
SetTimer, Countdown, Off
return
}
ControlGetText, Msg, Static2
RegExMatch(Msg, "\d+", Sec)
ControlSetText, Static2, % RegExReplace(Msg, "\d+", Sec - 1)
if (Sec = 1)
SetTimer, Countdown, Off
Return
ExitApplication(){
ExitApp
Exit
}
RadioChoice:
gui, submit, nohide
outputMethod := ChoiceToolTip ? "tooltip" : "msgbox"
IniWrite, %outputMethod%, %A_ScriptFullPath%:Stream:$DATA, Settings,outputMethod
Return
ClipONLY:
Sleep, 10
Return
HotkeyPressed:
if(Minimized){
IniRead, defaultXPosition, %A_ScriptFullPath%:Stream:$DATA, Settings, defaultXPosition,Center
IniRead, defaultYPosition, %A_ScriptFullPath%:Stream:$DATA, Settings, defaultYPosition,Center
Gui, Show, x%defaultXPosition% y%defaultYPosition% w380 h227, AHK Fast Translator
GuiControl, Focus, TextToTranslate
}else{
Goto, GuiClose
}
Minimized := ! Minimized
OnMessage(0x0201, "WM_LBUTTONDOWN")
Return
StartupToggle:
isRanAtStartup := !isRanAtStartup
Menu, Tray, ToggleCheck, Run at Startup
if(isRanAtStartup)
FileCreateShortcut,%A_ScriptFullPath%,%A_AppData%\Microsoft\Windows\Start Menu\Programs\Startup\TrayAudioAnalyzer.lnk,%A_ScriptDir%
else
FileDelete, %A_AppData%\Microsoft\Windows\Start Menu\Programs\Startup\TrayAudioAnalyzer.lnk
IniWrite, %isRanAtStartup%, %A_ScriptFullPath%:Stream:$DATA, Settings, isRanAtStartup
Return
PostRequest(url){
response := ComObjCreate("WinHttp.WinHttpRequest.5.1")
response.Open("POST", url, false)
response.Send()
Return response.ResponseText
}
TranslateURL(sourceLang, targetLang, textToTranslate)
{
baseUrl := "http://translate.google.com/translate_a/t?"
params := []
params["sl"] := sourceLang
params["tl"] := targetLang
params["uptl"] := targetLang
params["q"] := UriEncode(textToTranslate)
params["client"] := "p"
params["hl"] := "en"
params["sc"] := "2"
params["ie"] := "UTF-8"
params["oe"] := "UTF-8"
params["oc"] := "1"
params["prev"] := "conf"
params["psl"] := "auto"
params["ptl"] := "en"
params["otf"] := "1"
params["it"] := "sel.8936"
params["ssel"] := "0"
params["tsel"] := "3"
Return baseUrl . EncodeParams(params)
}
Join(dict, delim) {
result := ""
for key in dict
{
if (result != "")
result .= delim
result .= key
}
Return result
}
FindLanguageIndex(dict, language) {
index := 1
for key, value in dict
{
if (key == language)
Return index
index += 1
}
Return -1 ; Language not found, Return -1
}
OnSourceLangChange() {
GuiControlGet, selectedSourceLang, , SourceLang
IniWrite, %selectedSourceLang%, %A_ScriptFullPath%:Stream:$DATA, Settings, defaultSourceLanguage
}
OnTargetLangChange() {
GuiControlGet, selectedTargetLang, , TargetLang
IniWrite, %selectedTargetLang%, %A_ScriptFullPath%:Stream:$DATA, Settings, defaultTargetLanguage
}
SwapLanguages(){
GuiControlGet, selectedTargetLang, , TargetLang
GuiControlGet, selectedSourceLang, , SourceLang
temp := selectedSourceLang
GuiControl, Choose, SourceLang, %selectedTargetLang%
GuiControl, Choose, TargetLang, %temp%
IniWrite, %selectedTargetLang%, %A_ScriptFullPath%:Stream:$DATA, Settings, defaultSourceLanguage
IniWrite, %temp%, %A_ScriptFullPath%:Stream:$DATA, Settings, defaultTargetLanguage
}
EncodeParams(params)
{
encodedParams := ""
for key, value in params
{
encodedKey := key
encodedValue := value
encodedParams .= (encodedParams = "") ? encodedKey . "=" . encodedValue : "&" . encodedKey . "=" . encodedValue
}
Return encodedParams
}
; UriEncode function is written by the-Automator
; https://www.the-automator.com/parse-url-parameters/
UriEncode(Uri, RE="[0-9A-Za-z]")
{
VarSetCapacity(Var, StrPut(Uri, "UTF-8"), 0)
StrPut(Uri, &Var, "UTF-8")
While Code := NumGet(Var, A_Index-1, "UChar")
{
Res .= (Chr := Chr(Code)) ~= RE ? Chr : Format("%{:02X}", Code)
}
Return Res
}
; Define the MouseUp function to get the new x and y coordinates
OnDragRelease(wParam, lParam, msg, hwnd)
{
WinGetPos, WinX, WinY, , , ahk_id %hwnd%
IniWrite, %WinX%, %A_ScriptFullPath%:Stream:$DATA, Settings, defaultXPosition
IniWrite, %WinY%, %A_ScriptFullPath%:Stream:$DATA, Settings, defaultYPosition
}
Base64PNG_to_HICON(Base64PNG, W:=0, H:=0){
BLen:=StrLen(Base64PNG), Bin:=0, nBytes:=Floor(StrLen(RTrim(Base64PNG,"="))*3/4)
Return DllCall("Crypt32.dll\CryptStringToBinary", "Str",Base64PNG, "UInt",BLen, "UInt",1,"Ptr",&(Bin:=VarSetCapacity(Bin,nBytes)), "UIntP",nBytes, "UInt",0, "UInt",0)? DllCall("CreateIconFromResourceEx", "Ptr",&Bin, "UInt",nBytes, "Int",True, "UInt",0x30000, "Int",W, "Int",H, "UInt",0, "UPtr") : 0
}
GetLanguagesDict(){
global dict
if !dict {
dict := {}
dict["_Auto Detect_"] := "auto"
dict["Afrikaans"] := "af"
dict["Albanian"] := "sq"
dict["Amharic"] := "am"
dict["Arabic"] := "ar"
dict["Armenian"] := "hy"
dict["Assamese"] := "as"
dict["Aymara"] := "ay"
dict["Azerbaijani"] := "az"
dict["Bambara"] := "bm"
dict["Basque"] := "eu"
dict["Belarusian"] := "be"
dict["Bengali"] := "bn"
dict["Bhojpuri"] := "bho"
dict["Bosnian"] := "bs"
dict["Bulgarian"] := "bg"
dict["Catalan"] := "ca"
dict["Cebuano"] := "ceb"
dict["Chinese (Simplified)"] := "zh-CN"
dict["Chinese (Traditional)"] := "zh-TW"
dict["Corsican"] := "co"
dict["Croatian"] := "hr"
dict["Czech"] := "cs"
dict["Danish"] := "da"
dict["Dhivehi"] := "dv"
dict["Dogri"] := "doi"
dict["Dutch"] := "nl"
dict["English"] := "en"
dict["Esperanto"] := "eo"
dict["Estonian"] := "et"
dict["Ewe"] := "ee"
dict["Filipino (Tagalog)"] := "fil"
dict["Finnish"] := "fi"
dict["French"] := "fr"
dict["Frisian"] := "fy"
dict["Galician"] := "gl"
dict["Georgian"] := "ka"
dict["German"] := "de"
dict["Greek"] := "el"
dict["Guarani"] := "gn"
dict["Gujarati"] := "gu"
dict["Haitian Creole"] := "ht"
dict["Hausa"] := "ha"
dict["Hawaiian"] := "haw"
dict["Hebrew"] := "he"
dict["Hindi"] := "hi"
dict["Hmong"] := "hmn"
dict["Hungarian"] := "hu"
dict["Icelandic"] := "is"
dict["Igbo"] := "ig"
dict["Ilocano"] := "ilo"
dict["Indonesian"] := "id"
dict["Irish"] := "ga"
dict["Italian"] := "it"
dict["Japanese"] := "ja"
dict["Javanese"] := "jv"
dict["Kannada"] := "kn"
dict["Kazakh"] := "kk"
dict["Khmer"] := "km"
dict["Kinyarwanda"] := "rw"
dict["Konkani"] := "gom"
dict["Korean"] := "ko"
dict["Krio"] := "kri"
dict["Kurdish"] := "ku"
dict["Kurdish (Sorani)"] := "ckb"
dict["Kyrgyz"] := "ky"
dict["Lao"] := "lo"
dict["Latin"] := "la"
dict["Latvian"] := "lv"
dict["Lingala"] := "ln"
dict["Lithuanian"] := "lt"
dict["Luganda"] := "lg"
dict["Luxembourgish"] := "lb"
dict["Macedonian"] := "mk"
dict["Maithili"] := "mai"
dict["Malagasy"] := "mg"
dict["Malay"] := "ms"
dict["Malayalam"] := "ml"
dict["Maltese"] := "mt"
dict["Maori"] := "mi"
dict["Marathi"] := "mr"
dict["Meiteilon (Manipuri)"] := "mni-Mtei"
dict["Mizo"] := "lus"
dict["Mongolian"] := "mn"
dict["Myanmar (Burmese)"] := "my"
dict["Nepali"] := "ne"
dict["Norwegian"] := "no"
dict["Nyanja (Chichewa)"] := "ny"
dict["Odia (Oriya)"] := "or"
dict["Oromo"] := "om"
dict["Pashto"] := "ps"
dict["Persian"] := "fa"
dict["Polish"] := "pl"
dict["Portuguese"] := "pt"
dict["Punjabi"] := "pa"
dict["Quechua"] := "qu"
dict["Romanian"] := "ru"
dict["Samoan"] := "sm"
dict["Sanskrit"] := "sa"
dict["Scots Gaelic"] := "gd"
dict["Sepedi"] := "nso"
dict["Serbian"] := "sr"
dict["Sesotho"] := "st"
dict["Shona"] := "sn"
dict["Sindhi"] := "sd"
dict["Sinhala (Sinhalese)"] := "si"
dict["Slovak"] := "sk"
dict["Slovenian"] := "sl"
dict["Somali"] := "so"
dict["Spanish"] := "es"
dict["Sundanese"] := "su"
dict["Swahili"] := "sw"
dict["Swedish"] := "sv"
dict["Tagalog (Filipino)"] := "tl"
dict["Tajik"] := "tg"
dict["Tamil"] := "ta"
dict["Tatar"] := "tt"
dict["Telugu"] := "te"
dict["Thai"] := "th"
dict["Tigrinya"] := "ti"
dict["Tsonga"] := "ts"
dict["Turkish"] := "tr"
dict["Turkmen"] := "tk"
dict["Twi (Akan)"] := "ak"
dict["Ukrainian"] := "uk"
dict["Urdu"] := "ur"
dict["Uyghur"] := "ug"
dict["Uzbek"] := "uz"
dict["Vietnamese"] := "vi"
dict["Welsh"] := "cy"
dict["Xhosa"] := "xh"
dict["Yiddish"] := "yi"
dict["Yoruba"] := "yo"
dict["Zulu"] := "zu"
}
Return dict
}
SwapIcon(){
Base64PNG := ""
. "iVBORw0KGgoAAAANSUhEUgAAACAAAAAVCAYAAAAnzezqAAAACXBIWXMAAA3XAAAN1wFCKJt4AAAFyWlU"
. "WHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhp"
. "SHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0"
. "az0iQWRvYmUgWE1QIENvcmUgNy4xLWMwMDAgNzkuYTg3MzFiOSwgMjAyMS8wOS8wOS0wMDozNzozOCAg"
. "ICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJk"
. "Zi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRw"
. "Oi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczpkYz0iaHR0cDovL3B1cmwub3JnL2RjL2VsZW1l"
. "bnRzLzEuMS8iIHhtbG5zOnBob3Rvc2hvcD0iaHR0cDovL25zLmFkb2JlLmNvbS9waG90b3Nob3AvMS4w"
. "LyIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0RXZ0"
. "PSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VFdmVudCMiIHhtcDpDcmVh"
. "dG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIDIzLjAgKFdpbmRvd3MpIiB4bXA6Q3JlYXRlRGF0ZT0iMjAy"
. "My0wNi0zMFQwMjowMToyNSswMzowMCIgeG1wOk1vZGlmeURhdGU9IjIwMjMtMDYtMzBUMDI6MjM6MzUr"
. "MDM6MDAiIHhtcDpNZXRhZGF0YURhdGU9IjIwMjMtMDYtMzBUMDI6MjM6MzUrMDM6MDAiIGRjOmZvcm1h"
. "dD0iaW1hZ2UvcG5nIiBwaG90b3Nob3A6Q29sb3JNb2RlPSIzIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAu"
. "aWlkOjU5NjQ4M2ExLTBiYmQtM2M0Yi05YzMyLWEwZjE5NTRhYzdjNyIgeG1wTU06RG9jdW1lbnRJRD0i"
. "YWRvYmU6ZG9jaWQ6cGhvdG9zaG9wOmU1OWJmZTNjLWQ3ZjYtNzM0YS1hNjY3LWQzOWI1NmMxMmZmYSIg"
. "eG1wTU06T3JpZ2luYWxEb2N1bWVudElEPSJ4bXAuZGlkOmQwYmVhNDVkLTU0MTgtMTU0ZS1hNGQ1LTY4"
. "N2UwZDYxODhiMiI+IDx4bXBNTTpIaXN0b3J5PiA8cmRmOlNlcT4gPHJkZjpsaSBzdEV2dDphY3Rpb249"
. "ImNyZWF0ZWQiIHN0RXZ0Omluc3RhbmNlSUQ9InhtcC5paWQ6ZDBiZWE0NWQtNTQxOC0xNTRlLWE0ZDUt"
. "Njg3ZTBkNjE4OGIyIiBzdEV2dDp3aGVuPSIyMDIzLTA2LTMwVDAyOjAxOjI1KzAzOjAwIiBzdEV2dDpz"
. "b2Z0d2FyZUFnZW50PSJBZG9iZSBQaG90b3Nob3AgMjMuMCAoV2luZG93cykiLz4gPHJkZjpsaSBzdEV2"
. "dDphY3Rpb249InNhdmVkIiBzdEV2dDppbnN0YW5jZUlEPSJ4bXAuaWlkOjU5NjQ4M2ExLTBiYmQtM2M0"
. "Yi05YzMyLWEwZjE5NTRhYzdjNyIgc3RFdnQ6d2hlbj0iMjAyMy0wNi0zMFQwMjoyMzozNSswMzowMCIg"
. "c3RFdnQ6c29mdHdhcmVBZ2VudD0iQWRvYmUgUGhvdG9zaG9wIDIzLjAgKFdpbmRvd3MpIiBzdEV2dDpj"
. "aGFuZ2VkPSIvIi8+IDwvcmRmOlNlcT4gPC94bXBNTTpIaXN0b3J5PiA8L3JkZjpEZXNjcmlwdGlvbj4g"
. "PC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PmOrIjcAAAEfSURBVEgNY2DA"
. "DhKA+D8QL2YYAJAEtRyEXwAx20BZDsKZ9LQ8G83yOHpano9muQM9Lc9Ds/wxEPcA8Vog3gLEm0jAR4B4"
. "AhAzkuKAF2gOoAb2IcUB09E0PwXinUB8F4jvAPFtEvAbID4MxEJI5nMBsRQhR8xEcsBvIDamYhTvg5pb"
. "TYojvgKxFhUsZwXi50jm1hLSMAEtOuyo4Ah3NDPbCGnoRlL8DIhZqOAIKzRHdBPS0AlVeIqKacEMiP+S"
. "4ghNIBZA4vMB8WYgvg/E50jA56H0KiB+QmpIIANfGpQXL0lxAKhWXAjEl4D4AAn4EDQrzoaWssgOqKZn"
. "kW+JZnktPS0PRrO8lJ6Wx6BZnk9Py9nQKju6Wg4Da6CW52CTBADLm7B1N75ElAAAAABJRU5ErkJggg=="
Return Base64PNG
}
TrayIcon(){
Base64PNG := ""
. "iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAACXBIWXMAAAsTAAALEwEAmpwYAAAGSWlU"
. "WHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhp"
. "SHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0"
. "az0iQWRvYmUgWE1QIENvcmUgNy4xLWMwMDAgNzkuYTg3MzFiOSwgMjAyMS8wOS8wOS0wMDozNzozOCAg"
. "ICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJk"
. "Zi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRw"
. "Oi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94"
. "YXAvMS4wL21tLyIgeG1sbnM6c3RFdnQ9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9S"
. "ZXNvdXJjZUV2ZW50IyIgeG1sbnM6cGhvdG9zaG9wPSJodHRwOi8vbnMuYWRvYmUuY29tL3Bob3Rvc2hv"
. "cC8xLjAvIiB4bWxuczpkYz0iaHR0cDovL3B1cmwub3JnL2RjL2VsZW1lbnRzLzEuMS8iIHhtcDpDcmVh"
. "dG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIDIzLjAgKFdpbmRvd3MpIiB4bXA6Q3JlYXRlRGF0ZT0iMjAy"
. "My0wNy0xMlQxNjoyMToxMiswMzowMCIgeG1wOk1ldGFkYXRhRGF0ZT0iMjAyMy0wNy0xMlQxNjoyMTox"
. "MiswMzowMCIgeG1wOk1vZGlmeURhdGU9IjIwMjMtMDctMTJUMTY6MjE6MTIrMDM6MDAiIHhtcE1NOklu"
. "c3RhbmNlSUQ9InhtcC5paWQ6NzgyODIyMDEtYzYwYi05MzQxLTkwNzktMTA0NjI2YjA5MDFmIiB4bXBN"
. "TTpEb2N1bWVudElEPSJhZG9iZTpkb2NpZDpwaG90b3Nob3A6ZGM5MjljYTItYjM5MS00ZTQ1LTkyZWIt"
. "ODYyMWIzZmM3NGViIiB4bXBNTTpPcmlnaW5hbERvY3VtZW50SUQ9InhtcC5kaWQ6ZWZlYTBmN2MtNjQ4"
. "MS1kYzRlLTg0MDgtYzlhNjBkNDAyYmJmIiBwaG90b3Nob3A6Q29sb3JNb2RlPSIzIiBkYzpmb3JtYXQ9"
. "ImltYWdlL3BuZyI+IDx4bXBNTTpIaXN0b3J5PiA8cmRmOlNlcT4gPHJkZjpsaSBzdEV2dDphY3Rpb249"
. "ImNyZWF0ZWQiIHN0RXZ0Omluc3RhbmNlSUQ9InhtcC5paWQ6ZWZlYTBmN2MtNjQ4MS1kYzRlLTg0MDgt"
. "YzlhNjBkNDAyYmJmIiBzdEV2dDp3aGVuPSIyMDIzLTA3LTEyVDE2OjIxOjEyKzAzOjAwIiBzdEV2dDpz"
. "b2Z0d2FyZUFnZW50PSJBZG9iZSBQaG90b3Nob3AgMjMuMCAoV2luZG93cykiLz4gPHJkZjpsaSBzdEV2"
. "dDphY3Rpb249InNhdmVkIiBzdEV2dDppbnN0YW5jZUlEPSJ4bXAuaWlkOjc4MjgyMjAxLWM2MGItOTM0"
. "MS05MDc5LTEwNDYyNmIwOTAxZiIgc3RFdnQ6d2hlbj0iMjAyMy0wNy0xMlQxNjoyMToxMiswMzowMCIg"
. "c3RFdnQ6c29mdHdhcmVBZ2VudD0iQWRvYmUgUGhvdG9zaG9wIDIzLjAgKFdpbmRvd3MpIiBzdEV2dDpj"
. "aGFuZ2VkPSIvIi8+IDwvcmRmOlNlcT4gPC94bXBNTTpIaXN0b3J5PiA8cGhvdG9zaG9wOlRleHRMYXll"
. "cnM+IDxyZGY6QmFnPiA8cmRmOmxpIHBob3Rvc2hvcDpMYXllck5hbWU9Iti5IiBwaG90b3Nob3A6TGF5"
. "ZXJUZXh0PSLYuSIvPiA8L3JkZjpCYWc+IDwvcGhvdG9zaG9wOlRleHRMYXllcnM+IDwvcmRmOkRlc2Ny"
. "aXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+WwrQuAAAAjtJ"
. "REFUWMO9VztuwkAQNSeAipomkAIJxAmQ0lByBAoOQIdEhbgAhQ9ASRVRcACOABIFRSTo0xgSORRImfg5"
. "HjOYtRfshZGm8O545+183mgtIrI8efH03dODp8TabDZpOBz62ul0SO5l0EPg6yXwbVU8dVTGcMzSbrdN"
. "AWB1At8+GtIBQDQMAyDfd7fb/VksFqTS3W4XAlgulxRnV6/X0wL4tuQt00qm6MhCk8JrUsfjMW02myub"
. "UqmUJQ3nj8lk4h+M0BeLxSvjWq1G8/nct+n1eqbq4PyBXEJOpxPZtn1hmMvlaDQa+fuO41ChUDAPAIqi"
. "griuS+VyOVyvVqt0PB7D0BvshMsF5JMFKcHN8/l8GHqkx3ArJvd/q9Wifr//SD5Qb3Aq1ut1yAcG6TgZ"
. "ANLAAKTMZrObWw5gYS+JDClVFO+lY/S6TnBQEhDpWEtaaL0oWoka+3Fsif0oEekucMUfqsOR82i+4YSJ"
. "KipyFoAjmCuiZ8BOMTcs/yacY93YBRCA5n8kJyC8Kcb3/6FpmC36n+QQFVXj9ljHRbVtmFY5MhwdRAV1"
. "IUc7OuxhAHBLroOkLnoYAOaAOEGEIvVh1jkOVxEYQMVwhznncCDDfyNzmgMgSSiS5+cA4Eq/c2SbAxDT"
. "Zs8DIPN/B7GZAyBnBdrtxtF9+R7MonIW8EACKLSmKiKNRsNNfJpl7QSdTKfTDwB4jXucZiEjHR1DBoPB"
. "mxU8kStBJL5MUzJSgK5gQPv9/ne1Wn1ut1sbvv8Akdi/PNdSy+EAAAAASUVORK5CYII="
Return Base64PNG
}
GoogleTranslateLogo(){
Base64PNG := ""
. "iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAACXBIWXMAAAsTAAALEwEAmpwYAAAGlmlU"
. "WHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhp"
. "SHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0"
. "az0iQWRvYmUgWE1QIENvcmUgNy4xLWMwMDAgNzkuYTg3MzFiOSwgMjAyMS8wOS8wOS0wMDozNzozOCAg"
. "ICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJk"
. "Zi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRw"
. "Oi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczpkYz0iaHR0cDovL3B1cmwub3JnL2RjL2VsZW1l"
. "bnRzLzEuMS8iIHhtbG5zOnBob3Rvc2hvcD0iaHR0cDovL25zLmFkb2JlLmNvbS9waG90b3Nob3AvMS4w"
. "LyIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0RXZ0"
. "PSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VFdmVudCMiIHhtcDpDcmVh"
. "dG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIDIzLjAgKFdpbmRvd3MpIiB4bXA6Q3JlYXRlRGF0ZT0iMjAy"
. "My0wNi0yMFQyMDoyOToxNCswMzowMCIgeG1wOk1vZGlmeURhdGU9IjIwMjMtMDYtMjBUMjE6MTA6MTYr"
. "MDM6MDAiIHhtcDpNZXRhZGF0YURhdGU9IjIwMjMtMDYtMjBUMjE6MTA6MTYrMDM6MDAiIGRjOmZvcm1h"
. "dD0iaW1hZ2UvcG5nIiBwaG90b3Nob3A6Q29sb3JNb2RlPSIzIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAu"
. "aWlkOjgwYjExNTNlLTRjN2EtMDg0YS04MzU3LTRiZWNhYzRkZTE3YyIgeG1wTU06RG9jdW1lbnRJRD0i"
. "YWRvYmU6ZG9jaWQ6cGhvdG9zaG9wOjNkZmFjNDUxLThhZTQtOTc0MS04MmE1LTZiNTVkYmRhYzlkZCIg"
. "eG1wTU06T3JpZ2luYWxEb2N1bWVudElEPSJ4bXAuZGlkOjUyYWI3YjQ2LTQwNzMtNTE0YS05NWM3LWQ3"
. "YTU0Y2Y1OWI3OCI+IDx4bXBNTTpIaXN0b3J5PiA8cmRmOlNlcT4gPHJkZjpsaSBzdEV2dDphY3Rpb249"
. "ImNyZWF0ZWQiIHN0RXZ0Omluc3RhbmNlSUQ9InhtcC5paWQ6NTJhYjdiNDYtNDA3My01MTRhLTk1Yzct"
. "ZDdhNTRjZjU5Yjc4IiBzdEV2dDp3aGVuPSIyMDIzLTA2LTIwVDIwOjI5OjE0KzAzOjAwIiBzdEV2dDpz"
. "b2Z0d2FyZUFnZW50PSJBZG9iZSBQaG90b3Nob3AgMjMuMCAoV2luZG93cykiLz4gPHJkZjpsaSBzdEV2"
. "dDphY3Rpb249InNhdmVkIiBzdEV2dDppbnN0YW5jZUlEPSJ4bXAuaWlkOmIxZDI4M2JiLTU0MmQtOWE0"
. "Yy1iOWQxLTdhODg2MjM2ODY3MyIgc3RFdnQ6d2hlbj0iMjAyMy0wNi0yMFQyMToxMDoxNiswMzowMCIg"
. "c3RFdnQ6c29mdHdhcmVBZ2VudD0iQWRvYmUgUGhvdG9zaG9wIDIzLjAgKFdpbmRvd3MpIiBzdEV2dDpj"
. "aGFuZ2VkPSIvIi8+IDxyZGY6bGkgc3RFdnQ6YWN0aW9uPSJzYXZlZCIgc3RFdnQ6aW5zdGFuY2VJRD0i"
. "eG1wLmlpZDo4MGIxMTUzZS00YzdhLTA4NGEtODM1Ny00YmVjYWM0ZGUxN2MiIHN0RXZ0OndoZW49IjIw"
. "MjMtMDYtMjBUMjE6MTA6MTYrMDM6MDAiIHN0RXZ0OnNvZnR3YXJlQWdlbnQ9IkFkb2JlIFBob3Rvc2hv"
. "cCAyMy4wIChXaW5kb3dzKSIgc3RFdnQ6Y2hhbmdlZD0iLyIvPiA8L3JkZjpTZXE+IDwveG1wTU06SGlz"
. "dG9yeT4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBl"
. "bmQ9InIiPz5wF6l/AAAIGElEQVRYw5WXe4xcZRnGf9/3nXPmtrM7u9vt7raltmUpWGjlUtqUhhYqSsNF"
. "BQ0kSFViJAaDIJoWLzH+04hAohgCjRgkSALRQIioBI2mFrSBQqWEBtpCAbvt3nd25z5zzve9/jGzl9lu"
. "KT3JyTlzbu/zPe/leUb94sl3GKmmg49KbT8CWaqEEEAaO4BMnTTOBe0rV9mvo8LDaA8EtIH3By03XerY"
. "/pU2SuWAV197jWx2lPb2Rfh+DyKWkZETZDJxli3rxVrwrJiWXBjsqDnzk0Bb3FSgWQCYc02UQmFuaLW1"
. "h7WLECCqQbe2rF0eJwpPfvdUm3c41/HjfBS/19cA+hO+pnFeImNz2TWEk28pL0b/QIVtn+9iy+pWxgoQ"
. "j3/CL2XD+FKFoJBpqudDP/uaEkGURyFYcIONpzleTtGzOMP1mxcwMmE5k037yhVm51nmBpT5wAhagZjk"
. "TaOHj1PpP87d12VIxDyKFUGpMwAgs3N7modnF6OyNSTZvmqw3LXqxo3trFmZZDgboTUopVBKYa0liiKs"
. "dTgnOCdEkcVaN1MDH0c186RkmiEnFGyM1Zd2/uCLV0Y/HJnANBaunHNYawmCgEQiQRD4eJ5CRJFIBCoI"
. "vIpzMiqi8OZbtWrs2TJMlFSdUoGOFiEVA9d4ydVqBB1dt1k9eJuvPTwfwFGtVqhUyvT19TWYk+njsmUr"
. "AJFazT5mrd3pzeVdK6hGMDCpWL1E2LYxYklGODig+de7mvGioiMpWIGWWMR72XYOnhjmkhVZ/HgXIoJz"
. "DhFBa90ILtMgQKEUCrjdGCUnpaAawUhBcccWy21XhA3SFZ9dE/HdqxXfeypg31HNgpZ6IRaqhqMTbVxS"
. "O0F2IkZ7phWlVBOQmRqqg6nfByDVlAKt4MSk4p7PRdxyeY0j/R4PvOSRKyvWLXesWeIYmlCkYlInTiDh"
. "OQ6OJLm6pKlQRAGZTCsKsPa0LVltSkG+qji3R7hlY8TQuOH2JwNy5Tqwlw/VH13YKiQCiPmCAtKxkI8m"
. "U/RP+pzV6SiVyvi+5qzeHgqlMrliCaNPPeCaGMgW4apVDrTwx30+g5PQ3QpfvsSyYaWlVFZYgYmi4ol/"
. "G2oR+J4wXIrx1lCGT/eM4uLt9A8Nc/9Tz7Pl0ov4wuVrGc/lp9tYoeotL/W6aAJgBWJ+/TxXAV9Drgwr"
. "u4W1KyyuqtCxOvXPvGbIV8AzkPAs+wfb+NIFE3SlEvQDu18/wLLuhfiJzSSqNcTVe19rTaUWUm20UlMR"
. "JgM4Nlbv5o0rHL972WNFxvH4K4b7XvRQwPN3VhEHo4UGWIG2wDFp0zzw3H50+AJVCVjW28Pr7xzhjp0P"
. "sbCjnTCyjE7kGM3l+NrWzWxdfyEj2UmaaqAjKew5rDlyzLB5dcT2axS/3eNxeFDRnhJ2XBPRmrb85h8B"
. "YwXF0o4p/bCMV2Isbz2frStakHg32mjK1SqxwOOve99kLF9m29ZNjOXzLOnqpFiuIMxJgdbgG9jxrM+u"
. "bwjf2hJy/RrLmx9ptqxyBAnH/vd9Htvj0dPaLF4uCkktuICzukNKtHD+2UswRmGM4ZFn/8bVGy7iuis3"
. "IrUy2VyRyUIRo1Wz/jqBnjbheFaxbVeMP+z18QxsXWMZyCke3+1z99M+KR/iXvNozsQi/pdP8ad9A3zn"
. "vl/z6sHDJDMd7HruJSJnuXbDRQwPDjA4NkG5WsUzutEFcyZhLYJFGSFXhp0veOza7RH3hXxFkStCd5uQ"
. "DCByNA0YTzsODTlu3LSZrZNH+P2Le4jHfJ7++yvcdfO1LO3p4oPjQ8TjMYIgmJmWc9VQqH88GYOlnULM"
. "CNZCOpD6b+/k4HUFUIhY3hoM2H7r9fiexz0PPcGNV6znhk3r6R8ew/MMURQRhiGqodmnnhANNJ6GwIDR"
. "c33izHyfutYRjzgwEOeND0N86jJcKFdAQSIWYJ2blukwDOsMMB8FMr8XnJomswPPNi5xY6noODuePEBS"
. "l/nV3d9k9xsHufeRp2hLJWlrSU6DmJJsrY32ToVhvhXLx/gGJ4pS2bF4+QZu3bqF9atW8uCdX2fv24f4"
. "/sNPICIkYgEiMpMCiwTGN41VqeZVSzPVJ7tl1WRaBDCuAsk+Qm8hhz44yrmfWsyj22/nlQPv8stn/kx7"
. "uqUJvPE7rxmLtaSvSKZT7S4Kpz81ZVTn8qGkcc9ZrA7QqQT4AcoPwAvwYz79Zc2SdJWLFxUYzkUs713I"
. "Z/qW07ugg47WFNGMSv7XO7Ln7T2VirvwvKsuu6cW6XZBPt4aCmgcNa8lihXH17n+E5eLl5hmyTOK8Q8d"
. "xzKK+MVxTKg4MZZldd9SrLVk80UC359RQ60cYsNcpRb+TFCIO401VVCWGAkTstbs7fzPweyojidRgDFw"
. "9HjI6sUeN6/rY6SQBiUYrRmfzDcAmjkOzBi0MeiGT1LqNLsIFWKsS77HZefasZ5zeveVVQovnWYgn+Ds"
. "lR3cv/M8Mp1JqpU61a6hhGqWX59iTJ/JnwiFUFRpeuU4bROHeHcoRToZPa6VYnjU0tqi+fmOXtpafcYn"
. "LEYLIu6kvp4Kboz2zwhAlThtXon13l6qYYl8PsvCtvJfylVHZIWf3tXNgs6AkTGL56lZTaVOGl5Ga8Ja"
. "aLwzWT9a0TtxkGKkKZpFaARr3bGFndF73/7qgr7zz4kxMBTiB7oRjHlTYIyiWKz+8+iHIw9+YgCiDXFb"
. "hMksx2wKqxWIIl8Q1q5O7lx/YWLT0GjktNZT3qt+aDjkWZKvbeRKk7nKrnwxevv/sZ0p2Ci1PVEAAAAA"
. "SUVORK5CYII="
Return Base64PNG
}
;โฏโโโโโโโโโโโ Attach Tooltip Function โโโโโโโโโโโโฏ
AttachTip(hCtrl, text:="")
{
hGui := text!="" ? DlLCall("GetParent", "Ptr", hCtrl) : hCtrl
static hTip
if !hTip
{
hTip := DllCall("CreateWindowEx", "UInt", 0x8, "Str", "tooltips_class32"
, "Ptr", 0, "UInt", 0x80000002 ;// WS_POPUP:=0x80000000|TTS_NOPREFIX:=0x02
, "Int", 0x80000000, "Int", 0x80000000, "Int", 0x80000000, "Int", 0x80000000
, "Ptr", hGui, "Ptr", 0, "Ptr", 0, "Ptr", 0, "Ptr")
; TTM_SETMAXTIPWIDTH = 0x0418
DllCall("SendMessage", "Ptr", hTip, "Int", 0x0418, "Ptr", 0, "Ptr", 0)
if (A_OsVersion == "WIN_XP")
AttachTip(hGui)
}
static sizeof_TOOLINFO := 24 + (6 * A_PtrSize)
VarSetCapacity(TOOLINFO, sizeof_TOOLINFO, 0)
, NumPut(sizeof_TOOLINFO, TOOLINFO, 0, "UInt")
, NumPut(0x11, TOOLINFO, 4, "UInt") ; TTF_IDISHWND:=0x0001|TTF_SUBCLASS:=0x0010
, NumPut(hGui, TOOLINFO, 8, "Ptr")
, NumPut(hCtrl, TOOLINFO, 8 + A_PtrSize, "Ptr")
, NumPut(&text, TOOLINFO, 24 + (3 * A_PtrSize), "Ptr")
static TTM_ADDTOOL := A_IsUnicode ? 0x0432 : 0x0404
return DllCall("SendMessage", "Ptr", hTip, "Int", TTM_ADDTOOL, "Ptr", 0, "Ptr", &TOOLINFO)
}
;โโโโโโโ Attach Tooltip Function End โโโโโโโโ
; โโโโโโโโโโโโ Reload/Exit Routine โโโโโโโโโโโโก
WM_LBUTTONDOWN() {
PostMessage, 0x00A1, 2, 0
}
RETURN
^Home:: Reload
^Esc:: ExitApp
Re: AHK Fast Translator
Thanks for the update @V0RT3X, I don't mind at all, you can change the script and use it as you wish, I liked The UI changes (except the background color, lol), when I tested the new script on my computer (WIndows 10) I noticed some issues in the text/icons:
The new characters appear from special Unicode characters that you have used for spacing instead of regular space, also AHK replaced the emojis/icons with random text, you don't need to edit that if it works on your machine, just wanted to tell you about the issue in case you want to share the script
I liked the new dragging method and knowledge section also.
- image.png (21.74 KiB) Viewed 2882 times
- image.png (30.92 KiB) Viewed 2882 times
Re: AHK Fast Translator
Interesting, thank you for the reply. It appears that the white space characters I use for alignments don't always come out as white space. I am also using Windows 10 64-bit so I'm surprised we are seeing things differently. Lesson learned, I'll have to rethink my use of those characters. I need to redo some stuff anyhow since my attempt to add in the 'Clipboard' radio button broke that section. I know it is something simple with the line "GuiControl,, % outputMethod...", but I don't fully understand that one yet so I'll be putting it back the way you have it. Glad you liked the Knowledge section, a small tribute to your awesome script. And I agree on the coloring. LOL. I'll be changing that eventually too. This was just easier on my aging eyes than white while figuring out how I was wanting to arrange everything.
Thank you once again for this great script!!!
Thank you once again for this great script!!!
Re: AHK Fast Translator
Nice implementation and great ad-hoc translator. I particularly like the easy way to switch languages. Well done!
A couple of years ago, I adapted @teadrinker's code found here to make a utility for my wife. She teaches kindergarten and often has students with non-english-speaking parents, so she must translate her weekly newsletters for them. Since she is usually translating entire paragraphs at once, I wrote it so that wherever she is editing, she just highlights the text she wants translated. The hotkey then copies the text to the clipboard, pumps it through the translator and then replaces the text with the translated version. Since the text was still highlighted, a simple ^v paste in the code is all that's required. She can usually translate an entire two page newsletter in a couple of minutes.
I only mention this because you may want to incorporate a feature to do an in-place translation like that without having to copy the text, activate the gui, paste the text into the edit box, translate, close the msgbox, go back to the application and finally paste the translated text where you want it. Instead - highlight, hotkey, done. The gui is nice to select languages and could be activated with a separate hotkey.
Just my thoughts to possibly enhance an already great script.
Russ
A couple of years ago, I adapted @teadrinker's code found here to make a utility for my wife. She teaches kindergarten and often has students with non-english-speaking parents, so she must translate her weekly newsletters for them. Since she is usually translating entire paragraphs at once, I wrote it so that wherever she is editing, she just highlights the text she wants translated. The hotkey then copies the text to the clipboard, pumps it through the translator and then replaces the text with the translated version. Since the text was still highlighted, a simple ^v paste in the code is all that's required. She can usually translate an entire two page newsletter in a couple of minutes.
I only mention this because you may want to incorporate a feature to do an in-place translation like that without having to copy the text, activate the gui, paste the text into the edit box, translate, close the msgbox, go back to the application and finally paste the translated text where you want it. Instead - highlight, hotkey, done. The gui is nice to select languages and could be activated with a separate hotkey.
Just my thoughts to possibly enhance an already great script.
Russ
Re: AHK Fast Translator
Finally was able to get this working correctly after changing the aesthetics to personal preferences and it still works awesomely. Once again, many thanks @balawi28!!
I am attempting the idea by @RussF to allow for inline translation of highlighted editable text also. I had an old script copy that does this on its own quite well, at least for my needs.
I am having trouble meshing the two scripts together however and am hoping someone can spot my 'URI Encode issue'. The 1st script is the quick inline version that swaps editable highlighted text. Wish I could find the original posting.
And my edited version of this AHK-Fast-Translator with the Inline version added in. I currently have it commented out and made easy to find with big blockish type arrows (๐กฐ)...
All I have done after recreating the Fast Translator is add a gLabel button, Insert the Inline code, and then had to add the Google Translate Function I found from @teadrinker found at...
viewtopic.php?f=6&t=63835#p273621. And now I have the issue of...
"Line Text: URIEncode(str, encoding := "UTF-8")"
"Error: Duplicate function definition."
Unfortunately I am only finding that mention once in the script.
And just for kicks, here is my working updated aesthetics version...
I am attempting the idea by @RussF to allow for inline translation of highlighted editable text also. I had an old script copy that does this on its own quite well, at least for my needs.
I am having trouble meshing the two scripts together however and am hoping someone can spot my 'URI Encode issue'. The 1st script is the quick inline version that swaps editable highlighted text. Wish I could find the original posting.
Spoiler
Code: Select all
^T::
ClipSave := ClipboardAll
Clipboard := ""
Send, {Ctrl down}c{Ctrl up}
ClipWait, 1
if ErrorLevel
Return
Clipboard := GoogleTranslate(Clipboard, "auto", "en")
; Clipboard := GoogleTranslate(Clipboard, "en", "es") ; โฌ
โฌ
โฌ
โฌ
Changes needed for any language... See script end.
Send, {Ctrl down}v{Ctrl up}
Sleep, 500
Clipboard := ClipSave
Return
^Esc:: ExiptApp
And my edited version of this AHK-Fast-Translator with the Inline version added in. I currently have it commented out and made easy to find with big blockish type arrows (๐กฐ)...
All I have done after recreating the Fast Translator is add a gLabel button, Insert the Inline code, and then had to add the Google Translate Function I found from @teadrinker found at...
viewtopic.php?f=6&t=63835#p273621. And now I have the issue of...
"Line Text: URIEncode(str, encoding := "UTF-8")"
"Error: Duplicate function definition."
Unfortunately I am only finding that mention once in the script.
Spoiler
Code: Select all
/*
โโโโโโโโโโโโโโโโ NOTES โโโโโโโโโโโโโโโโ
โขโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโข
โคโ โ โ โ โ โ โ Base Notes โ โ โ โ โ โ โ โ โ โ โ โ โ โ โ
ยป Refresh Script โโโโ Ctrl + HOME key rapidly clicked 2 times. (# TapCounts)
ยป Exit Script โโโโโโโโ Ctrl + Escape key rapidly clicked 3 times. (# TapCounts)
ยป Script Updater: Auto-reload script upon saved changes.
โ If you make any changes to the script file and save it, the script will automatically reload itself and continue running without manual intervention.
โขโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโข
โคโ โ โ โ โ โ โ Script Specific Notes โ โ โ โ โ โ โ โ
ยป SOURCE : https://github.com/balawi28/AHKFastTranslator
โขโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโข
โค Further notes at bottom of scriptโโโโโโโ Yes: No: โ
โโโโโโโโโโโโโโโ NOTES END โโโโโโโโโโโโโโโ
*/
;โฏโโโโโโโโโโโโโ Auto-Execute โโโโโโโโโโโโโโฏ
Gosub, AutoExecute
;โโโโโโโโโโโ Auto-Execute End โโโโโโโโโโโโ
;โฏโโโโโโโโโโโโโ Globals โโโโโโโโโโโโโโฏ
global Minimized := True
dict := GetLanguagesDict()
menuOptions := Join(dict, "|")
;โโโโโโโโโโโ Globals End โโโโโโโโโโโโ
;โฏโโโโโโโโโโโโโ INI Reads โโโโโโโโโโโโโโฏ
IniRead, defaultSourceLanguage, %A_ScriptFullPath%:Stream:$DATA, Settings, defaultSourceLanguage, Auto-Detect โข
IniRead, defaultTargetLanguage, %A_ScriptFullPath%:Stream:$DATA, Settings, defaultTargetLanguage, English
IniRead, hotKeyPrevious, %A_ScriptFullPath%:Stream:$DATA, Settings, hotKeyPrevious, ^+t
IniRead, isRanAtStartup, %A_ScriptFullPath%:Stream:$DATA, Settings, isRanAtStartup, 0
IniRead, outputMethod, %A_ScriptFullPath%:Stream:$DATA, Settings, outputMethod, tooltip
IniRead, EnableClipboard, %A_ScriptFullPath%:Stream:$DATA, Settings, EnableClipboard, 0
;โโโโโโโโโโโ INI Reads End โโโโโโโโโโโโ
;โฏโโโโโโโโโโโโโ Initializers โโโโโโโโโโโโโโฏ
; โโฎ Hotkey
if (StrLen(hotKeyPrevious) != 0)
Hotkey, %hotKeyPrevious%, HotkeyPressed
; โโฎ Source & Target Languages
sourceIndex := FindLanguageIndex(dict, defaultSourceLanguage)
targetIndex := FindLanguageIndex(dict, defaultTargetLanguage)
;โโโโโโโโโโโโ Initializers End โโโโโโโโโโโโ
;โฏโโโโโโโโโโโโโ Tray Menu โโโโโโโโโโโโโโฏ
; โโฎ Tray menu
Menu, Tray, NoStandard ; Remove all standard tray menu options
Menu, Tray, Add, GUI, HotkeyPressed
Menu, Tray, Add, Run at Startup, StartupToggle
Menu, Tray, Add, Exit, ExitApplication
Menu, Tray, Icon, Exit, Shell32.dll, 132
Menu, Tray, Default, GUI
if (isRanAtStartup)
Menu, Tray, Check, Run at Startup
;โโโโโโโโโโโโ Tray Menu End โโโโโโโโโโโโ
;โฏโโโโโโโโโโโโโ Gui Layout โโโโโโโโโโโโโโฏ
; โขโโโโ Transparacies Section โโโโโข
Gui, Color, 000101
Gui +LastFound
WinSet, TransColor, 000101
; โโโโ
Gui, Font, s20 q5 BOLD, Segoe UI
Gui, Add, Text, x8 y7 w360 c011167 BackgroundTrans CENTER, - TRANSLATOR -
Gui, Font, BOLD,
Gui, Add, Text, x9 y6 w360 c3981F3 BackgroundTrans CENTER, - TRANSLATOR -
Gui, Font, NORM,
Gui, Add, Text, x130 y5 w120 h23 c011167 BackgroundTrans HwndhText gDUMMY,
AttachTip(hText, "Google Translate")
Gui, Font, BOLD,
Gui, Add, Text, x10 y5 w360 c000101 BackgroundTrans CENTER, - TRANSLATOR -
; โโโโ
Gui, Font, s20 q5 BOLD, Segoe UI
Gui, Add, Text, x0 y218 w380 c011167 BackgroundTrans CENTER, __________________________________ ; Bottom
Gui, Add, Text, x0 y217 w380 c3981F3 BackgroundTrans CENTER, __________________________________ ; Deco
Gui, Add, Text, x0 y216 w380 c000101 BackgroundTrans CENTER, __________________________________ ; Bar
; โโโโโโโโโโโโ
Gui, Add, Picture, x178 y69 w23 h16 gSwapLanguages, % "HICON:" . Base64PNG_to_HICON(SwapIcon())
; โขโโโโ Transparacies Section End โโโโโข
Gui,
+AlwaysOnTop
+Border
-Caption
+LastFound
+OwnDialogs
+ToolWindow
Gui, Color, 3981F3
Gui, Margin, 10, 10
Gui, Font, s10 w200 c011167 q5, ARIAL
; โขโโโโ Top Gui Row Section โโโโโข
Gui, Add, Picture, x10 y10 w32 h32, % "HICON:" . Base64PNG_to_HICON(GoogleTranslateLogo())
Gui, Add, Text, x5 y5 w32 h30 w30 BackgroundTrans HwndhText gDUMMY,
AttachTip(hText, "Google Translate")
; โโโโ
Gui, Font, s10 c1A3FE8 q5 BOLD
Gui, Add, Text, x325 y3 BackgroundTrans, | | | |
; โโโโ
Gui, Font, s8 c659CF6 q5 BOLD
Gui, Add, Text, x330 y5 c011167 BackgroundTrans, ?
Gui, Add, Text, x325 y5 w15 BackgroundTrans HwndhText gABOUTS,
AttachTip(hText, "ABOUT")
; โโโโ
Gui, Font, s18 q5 NORM
Gui, Add, Text, x344 y5 cFCFCFC BackgroundTrans, *
Gui, Add, Text, x340 y-1 w10 BackgroundTrans HwndhText gReload,
AttachTip(hText, "RELOAD")
; โโโโ
Gui, Font, s8 c659CF6 q5 BOLD
Gui, Add, Text, x361 y5 cB20000 BackgroundTrans, X
Gui, Add, Text, x357 y5 w15 BackgroundTrans HwndhText gExit,
AttachTip(hText, "EXIT")
; โขโโโโ Top Gui Row Section End โโโโโข
; โขโโโโ Language Selection Row Section โโโโโข
Gui, Font, s8 w200 c011167 q5 UNDERLINE, ARIAL
Gui, Add, Text, x30 y45 w360 BackgroundTrans, Select Input Language
Gui, Font, s10 w200 c011167 q5 NORM, ARIAL
Gui, Add, DropDownList, x20 y65 w150 choose%sourceIndex% vSourceLang gOnSourceLangChange, %menuOptions%
; โโโโ
; Gui, Add, Picture, x178 y69 w23 h16 gSwapLanguages, % "HICON:" . Base64PNG_to_HICON(SwapIcon())
; โโโโ
Gui, Font, s8 w200 c011167 q5 UNDERLINE, ARIAL
Gui, Add, Text, x220 y45 w150 BackgroundTrans, Select Output Language
Gui, Font, s10 w200 c011167 q5 NORM, ARIAL
Gui, Add, DropDownList, x210 y65 w150 choose%targetInde`x% vTargetLang gOnTargetLangChange, %menuOptions%
; โขโโโโ Language Selection Row Section End โโโโโข
; โขโโโโ Selections Box Section โโโโโข
Gui, Font, s8 w200 c011167 q5 UNDERLINE, ARIAL
Gui, Add, Text, x5 y98 w186 h60 BackgroundTrans 0x00800000,
Gui, Add, Text, x35 y108 BackgroundTrans, Select Display Style
Gui, Font, s10 w200 c011167 q5 NORM, TAHOMA
Gui, Add, Radio, x15 y129 vChoiceMsgBox gRadioChoice, Message Box
Gui, Add, Radio, x120 y129 vChoiceToolTip gRadioChoice, Tooltip
GuiControl,, % outputMethod = "tooltip" ? "ChoiceToolTip" : "ChoiceMsgBox", 1
; โโโโ
Gui, Font, s8 w200 c011167 q5 UNDERLINE, ARIAL
Gui, Add, Text, x190 y98 w186 h60 BackgroundTrans 0x00800000,
Gui, Add, Text, x220 y108 w185 h60 BackgroundTrans, Set Interface Hotkey
Gui, Font, s8 w200 c011167 q5 NORM, ARIAL
Gui, Add, Hotkey, x202 y128 w120 h17 vhotKeyCurrent
GuiControl,, hotKeyCurrent, %hotKeyPrevious%
Gui, Font, s8 w200 q5, TAHOMA
Gui Add, Button, x325 y128 w40 h17, Save
; โขโโโโ Selections Box Section End โโโโโข
; โขโโโโ Translations Section โโโโโข
Gui, Font, s8 w800 c1A3FE8 q5 ITALIC, CALIBRI
Gui, Add, Text, x10 y163 w360 CENTER, Translated text will appear in Clipboard and Prefered Display Style.
; โโโโ
Gui, Font, s8 w200 c011167 q5 NORM, ARIAL
Gui, Add, Edit, x15 y175 w350 BackgroundTrans vTextToTranslate
; โขโโโโ Translations Section End โโโโโข
; โขโโโโ Output Choices Section โโโโโข
Gui, Add, CheckBox, x92 y222 vEnableClipboard gCheckBox,
Gui, Font, s8 w200 c011167 q5 UNDERLINE, ARIAL
Gui, Add, Text, x25 y205 BackgroundTrans, Copy Translation
Gui, Font, s8 w200 c011167 q5 NORM, ARIAL
Gui, Add, Text, x25 y221 BackgroundTrans, To Clipboard
GuiControl,,EnableClipboard,%EnableClipboard%
; โโโโโโโโโโโโ
Gui, Font, s8 w200 c011167 q5, ARIAL
Gui, Add, Button, x253 y215 h13 w20 BackgroundTrans gPASTE1, โข
Gui, Add, Button, x253 y230 h13 w20 BackgroundTrans gPASTE2, โข
Gui, Font, s8 w200 c011167 q5 UNDERLINE, ARIAL
Gui, Add, Text, x253 y198 BackgroundTrans, Paste Clipboard
Gui, Font, s8 w200 c011167 q5 NORM, ARIAL
Gui, Add, Text, x278 y215 BackgroundTrans, To Notepad
Gui, Add, Text, x278 y230 BackgroundTrans, To Notepad++
; โโโโโโโโโโโโ
Gui, Font, s8 w200 c011167 q5, ARIAL
Gui, Add, Button, x205 y222 h13 w20 BackgroundTrans gDUMMY, โข ; ๐กฐ ๐กฐ ๐กฐ Change to INLINE gLabel once working...
Gui, Font, s8 w200 c011167 q5 UNDERLINE, ARIAL
Gui, Add, Text, x145 y205 BackgroundTrans, Translate`nHighlighted
Gui, Font, s8 w200 c011167 q5 NORM, ARIAL
; โขโโโโ Output Choices Section End โโโโโข
;โโโโโโโโโโโโ Gui Layout End โโโโโโโโโโโโ
;โฏโโโโโโโโ Drag & Memory Control Functions โโโโโโโโโฏ
; โโฎ Define the callback function to handle the WM_MOVE message
OnMessage(0x0232, "OnDragRelease")
; โโโโโโโโโโโโ
; โโฎ To enable drag on the main window
enableGuiDrag()
Return
; โโโโโโโโโโโโ
; โโฎ Define the MouseUp function to get the new x and y coordinates.
OnDragRelease(wParam, lParam, msg, hwnd)
{
WinGetPos, WinX, WinY, , , ahk_id %hwnd%
IniWrite, %WinX%, %A_ScriptFullPath%:Stream:$DATA, Settings, defaultXPosition
IniWrite, %WinY%, %A_ScriptFullPath%:Stream:$DATA, Settings, defaultYPosition
}
; โโโโโโโโโโโโ
enableGuiDrag(GuiLabel=1) {
WinGetPos,,,A_w,A_h,A
Gui, %GuiLabel%:Add, Text, x0 y0 w%A_w% h%A_h% +BackgroundTrans gGUI_Drag
Return
; โโโโโโโโโโโโ
GUI_Drag:
SendMessage 0xA1,2 ; โโฎ Goyyah/SKAN trick
; โโฎ http://autohotkey.com/board/topic/80594-how-to-enable-drag-for-a-gui-without-a-titlebar
Return
}
;โโโโโโ Drag & Memory Control Functions End โโโโโโ
;โฏโโโโโโโโโโโ Attach Tooltip Function โโโโโโโโโโโโฏ
AttachTip(hCtrl, text:="")
{
hGui := text!="" ? DlLCall("GetParent", "Ptr", hCtrl) : hCtrl
static hTip
if !hTip
{
hTip := DllCall("CreateWindowEx", "UInt", 0x8, "Str", "tooltips_class32"
, "Ptr", 0, "UInt", 0x80000002 ;// WS_POPUP:=0x80000000|TTS_NOPREFIX:=0x02
, "Int", 0x80000000, "Int", 0x80000000, "Int", 0x80000000, "Int", 0x80000000
, "Ptr", hGui, "Ptr", 0, "Ptr", 0, "Ptr", 0, "Ptr")
; TTM_SETMAXTIPWIDTH = 0x0418
DllCall("SendMessage", "Ptr", hTip, "Int", 0x0418, "Ptr", 0, "Ptr", 0)
if (A_OsVersion == "WIN_XP")
AttachTip(hGui)
}
static sizeof_TOOLINFO := 24 + (6 * A_PtrSize)
VarSetCapacity(TOOLINFO, sizeof_TOOLINFO, 0)
, NumPut(sizeof_TOOLINFO, TOOLINFO, 0, "UInt")
, NumPut(0x11, TOOLINFO, 4, "UInt") ; TTF_IDISHWND:=0x0001|TTF_SUBCLASS:=0x0010
, NumPut(hGui, TOOLINFO, 8, "Ptr")
, NumPut(hCtrl, TOOLINFO, 8 + A_PtrSize, "Ptr")
, NumPut(&text, TOOLINFO, 24 + (3 * A_PtrSize), "Ptr")
static TTM_ADDTOOL := A_IsUnicode ? 0x0432 : 0x0404
return DllCall("SendMessage", "Ptr", hTip, "Int", TTM_ADDTOOL, "Ptr", 0, "Ptr", &TOOLINFO)
}
;โโโโโโโ Attach Tooltip Function End โโโโโโโโ
;โฏโโโโโโโโโโ PopUp Message Function โโโโโโโโโโโฏ
PMess(ttitle, ttext, textColor := "BLACK", bkg := "WHITE") { ; <<- Default Text and Background Colors.
Gui, Box:New, , %ttitle% ; EXAMPLE : PMess("Title", "Text", "Text-Color", "Text-Background")
Gui,
+AlwaysOnTop
-Border
-Caption
Gui, Margin, 10, 10
Gui, Font, s10 c%textColor%
Gui, Color, %bkg%
Gui, Add, Text, , %ttext%
; Gui, Show ; โฎโโ Section blocked to allow varying PMess display times.
; Sleep, 3000
; Gui, Destroy
Return
}
;โโโโโโโ PopUp Message Function End โโโโโโโโ
;โฏโโโโโโโโโโโโโโโ #IfWinActive โโโโโโโโโโโโโโโโฏ
#IfWinActive, TRANSLATOR ahk_class AutoHotkeyGUI
Esc::
Goto, GuiClose
Return
NumpadEnter::
Enter::
Gui, Submit
GuiControl, , TextToTranslate
Minimized := True
url := TranslateURL(dict[SourceLang], dict[TargetLang], TextToTranslate)
response := PostRequest(url)
cleanResponse := SubStr(response, 3, StrLen(response) - 4)
if (SourceLang = "Auto-Detect โข")
cleanResponse := SubStr(cleanResponse, 2, StrLen(cleanResponse) - 7)
if (EnableClipboard)
Clipboard := cleanResponse
if (outputMethod = "tooltip"){
ToolTip % cleanResponse
Sleep, 2000 ; Display the tooltip for 2 seconds
ToolTip ; Remove the tooltip
} else
MsgBox, 0x40000,, % cleanResponse
Return
#IfWinActive
;โโโโโโโโโโโโโโ #IfWinActive End โโโโโโโโโโโโโโโ
;โฏโโโโโโโโโโโโโโโ gLabels โโโโโโโโโโโโโโโโฏ
CheckBox:
Gui, Submit, NoHide
IniWrite, %EnableClipboard%, %A_ScriptFullPath%:Stream:$DATA, Settings,EnableClipboard
Return
; โโโโโโโโโโโโ
ButtonSave: ; Save hotkey routine.
Gui, Submit, NoHide
if (StrLen(hotKeyPrevious) != 0 and hotKeyPrevious != hotKeyCurrent){
Hotkey, %hotKeyPrevious%, Off
}
if (StrLen(hotKeyCurrent) != 0){
Hotkey, %hotKeyCurrent%, On, UseErrorLevel
Hotkey, %hotKeyCurrent%, HotkeyPressed
}
IniWrite, %hotKeyCurrent%, %A_ScriptFullPath%:Stream:$DATA, Settings,hotKeyPrevious
hotKeyPrevious := hotKeyCurrent
PMess("Pop Message #1", "Hotkey Saved Successfully", "3981F3", "011167")
Gui, Show
OnMessage(0x0201, "WM_LBUTTONDOWN") ; [PopUp Message Drag PT. 1]
Sleep, 1500
Gui, Destroy
Return
; โโโโโโโโโโโโ
ABOUTS:
PMess("About", "โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ`n Original Author : balawi28`nhttps://github.com/balawi28/AHKFastTranslator`n โ โ โ โ โ โ โ โ โ`nHow to Use : `n 1. Select Input/Output Languages`n 2. Select Display Style`n 3. Set Interface Hotkey`n 4. Paste in Text to Translate`n 5. Translation will appear Display and Cliboard`nโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ", "3981F3", "011167")
Gui, Show
OnMessage(0x0201, "WM_LBUTTONDOWN") ; [PopUp Message Drag PT. 1]
Sleep, 7000
Gui, Destroy
Return
; โโโโโโโโโโโโ
PASTE1:
IfWinExist, ahk_class Notepad
{
WinActivate ahk_class Notepad
Send ^v`n
}
else
{
IfWinNotExist, ahk_class Notepad
Run, C:\windows\system32\notepad.exe
WinActivate ahk_class Notepad
WinWaitActive ahk_class Notepad
Send ^v`n
}
Return
PASTE2:
IfWinExist ahk_class Notepad++
{
WinActivate
WinWaitActive
Send ^n ; open new tab
Send `n^v`n
}
Else {
Run %A_ProgramFiles%\Notepad++\notepad++.exe
WinActivate ahk_class Notepad++
WinWaitActive ahk_class Notepad++
; empty tab already opened, we don't need to do this
Send `n^v`n
}
Return
; โโโโโโโโโโโโ
/* ; ๐กฐ๐กฐ๐กฐ Section errors for no GoogleTranslate() function...
INLINE:
ClipSave := ClipboardAll
Clipboard := ""
Send, {Ctrl down}c{Ctrl up}
ClipWait, 1
if ErrorLevel
Return
Clipboard := GoogleTranslate(Clipboard, "auto", "en")
Send, {Ctrl down}v{Ctrl up}
Sleep, 500
Clipboard := ClipSave
Return
*/
; โโโโโโโโโโโโ
DUMMY:
Sleep, 10
Return
; โโโโโโโโโโโโ
GuiClose:
GuiControl, , TextToTranslate
Minimized := True
Gui, Cancel
Return
; โโโโโโโโโโโโ
RadioChoice:
gui, submit, nohide
outputMethod := ChoiceToolTip ? "tooltip" : "msgbox"
IniWrite, %outputMethod%, %A_ScriptFullPath%:Stream:$DATA, Settings,outputMethod
Return
; โโโโโโโโโโโโ
HotkeyPressed:
if(Minimized){
IniRead, defaultXPosition, %A_ScriptFullPath%:Stream:$DATA, Settings, defaultXPosition,Center
IniRead, defaultYPosition, %A_ScriptFullPath%:Stream:$DATA, Settings, defaultYPosition,Center
Gui, Show, x%defaultXPosition% y%defaultYPosition% w380 h255, TRANSLATOR
GuiControl, Focus, TextToTranslate
}else{
Goto, GuiClose
}
Minimized := ! Minimized
Return
; โโโโโโโโโโโโ
StartupToggle:
isRanAtStartup := !isRanAtStartup
Menu, Tray, ToggleCheck, Run at Startup
if(isRanAtStartup)
FileCreateShortcut,%A_ScriptFullPath%,%A_AppData%\Microsoft\Windows\Start Menu\Programs\Startup\TrayAudioAnalyzer.lnk,%A_ScriptDir%
else
FileDelete, %A_AppData%\Microsoft\Windows\Start Menu\Programs\Startup\TrayAudioAnalyzer.lnk
IniWrite, %isRanAtStartup%, %A_ScriptFullPath%:Stream:$DATA, Settings, isRanAtStartup
Return
;โโโโโโโโโโโโโโ gLabels End โโโโโโโโโโโโโโโ
;โฏโโโโโโโโโโโโโโโ Misc Functions โโโโโโโโโโโโโโโโฏ
ExitApplication(){
ExitApp
Exit
}
; โโโโโโโโโโโโ
PostRequest(url){
response := ComObjCreate("WinHttp.WinHttpRequest.5.1")
response.Open("POST", url, false)
response.Send()
Return response.ResponseText
}
; โโโโโโโโโโโโ
TranslateURL(sourceLang, targetLang, textToTranslate)
{
baseUrl := "http://translate.google.com/translate_a/t?"
params := []
params["sl"] := sourceLang
params["tl"] := targetLang
params["uptl"] := targetLang
params["q"] := UriEncode(textToTranslate)
params["client"] := "p"
params["hl"] := "en"
params["sc"] := "2"
params["ie"] := "UTF-8"
params["oe"] := "UTF-8"
params["oc"] := "1"
params["prev"] := "conf"
params["psl"] := "auto"
params["ptl"] := "en"
params["otf"] := "1"
params["it"] := "sel.8936"
params["ssel"] := "0"
params["tsel"] := "3"
Return baseUrl . EncodeParams(params)
}
; โโโโโโโโโโโโ
Join(dict, delim) {
result := ""
for key in dict
{
if (result != "")
result .= delim
result .= key
}
Return result
}
; โโโโโโโโโโโโ
FindLanguageIndex(dict, language) {
index := 1
for key, value in dict
{
if (key == language)
Return index
index += 1
}
Return -1 ; Language not found, Return -1
}
; โโโโโโโโโโโโ
OnSourceLangChange() {
GuiControlGet, selectedSourceLang, , SourceLang
IniWrite, %selectedSourceLang%, %A_ScriptFullPath%:Stream:$DATA, Settings, defaultSourceLanguage
}
; โโโโโโโโโโโโ
OnTargetLangChange() {
GuiControlGet, selectedTargetLang, , TargetLang
IniWrite, %selectedTargetLang%, %A_ScriptFullPath%:Stream:$DATA, Settings, defaultTargetLanguage
}
; โโโโโโโโโโโโ
SwapLanguages(){
GuiControlGet, selectedTargetLang, , TargetLang
GuiControlGet, selectedSourceLang, , SourceLang
temp := selectedSourceLang
GuiControl, Choose, SourceLang, %selectedTargetLang%
GuiControl, Choose, TargetLang, %temp%
IniWrite, %selectedTargetLang%, %A_ScriptFullPath%:Stream:$DATA, Settings, defaultSourceLanguage
IniWrite, %temp%, %A_ScriptFullPath%:Stream:$DATA, Settings, defaultTargetLanguage
}
; โโโโโโโโโโโโ
EncodeParams(params)
{
encodedParams := ""
for key, value in params
{
encodedKey := key
encodedValue := value
encodedParams .= (encodedParams = "") ? encodedKey . "=" . encodedValue : "&" . encodedKey . "=" . encodedValue
}
Return encodedParams
}
; โโโโโโโโโโโโ
; UriEncode function is written by the-Automator
; https://www.the-automator.com/parse-url-parameters/
UriEncode(Uri, RE="[0-9A-Za-z]")
{
VarSetCapacity(Var, StrPut(Uri, "UTF-8"), 0)
StrPut(Uri, &Var, "UTF-8")
While Code := NumGet(Var, A_Index-1, "UChar")
{
Res .= (Chr := Chr(Code)) ~= RE ? Chr : Format("%{:02X}", Code)
}
Return Res
}
;โโโโโโโโโโโโโโ Misc Functions End โโโโโโโโโโโโโโโ
;โฏโโโโโโโโ Get Language Dictionaries Function โโโโโโโโโฏ
GetLanguagesDict(){
global dict
if !dict {
dict := {}
dict["Auto-Detect โข"] := "auto"
dict["Afrikaans"] := "af"
dict["Albanian"] := "sq"
dict["Amharic"] := "am"
dict["Arabic"] := "ar"
dict["Armenian"] := "hy"
dict["Assamese"] := "as"
dict["Aymara"] := "ay"
dict["Azerbaijani"] := "az"
dict["Bambara"] := "bm"
dict["Basque"] := "eu"
dict["Belarusian"] := "be"
dict["Bengali"] := "bn"
dict["Bhojpuri"] := "bho"
dict["Bosnian"] := "bs"
dict["Bulgarian"] := "bg"
dict["Catalan"] := "ca"
dict["Cebuano"] := "ceb"
dict["Chinese (Simplified)"] := "zh-CN"
dict["Chinese (Traditional)"] := "zh-TW"
dict["Corsican"] := "co"
dict["Croatian"] := "hr"
dict["Czech"] := "cs"
dict["Danish"] := "da"
dict["Dhivehi"] := "dv"
dict["Dogri"] := "doi"
dict["Dutch"] := "nl"
dict["English"] := "en"
dict["Esperanto"] := "eo"
dict["Estonian"] := "et"
dict["Ewe"] := "ee"
dict["Filipino (Tagalog)"] := "fil"
dict["Finnish"] := "fi"
dict["French"] := "fr"
dict["Frisian"] := "fy"
dict["Galician"] := "gl"
dict["Georgian"] := "ka"
dict["German"] := "de"
dict["Greek"] := "el"
dict["Guarani"] := "gn"
dict["Gujarati"] := "gu"
dict["Haitian Creole"] := "ht"
dict["Hausa"] := "ha"
dict["Hawaiian"] := "haw"
dict["Hebrew"] := "he"
dict["Hindi"] := "hi"
dict["Hmong"] := "hmn"
dict["Hungarian"] := "hu"
dict["Icelandic"] := "is"
dict["Igbo"] := "ig"
dict["Ilocano"] := "ilo"
dict["Indonesian"] := "id"
dict["Irish"] := "ga"
dict["Italian"] := "it"
dict["Japanese"] := "ja"
dict["Javanese"] := "jv"
dict["Kannada"] := "kn"
dict["Kazakh"] := "kk"
dict["Khmer"] := "km"
dict["Kinyarwanda"] := "rw"
dict["Konkani"] := "gom"
dict["Korean"] := "ko"
dict["Krio"] := "kri"
dict["Kurdish"] := "ku"
dict["Kurdish (Sorani)"] := "ckb"
dict["Kyrgyz"] := "ky"
dict["Lao"] := "lo"
dict["Latin"] := "la"
dict["Latvian"] := "lv"
dict["Lingala"] := "ln"
dict["Lithuanian"] := "lt"
dict["Luganda"] := "lg"
dict["Luxembourgish"] := "lb"
dict["Macedonian"] := "mk"
dict["Maithili"] := "mai"
dict["Malagasy"] := "mg"
dict["Malay"] := "ms"
dict["Malayalam"] := "ml"
dict["Maltese"] := "mt"
dict["Maori"] := "mi"
dict["Marathi"] := "mr"
dict["Meiteilon (Manipuri)"] := "mni-Mtei"
dict["Mizo"] := "lus"
dict["Mongolian"] := "mn"
dict["Myanmar (Burmese)"] := "my"
dict["Nepali"] := "ne"
dict["Norwegian"] := "no"
dict["Nyanja (Chichewa)"] := "ny"
dict["Odia (Oriya)"] := "or"
dict["Oromo"] := "om"
dict["Pashto"] := "ps"
dict["Persian"] := "fa"
dict["Polish"] := "pl"
dict["Portuguese"] := "pt"
dict["Punjabi"] := "pa"
dict["Quechua"] := "qu"
dict["Romanian"] := "ru"
dict["Samoan"] := "sm"
dict["Sanskrit"] := "sa"
dict["Scots Gaelic"] := "gd"
dict["Sepedi"] := "nso"
dict["Serbian"] := "sr"
dict["Sesotho"] := "st"
dict["Shona"] := "sn"
dict["Sindhi"] := "sd"
dict["Sinhala (Sinhalese)"] := "si"
dict["Slovak"] := "sk"
dict["Slovenian"] := "sl"
dict["Somali"] := "so"
dict["Spanish"] := "es"
dict["Sundanese"] := "su"
dict["Swahili"] := "sw"
dict["Swedish"] := "sv"
dict["Tagalog (Filipino)"] := "tl"
dict["Tajik"] := "tg"
dict["Tamil"] := "ta"
dict["Tatar"] := "tt"
dict["Telugu"] := "te"
dict["Thai"] := "th"
dict["Tigrinya"] := "ti"
dict["Tsonga"] := "ts"
dict["Turkish"] := "tr"
dict["Turkmen"] := "tk"
dict["Twi (Akan)"] := "ak"
dict["Ukrainian"] := "uk"
dict["Urdu"] := "ur"
dict["Uyghur"] := "ug"
dict["Uzbek"] := "uz"
dict["Vietnamese"] := "vi"
dict["Welsh"] := "cy"
dict["Xhosa"] := "xh"
dict["Yiddish"] := "yi"
dict["Yoruba"] := "yo"
dict["Zulu"] := "zu"
}
Return dict
}
;โโโโโโ Get Language Dictionaries Function End โโโโโโ
;โฏโโโโโโโโโโโโ Logo Icons Functions โโโโโโโโโโโโโฏ
SwapIcon(){
Base64PNG := ""
. "iVBORw0KGgoAAAANSUhEUgAAACAAAAAVCAYAAAAnzezqAAAACXBIWXMAAA3XAAAN1wFCKJt4AAAFyWlU"
. "WHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhp"
. "SHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0"
. "az0iQWRvYmUgWE1QIENvcmUgNy4xLWMwMDAgNzkuYTg3MzFiOSwgMjAyMS8wOS8wOS0wMDozNzozOCAg"
. "ICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJk"
. "Zi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRw"
. "Oi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczpkYz0iaHR0cDovL3B1cmwub3JnL2RjL2VsZW1l"
. "bnRzLzEuMS8iIHhtbG5zOnBob3Rvc2hvcD0iaHR0cDovL25zLmFkb2JlLmNvbS9waG90b3Nob3AvMS4w"
. "LyIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0RXZ0"
. "PSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VFdmVudCMiIHhtcDpDcmVh"
. "dG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIDIzLjAgKFdpbmRvd3MpIiB4bXA6Q3JlYXRlRGF0ZT0iMjAy"
. "My0wNi0zMFQwMjowMToyNSswMzowMCIgeG1wOk1vZGlmeURhdGU9IjIwMjMtMDYtMzBUMDI6MjM6MzUr"
. "MDM6MDAiIHhtcDpNZXRhZGF0YURhdGU9IjIwMjMtMDYtMzBUMDI6MjM6MzUrMDM6MDAiIGRjOmZvcm1h"
. "dD0iaW1hZ2UvcG5nIiBwaG90b3Nob3A6Q29sb3JNb2RlPSIzIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAu"
. "aWlkOjU5NjQ4M2ExLTBiYmQtM2M0Yi05YzMyLWEwZjE5NTRhYzdjNyIgeG1wTU06RG9jdW1lbnRJRD0i"
. "YWRvYmU6ZG9jaWQ6cGhvdG9zaG9wOmU1OWJmZTNjLWQ3ZjYtNzM0YS1hNjY3LWQzOWI1NmMxMmZmYSIg"
. "eG1wTU06T3JpZ2luYWxEb2N1bWVudElEPSJ4bXAuZGlkOmQwYmVhNDVkLTU0MTgtMTU0ZS1hNGQ1LTY4"
. "N2UwZDYxODhiMiI+IDx4bXBNTTpIaXN0b3J5PiA8cmRmOlNlcT4gPHJkZjpsaSBzdEV2dDphY3Rpb249"
. "ImNyZWF0ZWQiIHN0RXZ0Omluc3RhbmNlSUQ9InhtcC5paWQ6ZDBiZWE0NWQtNTQxOC0xNTRlLWE0ZDUt"
. "Njg3ZTBkNjE4OGIyIiBzdEV2dDp3aGVuPSIyMDIzLTA2LTMwVDAyOjAxOjI1KzAzOjAwIiBzdEV2dDpz"
. "b2Z0d2FyZUFnZW50PSJBZG9iZSBQaG90b3Nob3AgMjMuMCAoV2luZG93cykiLz4gPHJkZjpsaSBzdEV2"
. "dDphY3Rpb249InNhdmVkIiBzdEV2dDppbnN0YW5jZUlEPSJ4bXAuaWlkOjU5NjQ4M2ExLTBiYmQtM2M0"
. "Yi05YzMyLWEwZjE5NTRhYzdjNyIgc3RFdnQ6d2hlbj0iMjAyMy0wNi0zMFQwMjoyMzozNSswMzowMCIg"
. "c3RFdnQ6c29mdHdhcmVBZ2VudD0iQWRvYmUgUGhvdG9zaG9wIDIzLjAgKFdpbmRvd3MpIiBzdEV2dDpj"
. "aGFuZ2VkPSIvIi8+IDwvcmRmOlNlcT4gPC94bXBNTTpIaXN0b3J5PiA8L3JkZjpEZXNjcmlwdGlvbj4g"
. "PC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PmOrIjcAAAEfSURBVEgNY2DA"
. "DhKA+D8QL2YYAJAEtRyEXwAx20BZDsKZ9LQ8G83yOHpano9muQM9Lc9Ds/wxEPcA8Vog3gLEm0jAR4B4"
. "AhAzkuKAF2gOoAb2IcUB09E0PwXinUB8F4jvAPFtEvAbID4MxEJI5nMBsRQhR8xEcsBvIDamYhTvg5pb"
. "TYojvgKxFhUsZwXi50jm1hLSMAEtOuyo4Ah3NDPbCGnoRlL8DIhZqOAIKzRHdBPS0AlVeIqKacEMiP+S"
. "4ghNIBZA4vMB8WYgvg/E50jA56H0KiB+QmpIIANfGpQXL0lxAKhWXAjEl4D4AAn4EDQrzoaWssgOqKZn"
. "kW+JZnktPS0PRrO8lJ6Wx6BZnk9Py9nQKju6Wg4Da6CW52CTBADLm7B1N75ElAAAAABJRU5ErkJggg=="
Return Base64PNG
}
; โโโโโโโโโโโโ
TrayIcon(){
Base64PNG := ""
. "iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAACXBIWXMAAAsTAAALEwEAmpwYAAAGSWlU"
. "WHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhp"
. "SHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0"
. "az0iQWRvYmUgWE1QIENvcmUgNy4xLWMwMDAgNzkuYTg3MzFiOSwgMjAyMS8wOS8wOS0wMDozNzozOCAg"
. "ICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJk"
. "Zi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRw"
. "Oi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94"
. "YXAvMS4wL21tLyIgeG1sbnM6c3RFdnQ9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9S"
. "ZXNvdXJjZUV2ZW50IyIgeG1sbnM6cGhvdG9zaG9wPSJodHRwOi8vbnMuYWRvYmUuY29tL3Bob3Rvc2hv"
. "cC8xLjAvIiB4bWxuczpkYz0iaHR0cDovL3B1cmwub3JnL2RjL2VsZW1lbnRzLzEuMS8iIHhtcDpDcmVh"
. "dG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIDIzLjAgKFdpbmRvd3MpIiB4bXA6Q3JlYXRlRGF0ZT0iMjAy"
. "My0wNy0xMlQxNjoyMToxMiswMzowMCIgeG1wOk1ldGFkYXRhRGF0ZT0iMjAyMy0wNy0xMlQxNjoyMTox"
. "MiswMzowMCIgeG1wOk1vZGlmeURhdGU9IjIwMjMtMDctMTJUMTY6MjE6MTIrMDM6MDAiIHhtcE1NOklu"
. "c3RhbmNlSUQ9InhtcC5paWQ6NzgyODIyMDEtYzYwYi05MzQxLTkwNzktMTA0NjI2YjA5MDFmIiB4bXBN"
. "TTpEb2N1bWVudElEPSJhZG9iZTpkb2NpZDpwaG90b3Nob3A6ZGM5MjljYTItYjM5MS00ZTQ1LTkyZWIt"
. "ODYyMWIzZmM3NGViIiB4bXBNTTpPcmlnaW5hbERvY3VtZW50SUQ9InhtcC5kaWQ6ZWZlYTBmN2MtNjQ4"
. "MS1kYzRlLTg0MDgtYzlhNjBkNDAyYmJmIiBwaG90b3Nob3A6Q29sb3JNb2RlPSIzIiBkYzpmb3JtYXQ9"
. "ImltYWdlL3BuZyI+IDx4bXBNTTpIaXN0b3J5PiA8cmRmOlNlcT4gPHJkZjpsaSBzdEV2dDphY3Rpb249"
. "ImNyZWF0ZWQiIHN0RXZ0Omluc3RhbmNlSUQ9InhtcC5paWQ6ZWZlYTBmN2MtNjQ4MS1kYzRlLTg0MDgt"
. "YzlhNjBkNDAyYmJmIiBzdEV2dDp3aGVuPSIyMDIzLTA3LTEyVDE2OjIxOjEyKzAzOjAwIiBzdEV2dDpz"
. "b2Z0d2FyZUFnZW50PSJBZG9iZSBQaG90b3Nob3AgMjMuMCAoV2luZG93cykiLz4gPHJkZjpsaSBzdEV2"
. "dDphY3Rpb249InNhdmVkIiBzdEV2dDppbnN0YW5jZUlEPSJ4bXAuaWlkOjc4MjgyMjAxLWM2MGItOTM0"
. "MS05MDc5LTEwNDYyNmIwOTAxZiIgc3RFdnQ6d2hlbj0iMjAyMy0wNy0xMlQxNjoyMToxMiswMzowMCIg"
. "c3RFdnQ6c29mdHdhcmVBZ2VudD0iQWRvYmUgUGhvdG9zaG9wIDIzLjAgKFdpbmRvd3MpIiBzdEV2dDpj"
. "aGFuZ2VkPSIvIi8+IDwvcmRmOlNlcT4gPC94bXBNTTpIaXN0b3J5PiA8cGhvdG9zaG9wOlRleHRMYXll"
. "cnM+IDxyZGY6QmFnPiA8cmRmOmxpIHBob3Rvc2hvcDpMYXllck5hbWU9Iti5IiBwaG90b3Nob3A6TGF5"
. "ZXJUZXh0PSLYuSIvPiA8L3JkZjpCYWc+IDwvcGhvdG9zaG9wOlRleHRMYXllcnM+IDwvcmRmOkRlc2Ny"
. "aXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+WwrQuAAAAjtJ"
. "REFUWMO9VztuwkAQNSeAipomkAIJxAmQ0lByBAoOQIdEhbgAhQ9ASRVRcACOABIFRSTo0xgSORRImfg5"
. "HjOYtRfshZGm8O545+183mgtIrI8efH03dODp8TabDZpOBz62ul0SO5l0EPg6yXwbVU8dVTGcMzSbrdN"
. "AWB1At8+GtIBQDQMAyDfd7fb/VksFqTS3W4XAlgulxRnV6/X0wL4tuQt00qm6MhCk8JrUsfjMW02myub"
. "UqmUJQ3nj8lk4h+M0BeLxSvjWq1G8/nct+n1eqbq4PyBXEJOpxPZtn1hmMvlaDQa+fuO41ChUDAPAIqi"
. "griuS+VyOVyvVqt0PB7D0BvshMsF5JMFKcHN8/l8GHqkx3ArJvd/q9Wifr//SD5Qb3Aq1ut1yAcG6TgZ"
. "ANLAAKTMZrObWw5gYS+JDClVFO+lY/S6TnBQEhDpWEtaaL0oWoka+3Fsif0oEekucMUfqsOR82i+4YSJ"
. "KipyFoAjmCuiZ8BOMTcs/yacY93YBRCA5n8kJyC8Kcb3/6FpmC36n+QQFVXj9ljHRbVtmFY5MhwdRAV1"
. "IUc7OuxhAHBLroOkLnoYAOaAOEGEIvVh1jkOVxEYQMVwhznncCDDfyNzmgMgSSiS5+cA4Eq/c2SbAxDT"
. "Zs8DIPN/B7GZAyBnBdrtxtF9+R7MonIW8EACKLSmKiKNRsNNfJpl7QSdTKfTDwB4jXucZiEjHR1DBoPB"
. "mxU8kStBJL5MUzJSgK5gQPv9/ne1Wn1ut1sbvv8Akdi/PNdSy+EAAAAASUVORK5CYII="
Return Base64PNG
}
; โโโโโโโโโโโโ
GoogleTranslateLogo(){
Base64PNG := ""
. "iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAACXBIWXMAAAsTAAALEwEAmpwYAAAGlmlU"
. "WHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhp"
. "SHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0"
. "az0iQWRvYmUgWE1QIENvcmUgNy4xLWMwMDAgNzkuYTg3MzFiOSwgMjAyMS8wOS8wOS0wMDozNzozOCAg"
. "ICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJk"
. "Zi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRw"
. "Oi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczpkYz0iaHR0cDovL3B1cmwub3JnL2RjL2VsZW1l"
. "bnRzLzEuMS8iIHhtbG5zOnBob3Rvc2hvcD0iaHR0cDovL25zLmFkb2JlLmNvbS9waG90b3Nob3AvMS4w"
. "LyIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0RXZ0"
. "PSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VFdmVudCMiIHhtcDpDcmVh"
. "dG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIDIzLjAgKFdpbmRvd3MpIiB4bXA6Q3JlYXRlRGF0ZT0iMjAy"
. "My0wNi0yMFQyMDoyOToxNCswMzowMCIgeG1wOk1vZGlmeURhdGU9IjIwMjMtMDYtMjBUMjE6MTA6MTYr"
. "MDM6MDAiIHhtcDpNZXRhZGF0YURhdGU9IjIwMjMtMDYtMjBUMjE6MTA6MTYrMDM6MDAiIGRjOmZvcm1h"
. "dD0iaW1hZ2UvcG5nIiBwaG90b3Nob3A6Q29sb3JNb2RlPSIzIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAu"
. "aWlkOjgwYjExNTNlLTRjN2EtMDg0YS04MzU3LTRiZWNhYzRkZTE3YyIgeG1wTU06RG9jdW1lbnRJRD0i"
. "YWRvYmU6ZG9jaWQ6cGhvdG9zaG9wOjNkZmFjNDUxLThhZTQtOTc0MS04MmE1LTZiNTVkYmRhYzlkZCIg"
. "eG1wTU06T3JpZ2luYWxEb2N1bWVudElEPSJ4bXAuZGlkOjUyYWI3YjQ2LTQwNzMtNTE0YS05NWM3LWQ3"
. "YTU0Y2Y1OWI3OCI+IDx4bXBNTTpIaXN0b3J5PiA8cmRmOlNlcT4gPHJkZjpsaSBzdEV2dDphY3Rpb249"
. "ImNyZWF0ZWQiIHN0RXZ0Omluc3RhbmNlSUQ9InhtcC5paWQ6NTJhYjdiNDYtNDA3My01MTRhLTk1Yzct"
. "ZDdhNTRjZjU5Yjc4IiBzdEV2dDp3aGVuPSIyMDIzLTA2LTIwVDIwOjI5OjE0KzAzOjAwIiBzdEV2dDpz"
. "b2Z0d2FyZUFnZW50PSJBZG9iZSBQaG90b3Nob3AgMjMuMCAoV2luZG93cykiLz4gPHJkZjpsaSBzdEV2"
. "dDphY3Rpb249InNhdmVkIiBzdEV2dDppbnN0YW5jZUlEPSJ4bXAuaWlkOmIxZDI4M2JiLTU0MmQtOWE0"
. "Yy1iOWQxLTdhODg2MjM2ODY3MyIgc3RFdnQ6d2hlbj0iMjAyMy0wNi0yMFQyMToxMDoxNiswMzowMCIg"
. "c3RFdnQ6c29mdHdhcmVBZ2VudD0iQWRvYmUgUGhvdG9zaG9wIDIzLjAgKFdpbmRvd3MpIiBzdEV2dDpj"
. "aGFuZ2VkPSIvIi8+IDxyZGY6bGkgc3RFdnQ6YWN0aW9uPSJzYXZlZCIgc3RFdnQ6aW5zdGFuY2VJRD0i"
. "eG1wLmlpZDo4MGIxMTUzZS00YzdhLTA4NGEtODM1Ny00YmVjYWM0ZGUxN2MiIHN0RXZ0OndoZW49IjIw"
. "MjMtMDYtMjBUMjE6MTA6MTYrMDM6MDAiIHN0RXZ0OnNvZnR3YXJlQWdlbnQ9IkFkb2JlIFBob3Rvc2hv"
. "cCAyMy4wIChXaW5kb3dzKSIgc3RFdnQ6Y2hhbmdlZD0iLyIvPiA8L3JkZjpTZXE+IDwveG1wTU06SGlz"
. "dG9yeT4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBl"
. "bmQ9InIiPz5wF6l/AAAIGElEQVRYw5WXe4xcZRnGf9/3nXPmtrM7u9vt7raltmUpWGjlUtqUhhYqSsNF"
. "BQ0kSFViJAaDIJoWLzH+04hAohgCjRgkSALRQIioBI2mFrSBQqWEBtpCAbvt3nd25z5zzve9/jGzl9lu"
. "KT3JyTlzbu/zPe/leUb94sl3GKmmg49KbT8CWaqEEEAaO4BMnTTOBe0rV9mvo8LDaA8EtIH3By03XerY"
. "/pU2SuWAV197jWx2lPb2Rfh+DyKWkZETZDJxli3rxVrwrJiWXBjsqDnzk0Bb3FSgWQCYc02UQmFuaLW1"
. "h7WLECCqQbe2rF0eJwpPfvdUm3c41/HjfBS/19cA+hO+pnFeImNz2TWEk28pL0b/QIVtn+9iy+pWxgoQ"
. "j3/CL2XD+FKFoJBpqudDP/uaEkGURyFYcIONpzleTtGzOMP1mxcwMmE5k037yhVm51nmBpT5wAhagZjk"
. "TaOHj1PpP87d12VIxDyKFUGpMwAgs3N7modnF6OyNSTZvmqw3LXqxo3trFmZZDgboTUopVBKYa0liiKs"
. "dTgnOCdEkcVaN1MDH0c186RkmiEnFGyM1Zd2/uCLV0Y/HJnANBaunHNYawmCgEQiQRD4eJ5CRJFIBCoI"
. "vIpzMiqi8OZbtWrs2TJMlFSdUoGOFiEVA9d4ydVqBB1dt1k9eJuvPTwfwFGtVqhUyvT19TWYk+njsmUr"
. "AJFazT5mrd3pzeVdK6hGMDCpWL1E2LYxYklGODig+de7mvGioiMpWIGWWMR72XYOnhjmkhVZ/HgXIoJz"
. "DhFBa90ILtMgQKEUCrjdGCUnpaAawUhBcccWy21XhA3SFZ9dE/HdqxXfeypg31HNgpZ6IRaqhqMTbVxS"
. "O0F2IkZ7phWlVBOQmRqqg6nfByDVlAKt4MSk4p7PRdxyeY0j/R4PvOSRKyvWLXesWeIYmlCkYlInTiDh"
. "OQ6OJLm6pKlQRAGZTCsKsPa0LVltSkG+qji3R7hlY8TQuOH2JwNy5Tqwlw/VH13YKiQCiPmCAtKxkI8m"
. "U/RP+pzV6SiVyvi+5qzeHgqlMrliCaNPPeCaGMgW4apVDrTwx30+g5PQ3QpfvsSyYaWlVFZYgYmi4ol/"
. "G2oR+J4wXIrx1lCGT/eM4uLt9A8Nc/9Tz7Pl0ov4wuVrGc/lp9tYoeotL/W6aAJgBWJ+/TxXAV9Drgwr"
. "u4W1KyyuqtCxOvXPvGbIV8AzkPAs+wfb+NIFE3SlEvQDu18/wLLuhfiJzSSqNcTVe19rTaUWUm20UlMR"
. "JgM4Nlbv5o0rHL972WNFxvH4K4b7XvRQwPN3VhEHo4UGWIG2wDFp0zzw3H50+AJVCVjW28Pr7xzhjp0P"
. "sbCjnTCyjE7kGM3l+NrWzWxdfyEj2UmaaqAjKew5rDlyzLB5dcT2axS/3eNxeFDRnhJ2XBPRmrb85h8B"
. "YwXF0o4p/bCMV2Isbz2frStakHg32mjK1SqxwOOve99kLF9m29ZNjOXzLOnqpFiuIMxJgdbgG9jxrM+u"
. "bwjf2hJy/RrLmx9ptqxyBAnH/vd9Htvj0dPaLF4uCkktuICzukNKtHD+2UswRmGM4ZFn/8bVGy7iuis3"
. "IrUy2VyRyUIRo1Wz/jqBnjbheFaxbVeMP+z18QxsXWMZyCke3+1z99M+KR/iXvNozsQi/pdP8ad9A3zn"
. "vl/z6sHDJDMd7HruJSJnuXbDRQwPDjA4NkG5WsUzutEFcyZhLYJFGSFXhp0veOza7RH3hXxFkStCd5uQ"
. "DCByNA0YTzsODTlu3LSZrZNH+P2Le4jHfJ7++yvcdfO1LO3p4oPjQ8TjMYIgmJmWc9VQqH88GYOlnULM"
. "CNZCOpD6b+/k4HUFUIhY3hoM2H7r9fiexz0PPcGNV6znhk3r6R8ew/MMURQRhiGqodmnnhANNJ6GwIDR"
. "c33izHyfutYRjzgwEOeND0N86jJcKFdAQSIWYJ2blukwDOsMMB8FMr8XnJomswPPNi5xY6noODuePEBS"
. "l/nV3d9k9xsHufeRp2hLJWlrSU6DmJJsrY32ToVhvhXLx/gGJ4pS2bF4+QZu3bqF9atW8uCdX2fv24f4"
. "/sNPICIkYgEiMpMCiwTGN41VqeZVSzPVJ7tl1WRaBDCuAsk+Qm8hhz44yrmfWsyj22/nlQPv8stn/kx7"
. "uqUJvPE7rxmLtaSvSKZT7S4Kpz81ZVTn8qGkcc9ZrA7QqQT4AcoPwAvwYz79Zc2SdJWLFxUYzkUs713I"
. "Z/qW07ugg47WFNGMSv7XO7Ln7T2VirvwvKsuu6cW6XZBPt4aCmgcNa8lihXH17n+E5eLl5hmyTOK8Q8d"
. "xzKK+MVxTKg4MZZldd9SrLVk80UC359RQ60cYsNcpRb+TFCIO401VVCWGAkTstbs7fzPweyojidRgDFw"
. "9HjI6sUeN6/rY6SQBiUYrRmfzDcAmjkOzBi0MeiGT1LqNLsIFWKsS77HZefasZ5zeveVVQovnWYgn+Ds"
. "lR3cv/M8Mp1JqpU61a6hhGqWX59iTJ/JnwiFUFRpeuU4bROHeHcoRToZPa6VYnjU0tqi+fmOXtpafcYn"
. "LEYLIu6kvp4Kboz2zwhAlThtXon13l6qYYl8PsvCtvJfylVHZIWf3tXNgs6AkTGL56lZTaVOGl5Ga8Ja"
. "aLwzWT9a0TtxkGKkKZpFaARr3bGFndF73/7qgr7zz4kxMBTiB7oRjHlTYIyiWKz+8+iHIw9+YgCiDXFb"
. "hMksx2wKqxWIIl8Q1q5O7lx/YWLT0GjktNZT3qt+aDjkWZKvbeRKk7nKrnwxevv/sZ0p2Ci1PVEAAAAA"
. "SUVORK5CYII="
Return Base64PNG
}
; โโโโโโโโโโโโ
Base64PNG_to_HICON(Base64PNG, W:=0, H:=0){
BLen:=StrLen(Base64PNG), Bin:=0, nBytes:=Floor(StrLen(RTrim(Base64PNG,"="))*3/4)
Return DllCall("Crypt32.dll\CryptStringToBinary", "Str",Base64PNG, "UInt",BLen, "UInt",1,"Ptr",&(Bin:=VarSetCapacity(Bin,nBytes)), "UIntP",nBytes, "UInt",0, "UInt",0)? DllCall("CreateIconFromResourceEx", "Ptr",&Bin, "UInt",nBytes, "Int",True, "UInt",0x30000, "Int",W, "Int",H, "UInt",0, "UPtr") : 0
}
Return
;โโโโโโโโโ Logo Icons Functions End โโโโโโโโโโ
/*
;โฏโโโโโโโโโโโโ Google Translate Functions โโโโโโโโโโโโโฏ ๐กฐ ๐กฐ ๐กฐ ๐กฐ Duplicate function definition line Text Error: URIEncode(str, encoding := "UTF-8")
GoogleTranslate(str, from := "auto", to := "en") {
static JS := CreateScriptObj(), _ := JS.( GetJScript() ) := JS.("delete ActiveXObject; delete GetObject;")
json := SendRequest(JS, str, to, from, proxy := "")
oJSON := JS.("(" . json . ")")
if !IsObject(oJSON[1]) {
Loop % oJSON[0].length
trans .= oJSON[0][A_Index - 1][0]
}
else {
MainTransText := oJSON[0][0][0]
Loop % oJSON[1].length {
trans .= "`n+"
obj := oJSON[1][A_Index-1][1]
Loop % obj.length {
txt := obj[A_Index - 1]
trans .= (MainTransText = txt ? "" : "`n" txt)
}
}
}
if !IsObject(oJSON[1])
MainTransText := trans := Trim(trans, ",+`n ")
else
trans := MainTransText . "`n+`n" . Trim(trans, ",+`n ")
from := oJSON[2]
trans := Trim(trans, ",+`n ")
Return trans
}
SendRequest(JS, str, tl, sl, proxy) {
static http
ComObjError(false)
if !http
{
http := ComObjCreate("WinHttp.WinHttpRequest.5.1")
( proxy && http.SetProxy(2, proxy) )
http.open("GET", "https://translate.google.com", true)
http.SetRequestHeader("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:47.0) Gecko/20100101 Firefox/47.0")
http.send()
http.WaitForResponse(-1)
}
http.open("POST", "https://translate.googleapis.com/translate_a/single?client=gtx"
; or "https://clients5.google.com/translate_a/t?client=dict-chrome-ex"
. "&sl=" . sl . "&tl=" . tl . "&hl=" . tl
. "&dt=at&dt=bd&dt=ex&dt=ld&dt=md&dt=qca&dt=rw&dt=rm&dt=ss&dt=t&ie=UTF-8&oe=UTF-8&otf=0&ssel=0&tsel=0&pc=1&kc=1"
. "&tk=" . JS.("tk").(str), true)
http.SetRequestHeader("Content-Type", "application/x-www-form-urlencoded;charset=utf-8")
http.SetRequestHeader("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:47.0) Gecko/20100101 Firefox/47.0")
http.send("q=" . URIEncode(str))
http.WaitForResponse(-1)
Return http.responsetext
}
URIEncode(str, encoding := "UTF-8") {
VarSetCapacity(var, StrPut(str, encoding))
StrPut(str, &var, encoding)
while code := NumGet(Var, A_Index - 1, "UChar") {
bool := (code > 0x7F || code < 0x30 || code = 0x3D)
UrlStr .= bool ? "%" . Format("{:02X}", code) : Chr(code)
}
Return UrlStr
}
GetJScript()
{
script =
(
var TKK = ((function() {
var a = 561666268;
var b = 1526272306;
return 406398 + '.' + (a + b);
})());
function b(a, b) {
for (var d = 0; d < b.length - 2; d += 3) {
var c = b.charAt(d + 2),
c = "a" <= c ? c.charCodeAt(0) - 87 : Number(c),
c = "+" == b.charAt(d + 1) ? a >>> c : a << c;
a = "+" == b.charAt(d) ? a + c & 4294967295 : a ^ c
}
return a
}
function tk(a) {
for (var e = TKK.split("."), h = Number(e[0]) || 0, g = [], d = 0, f = 0; f < a.length; f++) {
var c = a.charCodeAt(f);
128 > c ? g[d++] = c : (2048 > c ? g[d++] = c >> 6 | 192 : (55296 == (c & 64512) && f + 1 < a.length && 56320 == (a.charCodeAt(f + 1) & 64512) ?
(c = 65536 + ((c & 1023) << 10) + (a.charCodeAt(++f) & 1023), g[d++] = c >> 18 | 240,
g[d++] = c >> 12 & 63 | 128) : g[d++] = c >> 12 | 224, g[d++] = c >> 6 & 63 | 128), g[d++] = c & 63 | 128)
}
a = h;
for (d = 0; d < g.length; d++) a += g[d], a = b(a, "+-a^+6");
a = b(a, "+-3^+b+-f");
a ^= Number(e[1]) || 0;
0 > a && (a = (a & 2147483647) + 2147483648);
a `%= 1E6;
return a.toString() + "." + (a ^ h)
}
)
Return script
}
CreateScriptObj() {
static doc, JS, _JS
if !doc {
doc := ComObjCreate("htmlfile")
doc.write("<meta http-equiv='X-UA-Compatible' content='IE=9'>")
JS := doc.parentWindow
if (doc.documentMode < 9)
JS.execScript()
_JS := ObjBindMethod(JS, "eval")
}
Return _JS
}
;โโโโโโโโโโ Google Translate Functions End โโโโโโโโโโโ
*/
;โฏโโโโโโโโโโโโ Reload/Exit Routine โโโโโโโโโโโโโฏ
WM_LBUTTONDOWN() { ; [PopUp Message Drag PT. 2]
PostMessage, 0x00A1, 2, 0
}
RETURN
; โฎโโโโ RELOAD โโโโ RELOAD โโโโ RELOAD โโโโโฎ
^Home:: ; (Ctrl + ([Home] times (# of TapCounts)))
if (A_TimeSincePriorHotkey > 250)
{
TapCount := 1
KeyWait, Esc
} else {
TapCount++
if (TapCount = 2) ; โฌ
โฌ
Set TapCount to # of key taps wanted.
{
Reload:
Gosub, IndicateDot1
Gui, Color, YELLOW ; โฌ
โฌ
IndicateDot Color.
Gosub, IndicateDot2
Reload
} else {
KeyWait, Esc
}
}
Return
; โฎโโโโโโ EXIT โโโโโโ EXIT โโโโโโ EXIT โโโโโโโฎ
^Esc:: ; (Ctrl + ([Esc] times (# of TapCounts)))
if (A_TimeSincePriorHotkey > 250)
{
TapCount := 1
KeyWait, Esc
} else {
TapCount++
if (TapCount = 3) ; โฌ
โฌ
Set TapCount to # of key taps wanted.
{
Exit:
Gosub, IndicateDot1
Gui, Color, RED ; โฌ
โฌ
IndicateDot Color.
Gosub, IndicateDot2
Gui, Destroy
ExitApp
} else {
KeyWait, Esc
}
}
Return
;โโโโโโโโโโ Reload/Exit Routine End โโโโโโโโ
;โฏโโโโโโโโโโโโโโโโโ Indicate Dots โโโโโโโโโโโโโโโโโโโฏ
; โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
IndicateDot1:
Gui, Destroy
SysGet, MonitorWorkArea, MonitorWorkArea
SysGet, TaskbarPos, 4
Gui, +AlwaysOnTop -Caption +hwndHGUI +LastFound
Return
; โโโโโโโโโโโ
IndicateDot2:
Gui, Margin, 13, 13 ; โฌ
โฌ
Dot Size.
Gui, Show, Hide
WinGetPos, , , WinWidth, WinHeight, ahk_id %HGUI%
NewX := MonitorWorkAreaRight - 80
NewY := MonitorWorkAreaBottom - WinHeight - 5
R := Min(WinWidth, WinHeight) // 1 ; โฌ
โฌ
Set value of cornering. (0.5=Oval, 0=square, 1= round, 5=rounded corners).
WinSet, Region, 0-0 W%WinWidth% H%WinHeight% R%R%-%R%
Gui, Show, x%NewX% y%NewY%
; SoundGet, master_volume
; SoundSet, 5
; Soundbeep, 2100, 75
; SoundSet, % master_volume
Sleep, 100
Gui, Destroy
Return
; โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
;โโโโโโโโโโโโโ Indicate Dots End โโโโโโโโโโโโโโ
;โฏโโโโโโโโโโโโโ Auto-Execute Sub โโโโโโโโโโโโโโฏ
AutoExecute:
#NoEnv ; Recommended for performance and future compatibility.
#Persistent ; Keeps a script permanently running until user closes it or ExitApp is encountered.
#SingleInstance, Force ; Determines whether a script is allowed to run again when it is already running.
DetectHiddenWindows, On
SetBatchLines, -1 ; Determines how fast script will run.
SetKeyDelay, 250 ; (Sets TapCount)
SetTitleMatchMode, 2
Menu, Tray, Icon, % "HICON:" . Base64PNG_to_HICON(TrayIcon())
RETURN
;โโโโโโโโโโ Auto-Execute Sub End โโโโโโโโโ
/*
____________________________________________________________
โโชปโโชกโซทโซทโซทโซทโซทโซท SCRIPT END โซธโซธโซธโซธโซธโซธโชขโโชผโ
โพโพโพโพโพโพโพโพโพโพโพโพโพโพโพโพโพโพโพโพโพโพโพโพโพโพโพโพโพโพโพโพโพโพโพโพโพโพโพโพโพโพโพโพโพโพโพโพโพโพโพโพโพโพโพโพโพโพโพโพ
*/
- image.png (247 KiB) Viewed 2553 times
And just for kicks, here is my working updated aesthetics version...
Code: Select all
/*
โโโโโโโโโโโโโโโโ NOTES โโโโโโโโโโโโโโโโ
โขโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโข
โคโ โ โ โ โ โ โ Base Notes โ โ โ โ โ โ โ โ โ โ โ โ โ โ โ
ยป Refresh Script โโโโ Ctrl + HOME key rapidly clicked 2 times. (# TapCounts)
ยป Exit Script โโโโโโโโ Ctrl + Escape key rapidly clicked 3 times. (# TapCounts)
ยป Script Updater: Auto-reload script upon saved changes.
โ If you make any changes to the script file and save it, the script will automatically reload itself and continue running without manual intervention.
โขโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโข
โคโ โ โ โ โ โ โ Script Specific Notes โ โ โ โ โ โ โ โ
ยป SOURCE : https://github.com/balawi28/AHKFastTranslator
โขโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโข
โค Further notes at bottom of scriptโโโโโโโ Yes: No: โ
โโโโโโโโโโโโโโโ NOTES END โโโโโโโโโโโโโโโ
*/
;โฏโโโโโโโโโโโโโ Auto-Execute โโโโโโโโโโโโโโฏ
Gosub, AutoExecute
;โโโโโโโโโโโ Auto-Execute End โโโโโโโโโโโโ
;โฏโโโโโโโโโโโโโ Globals โโโโโโโโโโโโโโฏ
global Minimized := True
dict := GetLanguagesDict()
menuOptions := Join(dict, "|")
;โโโโโโโโโโโ Globals End โโโโโโโโโโโโ
;โฏโโโโโโโโโโโโโ INI Reads โโโโโโโโโโโโโโฏ
IniRead, defaultSourceLanguage, %A_ScriptFullPath%:Stream:$DATA, Settings, defaultSourceLanguage, Auto-Detect โข
IniRead, defaultTargetLanguage, %A_ScriptFullPath%:Stream:$DATA, Settings, defaultTargetLanguage, English
IniRead, hotKeyPrevious, %A_ScriptFullPath%:Stream:$DATA, Settings, hotKeyPrevious, ^+t
IniRead, isRanAtStartup, %A_ScriptFullPath%:Stream:$DATA, Settings, isRanAtStartup, 0
IniRead, outputMethod, %A_ScriptFullPath%:Stream:$DATA, Settings, outputMethod, tooltip
IniRead, EnableClipboard, %A_ScriptFullPath%:Stream:$DATA, Settings, EnableClipboard, 0
;โโโโโโโโโโโ INI Reads End โโโโโโโโโโโโ
;โฏโโโโโโโโโโโโโ Initializers โโโโโโโโโโโโโโฏ
; โโฎ Hotkey
if (StrLen(hotKeyPrevious) != 0)
Hotkey, %hotKeyPrevious%, HotkeyPressed
; โโฎ Source & Target Languages
sourceIndex := FindLanguageIndex(dict, defaultSourceLanguage)
targetIndex := FindLanguageIndex(dict, defaultTargetLanguage)
;โโโโโโโโโโโโ Initializers End โโโโโโโโโโโโ
;โฏโโโโโโโโโโโโโ Tray Menu โโโโโโโโโโโโโโฏ
; โโฎ Tray menu
Menu, Tray, NoStandard ; Remove all standard tray menu options
Menu, Tray, Add, GUI, HotkeyPressed
Menu, Tray, Add, Run at Startup, StartupToggle
Menu, Tray, Add, Exit, ExitApplication
Menu, Tray, Icon, Exit, Shell32.dll, 132
Menu, Tray, Default, GUI
if (isRanAtStartup)
Menu, Tray, Check, Run at Startup
;โโโโโโโโโโโโ Tray Menu End โโโโโโโโโโโโ
;โฏโโโโโโโโโโโโโ Gui Layout โโโโโโโโโโโโโโฏ
; โขโโโโ Transparacies Section โโโโโข
Gui, Color, 000101
Gui +LastFound
WinSet, TransColor, 000101
; โโโโ
Gui, Font, s20 q5 BOLD, Segoe UI
Gui, Add, Text, x8 y7 w360 c011167 BackgroundTrans CENTER, - TRANSLATOR -
Gui, Font, BOLD,
Gui, Add, Text, x9 y6 w360 c3981F3 BackgroundTrans CENTER, - TRANSLATOR -
Gui, Font, NORM,
Gui, Add, Text, x130 y5 w120 h23 c011167 BackgroundTrans HwndhText gDUMMY,
AttachTip(hText, "Google Translate")
Gui, Font, BOLD,
Gui, Add, Text, x10 y5 w360 c000101 BackgroundTrans CENTER, - TRANSLATOR -
; โโโโ
Gui, Font, s20 q5 BOLD, Segoe UI
Gui, Add, Text, x0 y218 w380 c011167 BackgroundTrans CENTER, __________________________________ ; Bottom
Gui, Add, Text, x0 y217 w380 c3981F3 BackgroundTrans CENTER, __________________________________ ; Deco
Gui, Add, Text, x0 y216 w380 c000101 BackgroundTrans CENTER, __________________________________ ; Bar
; โโโโโโโโโโโโ
Gui, Add, Picture, x178 y69 w23 h16 gSwapLanguages, % "HICON:" . Base64PNG_to_HICON(SwapIcon())
; โขโโโโ Transparacies Section End โโโโโข
Gui,
+AlwaysOnTop
+Border
-Caption
+LastFound
+OwnDialogs
+ToolWindow
Gui, Color, 3981F3
Gui, Margin, 10, 10
Gui, Font, s10 w200 c011167 q5, ARIAL
; โขโโโโ Top Gui Row Section โโโโโข
Gui, Add, Picture, x10 y10 w32 h32, % "HICON:" . Base64PNG_to_HICON(GoogleTranslateLogo())
Gui, Add, Text, x5 y5 w32 h30 w30 BackgroundTrans HwndhText gDUMMY,
AttachTip(hText, "Google Translate")
; โโโโ
Gui, Font, s10 c1A3FE8 q5 BOLD
Gui, Add, Text, x325 y3 BackgroundTrans, | | | |
; โโโโ
Gui, Font, s8 c659CF6 q5 BOLD
Gui, Add, Text, x330 y5 c011167 BackgroundTrans, ?
Gui, Add, Text, x325 y5 w15 BackgroundTrans HwndhText gABOUTS,
AttachTip(hText, "ABOUT")
; โโโโ
Gui, Font, s18 q5 NORM
Gui, Add, Text, x344 y5 cFCFCFC BackgroundTrans, *
Gui, Add, Text, x340 y-1 w10 BackgroundTrans HwndhText gReload,
AttachTip(hText, "RELOAD")
; โโโโ
Gui, Font, s8 c659CF6 q5 BOLD
Gui, Add, Text, x361 y5 cB20000 BackgroundTrans, X
Gui, Add, Text, x357 y5 w15 BackgroundTrans HwndhText gExit,
AttachTip(hText, "EXIT")
; โขโโโโ Top Gui Row Section End โโโโโข
; โขโโโโ Language Selection Row Section โโโโโข
Gui, Font, s8 w200 c011167 q5 UNDERLINE, ARIAL
Gui, Add, Text, x30 y45 w360 BackgroundTrans, Select Input Language
Gui, Font, s10 w200 c011167 q5 NORM, ARIAL
Gui, Add, DropDownList, x20 y65 w150 choose%sourceIndex% vSourceLang gOnSourceLangChange, %menuOptions%
; โโโโ
; Gui, Add, Picture, x178 y69 w23 h16 gSwapLanguages, % "HICON:" . Base64PNG_to_HICON(SwapIcon())
; โโโโ
Gui, Font, s8 w200 c011167 q5 UNDERLINE, ARIAL
Gui, Add, Text, x220 y45 w150 BackgroundTrans, Select Output Language
Gui, Font, s10 w200 c011167 q5 NORM, ARIAL
Gui, Add, DropDownList, x210 y65 w150 choose%targetInde`x% vTargetLang gOnTargetLangChange, %menuOptions%
; โขโโโโ Language Selection Row Section End โโโโโข
; โขโโโโ Selections Box Section โโโโโข
Gui, Font, s8 w200 c011167 q5 UNDERLINE, ARIAL
Gui, Add, Text, x5 y98 w186 h60 BackgroundTrans 0x00800000,
Gui, Add, Text, x35 y108 BackgroundTrans, Select Display Style
Gui, Font, s10 w200 c011167 q5 NORM, TAHOMA
Gui, Add, Radio, x15 y129 vChoiceMsgBox gRadioChoice, Message Box
Gui, Add, Radio, x120 y129 vChoiceToolTip gRadioChoice, Tooltip
GuiControl,, % outputMethod = "tooltip" ? "ChoiceToolTip" : "ChoiceMsgBox", 1
; โโโโ
Gui, Font, s8 w200 c011167 q5 UNDERLINE, ARIAL
Gui, Add, Text, x190 y98 w186 h60 BackgroundTrans 0x00800000,
Gui, Add, Text, x220 y108 w185 h60 BackgroundTrans, Set Interface Hotkey
Gui, Font, s8 w200 c011167 q5 NORM, ARIAL
Gui, Add, Hotkey, x202 y128 w120 h17 vhotKeyCurrent
GuiControl,, hotKeyCurrent, %hotKeyPrevious%
Gui, Font, s8 w200 q5, TAHOMA
Gui Add, Button, x325 y128 w40 h17, Save
; โขโโโโ Selections Box Section End โโโโโข
; โขโโโโ Translations Section โโโโโข
Gui, Font, s8 w800 c1A3FE8 q5 ITALIC, CALIBRI
Gui, Add, Text, x10 y163 w360 CENTER, Translated text will appear in Clipboard and Prefered Display Style.
; โโโโ
Gui, Font, s8 w200 c011167 q5 NORM, ARIAL
Gui, Add, Edit, x15 y175 w350 BackgroundTrans vTextToTranslate
; โขโโโโ Translations Section End โโโโโข
; โขโโโโ Output Choices Section โโโโโข
Gui, Add, CheckBox, x92 y222 vEnableClipboard gCheckBox,
Gui, Font, s8 w200 c011167 q5 UNDERLINE, ARIAL
Gui, Add, Text, x25 y205 BackgroundTrans, Copy Translation
Gui, Font, s8 w200 c011167 q5 NORM, ARIAL
Gui, Add, Text, x25 y221 BackgroundTrans, To Clipboard
GuiControl,,EnableClipboard,%EnableClipboard%
; โโโโ
Gui, Font, s8 w200 c011167 q5, ARIAL
Gui, Add, Button, x253 y215 h13 w20 BackgroundTrans gPASTE1, โข
Gui, Add, Button, x253 y230 h13 w20 BackgroundTrans gPASTE2, โข
Gui, Font, s8 w200 c011167 q5 UNDERLINE, ARIAL
Gui, Add, Text, x253 y198 BackgroundTrans, Paste Clipboard
Gui, Font, s8 w200 c011167 q5 NORM, ARIAL
Gui, Add, Text, x278 y215 BackgroundTrans, To Notepad
Gui, Add, Text, x278 y230 BackgroundTrans, To Notepad++
; โขโโโโ Output Choices Section End โโโโโข
;โโโโโโโโโโโโ Gui Layout End โโโโโโโโโโโโ
;โฏโโโโโโโโ Drag & Memory Control Functions โโโโโโโโโฏ
; โโฎ Define the callback function to handle the WM_MOVE message
OnMessage(0x0232, "OnDragRelease")
; โโโโโโโโโโโโ
; โโฎ To enable drag on the main window
enableGuiDrag()
Return
; โโโโโโโโโโโโ
; โโฎ Define the MouseUp function to get the new x and y coordinates.
OnDragRelease(wParam, lParam, msg, hwnd)
{
WinGetPos, WinX, WinY, , , ahk_id %hwnd%
IniWrite, %WinX%, %A_ScriptFullPath%:Stream:$DATA, Settings, defaultXPosition
IniWrite, %WinY%, %A_ScriptFullPath%:Stream:$DATA, Settings, defaultYPosition
}
; โโโโโโโโโโโโ
enableGuiDrag(GuiLabel=1) {
WinGetPos,,,A_w,A_h,A
Gui, %GuiLabel%:Add, Text, x0 y0 w%A_w% h%A_h% +BackgroundTrans gGUI_Drag
Return
; โโโโโโโโโโโโ
GUI_Drag:
SendMessage 0xA1,2 ; โโฎ Goyyah/SKAN trick
; โโฎ http://autohotkey.com/board/topic/80594-how-to-enable-drag-for-a-gui-without-a-titlebar
Return
}
;โโโโโโ Drag & Memory Control Functions End โโโโโโ
;โฏโโโโโโโโโโโ Attach Tooltip Function โโโโโโโโโโโโฏ
AttachTip(hCtrl, text:="")
{
hGui := text!="" ? DlLCall("GetParent", "Ptr", hCtrl) : hCtrl
static hTip
if !hTip
{
hTip := DllCall("CreateWindowEx", "UInt", 0x8, "Str", "tooltips_class32"
, "Ptr", 0, "UInt", 0x80000002 ;// WS_POPUP:=0x80000000|TTS_NOPREFIX:=0x02
, "Int", 0x80000000, "Int", 0x80000000, "Int", 0x80000000, "Int", 0x80000000
, "Ptr", hGui, "Ptr", 0, "Ptr", 0, "Ptr", 0, "Ptr")
; TTM_SETMAXTIPWIDTH = 0x0418
DllCall("SendMessage", "Ptr", hTip, "Int", 0x0418, "Ptr", 0, "Ptr", 0)
if (A_OsVersion == "WIN_XP")
AttachTip(hGui)
}
static sizeof_TOOLINFO := 24 + (6 * A_PtrSize)
VarSetCapacity(TOOLINFO, sizeof_TOOLINFO, 0)
, NumPut(sizeof_TOOLINFO, TOOLINFO, 0, "UInt")
, NumPut(0x11, TOOLINFO, 4, "UInt") ; TTF_IDISHWND:=0x0001|TTF_SUBCLASS:=0x0010
, NumPut(hGui, TOOLINFO, 8, "Ptr")
, NumPut(hCtrl, TOOLINFO, 8 + A_PtrSize, "Ptr")
, NumPut(&text, TOOLINFO, 24 + (3 * A_PtrSize), "Ptr")
static TTM_ADDTOOL := A_IsUnicode ? 0x0432 : 0x0404
return DllCall("SendMessage", "Ptr", hTip, "Int", TTM_ADDTOOL, "Ptr", 0, "Ptr", &TOOLINFO)
}
;โโโโโโโ Attach Tooltip Function End โโโโโโโโ
;โฏโโโโโโโโโโ PopUp Message Function โโโโโโโโโโโฏ
PMess(ttitle, ttext, textColor := "BLACK", bkg := "WHITE") { ; <<- Default Text and Background Colors.
Gui, Box:New, , %ttitle% ; EXAMPLE : PMess("Title", "Text", "Text-Color", "Text-Background")
Gui,
+AlwaysOnTop
-Border
-Caption
Gui, Margin, 10, 10
Gui, Font, s10 c%textColor%
Gui, Color, %bkg%
Gui, Add, Text, , %ttext%
; Gui, Show ; โฎโโ Section blocked to allow varying PMess display times.
; Sleep, 3000
; Gui, Destroy
Return
}
;โโโโโโโ PopUp Message Function End โโโโโโโโ
;โฏโโโโโโโโโโโโโโโ #IfWinActive โโโโโโโโโโโโโโโโฏ
#IfWinActive, TRANSLATOR ahk_class AutoHotkeyGUI
Esc::
Goto, GuiClose
Return
NumpadEnter::
Enter::
Gui, Submit
GuiControl, , TextToTranslate
Minimized := True
url := TranslateURL(dict[SourceLang], dict[TargetLang], TextToTranslate)
response := PostRequest(url)
cleanResponse := SubStr(response, 3, StrLen(response) - 4)
if (SourceLang = "Auto-Detect โข")
cleanResponse := SubStr(cleanResponse, 2, StrLen(cleanResponse) - 7)
if (EnableClipboard)
Clipboard := cleanResponse
if (outputMethod = "tooltip"){
ToolTip % cleanResponse
Sleep, 2000 ; Display the tooltip for 2 seconds
ToolTip ; Remove the tooltip
} else
MsgBox, 0x40000,, % cleanResponse
Return
#IfWinActive
;โโโโโโโโโโโโโโ #IfWinActive End โโโโโโโโโโโโโโโ
;โฏโโโโโโโโโโโโโโโ gLabels โโโโโโโโโโโโโโโโฏ
CheckBox:
Gui, Submit, NoHide
IniWrite, %EnableClipboard%, %A_ScriptFullPath%:Stream:$DATA, Settings,EnableClipboard
Return
; โโโโโโโโโโโโ
ButtonSave: ; Save hotkey routine.
Gui, Submit, NoHide
if (StrLen(hotKeyPrevious) != 0 and hotKeyPrevious != hotKeyCurrent){
Hotkey, %hotKeyPrevious%, Off
}
if (StrLen(hotKeyCurrent) != 0){
Hotkey, %hotKeyCurrent%, On, UseErrorLevel
Hotkey, %hotKeyCurrent%, HotkeyPressed
}
IniWrite, %hotKeyCurrent%, %A_ScriptFullPath%:Stream:$DATA, Settings,hotKeyPrevious
hotKeyPrevious := hotKeyCurrent
PMess("Pop Message #1", "Hotkey Saved Successfully", "3981F3", "011167")
Gui, Show
OnMessage(0x0201, "WM_LBUTTONDOWN") ; [PopUp Message Drag PT. 1]
Sleep, 1500
Gui, Destroy
Return
; โโโโโโโโโโโโ
ABOUTS:
PMess("About", "โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ`n Original Author : balawi28`nhttps://github.com/balawi28/AHKFastTranslator`n โ โ โ โ โ โ โ โ โ`nHow to Use : `n 1. Select Input/Output Languages`n 2. Select Display Style`n 3. Set Interface Hotkey`n 4. Paste in Text to Translate`n 5. Translation will appear Display and Cliboard`nโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ", "3981F3", "011167")
Gui, Show
OnMessage(0x0201, "WM_LBUTTONDOWN") ; [PopUp Message Drag PT. 1]
Sleep, 7000
Gui, Destroy
Return
; โโโโโโโโโโโโ
PASTE1:
IfWinExist, ahk_class Notepad
{
WinActivate ahk_class Notepad
Send ^v`n
}
else
{
IfWinNotExist, ahk_class Notepad
Run, C:\windows\system32\notepad.exe
WinActivate ahk_class Notepad
WinWaitActive ahk_class Notepad
Send ^v`n
}
Return
PASTE2:
IfWinExist ahk_class Notepad++
{
WinActivate
WinWaitActive
Send ^n ; open new tab
Send `n^v`n
}
Else {
Run %A_ProgramFiles%\Notepad++\notepad++.exe
WinActivate ahk_class Notepad++
WinWaitActive ahk_class Notepad++
; empty tab already opened, we don't need to do this
Send `n^v`n
}
Return
; โโโโโโโโโโโโ
DUMMY:
Sleep, 10
Return
; โโโโโโโโโโโโ
GuiClose:
GuiControl, , TextToTranslate
Minimized := True
Gui, Cancel
Return
; โโโโโโโโโโโโ
RadioChoice:
gui, submit, nohide
outputMethod := ChoiceToolTip ? "tooltip" : "msgbox"
IniWrite, %outputMethod%, %A_ScriptFullPath%:Stream:$DATA, Settings,outputMethod
Return
; โโโโโโโโโโโโ
HotkeyPressed:
if(Minimized){
IniRead, defaultXPosition, %A_ScriptFullPath%:Stream:$DATA, Settings, defaultXPosition,Center
IniRead, defaultYPosition, %A_ScriptFullPath%:Stream:$DATA, Settings, defaultYPosition,Center
Gui, Show, x%defaultXPosition% y%defaultYPosition% w380 h255, TRANSLATOR
GuiControl, Focus, TextToTranslate
}else{
Goto, GuiClose
}
Minimized := ! Minimized
Return
; โโโโโโโโโโโโ
StartupToggle:
isRanAtStartup := !isRanAtStartup
Menu, Tray, ToggleCheck, Run at Startup
if(isRanAtStartup)
FileCreateShortcut,%A_ScriptFullPath%,%A_AppData%\Microsoft\Windows\Start Menu\Programs\Startup\TrayAudioAnalyzer.lnk,%A_ScriptDir%
else
FileDelete, %A_AppData%\Microsoft\Windows\Start Menu\Programs\Startup\TrayAudioAnalyzer.lnk
IniWrite, %isRanAtStartup%, %A_ScriptFullPath%:Stream:$DATA, Settings, isRanAtStartup
Return
;โโโโโโโโโโโโโโ gLabels End โโโโโโโโโโโโโโโ
;โฏโโโโโโโโโโโโโโโ Misc Functions โโโโโโโโโโโโโโโโฏ
ExitApplication(){
ExitApp
Exit
}
; โโโโโโโโโโโโ
PostRequest(url){
response := ComObjCreate("WinHttp.WinHttpRequest.5.1")
response.Open("POST", url, false)
response.Send()
Return response.ResponseText
}
; โโโโโโโโโโโโ
TranslateURL(sourceLang, targetLang, textToTranslate)
{
baseUrl := "http://translate.google.com/translate_a/t?"
params := []
params["sl"] := sourceLang
params["tl"] := targetLang
params["uptl"] := targetLang
params["q"] := UriEncode(textToTranslate)
params["client"] := "p"
params["hl"] := "en"
params["sc"] := "2"
params["ie"] := "UTF-8"
params["oe"] := "UTF-8"
params["oc"] := "1"
params["prev"] := "conf"
params["psl"] := "auto"
params["ptl"] := "en"
params["otf"] := "1"
params["it"] := "sel.8936"
params["ssel"] := "0"
params["tsel"] := "3"
Return baseUrl . EncodeParams(params)
}
; โโโโโโโโโโโโ
Join(dict, delim) {
result := ""
for key in dict
{
if (result != "")
result .= delim
result .= key
}
Return result
}
; โโโโโโโโโโโโ
FindLanguageIndex(dict, language) {
index := 1
for key, value in dict
{
if (key == language)
Return index
index += 1
}
Return -1 ; Language not found, Return -1
}
; โโโโโโโโโโโโ
OnSourceLangChange() {
GuiControlGet, selectedSourceLang, , SourceLang
IniWrite, %selectedSourceLang%, %A_ScriptFullPath%:Stream:$DATA, Settings, defaultSourceLanguage
}
; โโโโโโโโโโโโ
OnTargetLangChange() {
GuiControlGet, selectedTargetLang, , TargetLang
IniWrite, %selectedTargetLang%, %A_ScriptFullPath%:Stream:$DATA, Settings, defaultTargetLanguage
}
; โโโโโโโโโโโโ
SwapLanguages(){
GuiControlGet, selectedTargetLang, , TargetLang
GuiControlGet, selectedSourceLang, , SourceLang
temp := selectedSourceLang
GuiControl, Choose, SourceLang, %selectedTargetLang%
GuiControl, Choose, TargetLang, %temp%
IniWrite, %selectedTargetLang%, %A_ScriptFullPath%:Stream:$DATA, Settings, defaultSourceLanguage
IniWrite, %temp%, %A_ScriptFullPath%:Stream:$DATA, Settings, defaultTargetLanguage
}
; โโโโโโโโโโโโ
EncodeParams(params)
{
encodedParams := ""
for key, value in params
{
encodedKey := key
encodedValue := value
encodedParams .= (encodedParams = "") ? encodedKey . "=" . encodedValue : "&" . encodedKey . "=" . encodedValue
}
Return encodedParams
}
; โโโโโโโโโโโโ
; UriEncode function is written by the-Automator
; https://www.the-automator.com/parse-url-parameters/
UriEncode(Uri, RE="[0-9A-Za-z]")
{
VarSetCapacity(Var, StrPut(Uri, "UTF-8"), 0)
StrPut(Uri, &Var, "UTF-8")
While Code := NumGet(Var, A_Index-1, "UChar")
{
Res .= (Chr := Chr(Code)) ~= RE ? Chr : Format("%{:02X}", Code)
}
Return Res
}
;โโโโโโโโโโโโโโ Misc Functions End โโโโโโโโโโโโโโโ
;โฏโโโโโโโโ Get Language Dictionaries Function โโโโโโโโโฏ
GetLanguagesDict(){
global dict
if !dict {
dict := {}
dict["Auto-Detect โข"] := "auto"
dict["Afrikaans"] := "af"
dict["Albanian"] := "sq"
dict["Amharic"] := "am"
dict["Arabic"] := "ar"
dict["Armenian"] := "hy"
dict["Assamese"] := "as"
dict["Aymara"] := "ay"
dict["Azerbaijani"] := "az"
dict["Bambara"] := "bm"
dict["Basque"] := "eu"
dict["Belarusian"] := "be"
dict["Bengali"] := "bn"
dict["Bhojpuri"] := "bho"
dict["Bosnian"] := "bs"
dict["Bulgarian"] := "bg"
dict["Catalan"] := "ca"
dict["Cebuano"] := "ceb"
dict["Chinese (Simplified)"] := "zh-CN"
dict["Chinese (Traditional)"] := "zh-TW"
dict["Corsican"] := "co"
dict["Croatian"] := "hr"
dict["Czech"] := "cs"
dict["Danish"] := "da"
dict["Dhivehi"] := "dv"
dict["Dogri"] := "doi"
dict["Dutch"] := "nl"
dict["English"] := "en"
dict["Esperanto"] := "eo"
dict["Estonian"] := "et"
dict["Ewe"] := "ee"
dict["Filipino (Tagalog)"] := "fil"
dict["Finnish"] := "fi"
dict["French"] := "fr"
dict["Frisian"] := "fy"
dict["Galician"] := "gl"
dict["Georgian"] := "ka"
dict["German"] := "de"
dict["Greek"] := "el"
dict["Guarani"] := "gn"
dict["Gujarati"] := "gu"
dict["Haitian Creole"] := "ht"
dict["Hausa"] := "ha"
dict["Hawaiian"] := "haw"
dict["Hebrew"] := "he"
dict["Hindi"] := "hi"
dict["Hmong"] := "hmn"
dict["Hungarian"] := "hu"
dict["Icelandic"] := "is"
dict["Igbo"] := "ig"
dict["Ilocano"] := "ilo"
dict["Indonesian"] := "id"
dict["Irish"] := "ga"
dict["Italian"] := "it"
dict["Japanese"] := "ja"
dict["Javanese"] := "jv"
dict["Kannada"] := "kn"
dict["Kazakh"] := "kk"
dict["Khmer"] := "km"
dict["Kinyarwanda"] := "rw"
dict["Konkani"] := "gom"
dict["Korean"] := "ko"
dict["Krio"] := "kri"
dict["Kurdish"] := "ku"
dict["Kurdish (Sorani)"] := "ckb"
dict["Kyrgyz"] := "ky"
dict["Lao"] := "lo"
dict["Latin"] := "la"
dict["Latvian"] := "lv"
dict["Lingala"] := "ln"
dict["Lithuanian"] := "lt"
dict["Luganda"] := "lg"
dict["Luxembourgish"] := "lb"
dict["Macedonian"] := "mk"
dict["Maithili"] := "mai"
dict["Malagasy"] := "mg"
dict["Malay"] := "ms"
dict["Malayalam"] := "ml"
dict["Maltese"] := "mt"
dict["Maori"] := "mi"
dict["Marathi"] := "mr"
dict["Meiteilon (Manipuri)"] := "mni-Mtei"
dict["Mizo"] := "lus"
dict["Mongolian"] := "mn"
dict["Myanmar (Burmese)"] := "my"
dict["Nepali"] := "ne"
dict["Norwegian"] := "no"
dict["Nyanja (Chichewa)"] := "ny"
dict["Odia (Oriya)"] := "or"
dict["Oromo"] := "om"
dict["Pashto"] := "ps"
dict["Persian"] := "fa"
dict["Polish"] := "pl"
dict["Portuguese"] := "pt"
dict["Punjabi"] := "pa"
dict["Quechua"] := "qu"
dict["Romanian"] := "ru"
dict["Samoan"] := "sm"
dict["Sanskrit"] := "sa"
dict["Scots Gaelic"] := "gd"
dict["Sepedi"] := "nso"
dict["Serbian"] := "sr"
dict["Sesotho"] := "st"
dict["Shona"] := "sn"
dict["Sindhi"] := "sd"
dict["Sinhala (Sinhalese)"] := "si"
dict["Slovak"] := "sk"
dict["Slovenian"] := "sl"
dict["Somali"] := "so"
dict["Spanish"] := "es"
dict["Sundanese"] := "su"
dict["Swahili"] := "sw"
dict["Swedish"] := "sv"
dict["Tagalog (Filipino)"] := "tl"
dict["Tajik"] := "tg"
dict["Tamil"] := "ta"
dict["Tatar"] := "tt"
dict["Telugu"] := "te"
dict["Thai"] := "th"
dict["Tigrinya"] := "ti"
dict["Tsonga"] := "ts"
dict["Turkish"] := "tr"
dict["Turkmen"] := "tk"
dict["Twi (Akan)"] := "ak"
dict["Ukrainian"] := "uk"
dict["Urdu"] := "ur"
dict["Uyghur"] := "ug"
dict["Uzbek"] := "uz"
dict["Vietnamese"] := "vi"
dict["Welsh"] := "cy"
dict["Xhosa"] := "xh"
dict["Yiddish"] := "yi"
dict["Yoruba"] := "yo"
dict["Zulu"] := "zu"
}
Return dict
}
;โโโโโโ Get Language Dictionaries Function End โโโโโโ
;โฏโโโโโโโโโโโโ Logo Icons Functions โโโโโโโโโโโโโฏ
SwapIcon(){
Base64PNG := ""
. "iVBORw0KGgoAAAANSUhEUgAAACAAAAAVCAYAAAAnzezqAAAACXBIWXMAAA3XAAAN1wFCKJt4AAAFyWlU"
. "WHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhp"
. "SHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0"
. "az0iQWRvYmUgWE1QIENvcmUgNy4xLWMwMDAgNzkuYTg3MzFiOSwgMjAyMS8wOS8wOS0wMDozNzozOCAg"
. "ICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJk"
. "Zi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRw"
. "Oi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczpkYz0iaHR0cDovL3B1cmwub3JnL2RjL2VsZW1l"
. "bnRzLzEuMS8iIHhtbG5zOnBob3Rvc2hvcD0iaHR0cDovL25zLmFkb2JlLmNvbS9waG90b3Nob3AvMS4w"
. "LyIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0RXZ0"
. "PSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VFdmVudCMiIHhtcDpDcmVh"
. "dG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIDIzLjAgKFdpbmRvd3MpIiB4bXA6Q3JlYXRlRGF0ZT0iMjAy"
. "My0wNi0zMFQwMjowMToyNSswMzowMCIgeG1wOk1vZGlmeURhdGU9IjIwMjMtMDYtMzBUMDI6MjM6MzUr"
. "MDM6MDAiIHhtcDpNZXRhZGF0YURhdGU9IjIwMjMtMDYtMzBUMDI6MjM6MzUrMDM6MDAiIGRjOmZvcm1h"
. "dD0iaW1hZ2UvcG5nIiBwaG90b3Nob3A6Q29sb3JNb2RlPSIzIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAu"
. "aWlkOjU5NjQ4M2ExLTBiYmQtM2M0Yi05YzMyLWEwZjE5NTRhYzdjNyIgeG1wTU06RG9jdW1lbnRJRD0i"
. "YWRvYmU6ZG9jaWQ6cGhvdG9zaG9wOmU1OWJmZTNjLWQ3ZjYtNzM0YS1hNjY3LWQzOWI1NmMxMmZmYSIg"
. "eG1wTU06T3JpZ2luYWxEb2N1bWVudElEPSJ4bXAuZGlkOmQwYmVhNDVkLTU0MTgtMTU0ZS1hNGQ1LTY4"
. "N2UwZDYxODhiMiI+IDx4bXBNTTpIaXN0b3J5PiA8cmRmOlNlcT4gPHJkZjpsaSBzdEV2dDphY3Rpb249"
. "ImNyZWF0ZWQiIHN0RXZ0Omluc3RhbmNlSUQ9InhtcC5paWQ6ZDBiZWE0NWQtNTQxOC0xNTRlLWE0ZDUt"
. "Njg3ZTBkNjE4OGIyIiBzdEV2dDp3aGVuPSIyMDIzLTA2LTMwVDAyOjAxOjI1KzAzOjAwIiBzdEV2dDpz"
. "b2Z0d2FyZUFnZW50PSJBZG9iZSBQaG90b3Nob3AgMjMuMCAoV2luZG93cykiLz4gPHJkZjpsaSBzdEV2"
. "dDphY3Rpb249InNhdmVkIiBzdEV2dDppbnN0YW5jZUlEPSJ4bXAuaWlkOjU5NjQ4M2ExLTBiYmQtM2M0"
. "Yi05YzMyLWEwZjE5NTRhYzdjNyIgc3RFdnQ6d2hlbj0iMjAyMy0wNi0zMFQwMjoyMzozNSswMzowMCIg"
. "c3RFdnQ6c29mdHdhcmVBZ2VudD0iQWRvYmUgUGhvdG9zaG9wIDIzLjAgKFdpbmRvd3MpIiBzdEV2dDpj"
. "aGFuZ2VkPSIvIi8+IDwvcmRmOlNlcT4gPC94bXBNTTpIaXN0b3J5PiA8L3JkZjpEZXNjcmlwdGlvbj4g"
. "PC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PmOrIjcAAAEfSURBVEgNY2DA"
. "DhKA+D8QL2YYAJAEtRyEXwAx20BZDsKZ9LQ8G83yOHpano9muQM9Lc9Ds/wxEPcA8Vog3gLEm0jAR4B4"
. "AhAzkuKAF2gOoAb2IcUB09E0PwXinUB8F4jvAPFtEvAbID4MxEJI5nMBsRQhR8xEcsBvIDamYhTvg5pb"
. "TYojvgKxFhUsZwXi50jm1hLSMAEtOuyo4Ah3NDPbCGnoRlL8DIhZqOAIKzRHdBPS0AlVeIqKacEMiP+S"
. "4ghNIBZA4vMB8WYgvg/E50jA56H0KiB+QmpIIANfGpQXL0lxAKhWXAjEl4D4AAn4EDQrzoaWssgOqKZn"
. "kW+JZnktPS0PRrO8lJ6Wx6BZnk9Py9nQKju6Wg4Da6CW52CTBADLm7B1N75ElAAAAABJRU5ErkJggg=="
Return Base64PNG
}
; โโโโโโโโโโโโ
TrayIcon(){
Base64PNG := ""
. "iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAACXBIWXMAAAsTAAALEwEAmpwYAAAGSWlU"
. "WHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhp"
. "SHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0"
. "az0iQWRvYmUgWE1QIENvcmUgNy4xLWMwMDAgNzkuYTg3MzFiOSwgMjAyMS8wOS8wOS0wMDozNzozOCAg"
. "ICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJk"
. "Zi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRw"
. "Oi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94"
. "YXAvMS4wL21tLyIgeG1sbnM6c3RFdnQ9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9S"
. "ZXNvdXJjZUV2ZW50IyIgeG1sbnM6cGhvdG9zaG9wPSJodHRwOi8vbnMuYWRvYmUuY29tL3Bob3Rvc2hv"
. "cC8xLjAvIiB4bWxuczpkYz0iaHR0cDovL3B1cmwub3JnL2RjL2VsZW1lbnRzLzEuMS8iIHhtcDpDcmVh"
. "dG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIDIzLjAgKFdpbmRvd3MpIiB4bXA6Q3JlYXRlRGF0ZT0iMjAy"
. "My0wNy0xMlQxNjoyMToxMiswMzowMCIgeG1wOk1ldGFkYXRhRGF0ZT0iMjAyMy0wNy0xMlQxNjoyMTox"
. "MiswMzowMCIgeG1wOk1vZGlmeURhdGU9IjIwMjMtMDctMTJUMTY6MjE6MTIrMDM6MDAiIHhtcE1NOklu"
. "c3RhbmNlSUQ9InhtcC5paWQ6NzgyODIyMDEtYzYwYi05MzQxLTkwNzktMTA0NjI2YjA5MDFmIiB4bXBN"
. "TTpEb2N1bWVudElEPSJhZG9iZTpkb2NpZDpwaG90b3Nob3A6ZGM5MjljYTItYjM5MS00ZTQ1LTkyZWIt"
. "ODYyMWIzZmM3NGViIiB4bXBNTTpPcmlnaW5hbERvY3VtZW50SUQ9InhtcC5kaWQ6ZWZlYTBmN2MtNjQ4"
. "MS1kYzRlLTg0MDgtYzlhNjBkNDAyYmJmIiBwaG90b3Nob3A6Q29sb3JNb2RlPSIzIiBkYzpmb3JtYXQ9"
. "ImltYWdlL3BuZyI+IDx4bXBNTTpIaXN0b3J5PiA8cmRmOlNlcT4gPHJkZjpsaSBzdEV2dDphY3Rpb249"
. "ImNyZWF0ZWQiIHN0RXZ0Omluc3RhbmNlSUQ9InhtcC5paWQ6ZWZlYTBmN2MtNjQ4MS1kYzRlLTg0MDgt"
. "YzlhNjBkNDAyYmJmIiBzdEV2dDp3aGVuPSIyMDIzLTA3LTEyVDE2OjIxOjEyKzAzOjAwIiBzdEV2dDpz"
. "b2Z0d2FyZUFnZW50PSJBZG9iZSBQaG90b3Nob3AgMjMuMCAoV2luZG93cykiLz4gPHJkZjpsaSBzdEV2"
. "dDphY3Rpb249InNhdmVkIiBzdEV2dDppbnN0YW5jZUlEPSJ4bXAuaWlkOjc4MjgyMjAxLWM2MGItOTM0"
. "MS05MDc5LTEwNDYyNmIwOTAxZiIgc3RFdnQ6d2hlbj0iMjAyMy0wNy0xMlQxNjoyMToxMiswMzowMCIg"
. "c3RFdnQ6c29mdHdhcmVBZ2VudD0iQWRvYmUgUGhvdG9zaG9wIDIzLjAgKFdpbmRvd3MpIiBzdEV2dDpj"
. "aGFuZ2VkPSIvIi8+IDwvcmRmOlNlcT4gPC94bXBNTTpIaXN0b3J5PiA8cGhvdG9zaG9wOlRleHRMYXll"
. "cnM+IDxyZGY6QmFnPiA8cmRmOmxpIHBob3Rvc2hvcDpMYXllck5hbWU9Iti5IiBwaG90b3Nob3A6TGF5"
. "ZXJUZXh0PSLYuSIvPiA8L3JkZjpCYWc+IDwvcGhvdG9zaG9wOlRleHRMYXllcnM+IDwvcmRmOkRlc2Ny"
. "aXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+WwrQuAAAAjtJ"
. "REFUWMO9VztuwkAQNSeAipomkAIJxAmQ0lByBAoOQIdEhbgAhQ9ASRVRcACOABIFRSTo0xgSORRImfg5"
. "HjOYtRfshZGm8O545+183mgtIrI8efH03dODp8TabDZpOBz62ul0SO5l0EPg6yXwbVU8dVTGcMzSbrdN"
. "AWB1At8+GtIBQDQMAyDfd7fb/VksFqTS3W4XAlgulxRnV6/X0wL4tuQt00qm6MhCk8JrUsfjMW02myub"
. "UqmUJQ3nj8lk4h+M0BeLxSvjWq1G8/nct+n1eqbq4PyBXEJOpxPZtn1hmMvlaDQa+fuO41ChUDAPAIqi"
. "griuS+VyOVyvVqt0PB7D0BvshMsF5JMFKcHN8/l8GHqkx3ArJvd/q9Wifr//SD5Qb3Aq1ut1yAcG6TgZ"
. "ANLAAKTMZrObWw5gYS+JDClVFO+lY/S6TnBQEhDpWEtaaL0oWoka+3Fsif0oEekucMUfqsOR82i+4YSJ"
. "KipyFoAjmCuiZ8BOMTcs/yacY93YBRCA5n8kJyC8Kcb3/6FpmC36n+QQFVXj9ljHRbVtmFY5MhwdRAV1"
. "IUc7OuxhAHBLroOkLnoYAOaAOEGEIvVh1jkOVxEYQMVwhznncCDDfyNzmgMgSSiS5+cA4Eq/c2SbAxDT"
. "Zs8DIPN/B7GZAyBnBdrtxtF9+R7MonIW8EACKLSmKiKNRsNNfJpl7QSdTKfTDwB4jXucZiEjHR1DBoPB"
. "mxU8kStBJL5MUzJSgK5gQPv9/ne1Wn1ut1sbvv8Akdi/PNdSy+EAAAAASUVORK5CYII="
Return Base64PNG
}
; โโโโโโโโโโโโ
GoogleTranslateLogo(){
Base64PNG := ""
. "iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAACXBIWXMAAAsTAAALEwEAmpwYAAAGlmlU"
. "WHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhp"
. "SHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0"
. "az0iQWRvYmUgWE1QIENvcmUgNy4xLWMwMDAgNzkuYTg3MzFiOSwgMjAyMS8wOS8wOS0wMDozNzozOCAg"
. "ICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJk"
. "Zi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRw"
. "Oi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczpkYz0iaHR0cDovL3B1cmwub3JnL2RjL2VsZW1l"
. "bnRzLzEuMS8iIHhtbG5zOnBob3Rvc2hvcD0iaHR0cDovL25zLmFkb2JlLmNvbS9waG90b3Nob3AvMS4w"
. "LyIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0RXZ0"
. "PSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VFdmVudCMiIHhtcDpDcmVh"
. "dG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIDIzLjAgKFdpbmRvd3MpIiB4bXA6Q3JlYXRlRGF0ZT0iMjAy"
. "My0wNi0yMFQyMDoyOToxNCswMzowMCIgeG1wOk1vZGlmeURhdGU9IjIwMjMtMDYtMjBUMjE6MTA6MTYr"
. "MDM6MDAiIHhtcDpNZXRhZGF0YURhdGU9IjIwMjMtMDYtMjBUMjE6MTA6MTYrMDM6MDAiIGRjOmZvcm1h"
. "dD0iaW1hZ2UvcG5nIiBwaG90b3Nob3A6Q29sb3JNb2RlPSIzIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAu"
. "aWlkOjgwYjExNTNlLTRjN2EtMDg0YS04MzU3LTRiZWNhYzRkZTE3YyIgeG1wTU06RG9jdW1lbnRJRD0i"
. "YWRvYmU6ZG9jaWQ6cGhvdG9zaG9wOjNkZmFjNDUxLThhZTQtOTc0MS04MmE1LTZiNTVkYmRhYzlkZCIg"
. "eG1wTU06T3JpZ2luYWxEb2N1bWVudElEPSJ4bXAuZGlkOjUyYWI3YjQ2LTQwNzMtNTE0YS05NWM3LWQ3"
. "YTU0Y2Y1OWI3OCI+IDx4bXBNTTpIaXN0b3J5PiA8cmRmOlNlcT4gPHJkZjpsaSBzdEV2dDphY3Rpb249"
. "ImNyZWF0ZWQiIHN0RXZ0Omluc3RhbmNlSUQ9InhtcC5paWQ6NTJhYjdiNDYtNDA3My01MTRhLTk1Yzct"
. "ZDdhNTRjZjU5Yjc4IiBzdEV2dDp3aGVuPSIyMDIzLTA2LTIwVDIwOjI5OjE0KzAzOjAwIiBzdEV2dDpz"
. "b2Z0d2FyZUFnZW50PSJBZG9iZSBQaG90b3Nob3AgMjMuMCAoV2luZG93cykiLz4gPHJkZjpsaSBzdEV2"
. "dDphY3Rpb249InNhdmVkIiBzdEV2dDppbnN0YW5jZUlEPSJ4bXAuaWlkOmIxZDI4M2JiLTU0MmQtOWE0"
. "Yy1iOWQxLTdhODg2MjM2ODY3MyIgc3RFdnQ6d2hlbj0iMjAyMy0wNi0yMFQyMToxMDoxNiswMzowMCIg"
. "c3RFdnQ6c29mdHdhcmVBZ2VudD0iQWRvYmUgUGhvdG9zaG9wIDIzLjAgKFdpbmRvd3MpIiBzdEV2dDpj"
. "aGFuZ2VkPSIvIi8+IDxyZGY6bGkgc3RFdnQ6YWN0aW9uPSJzYXZlZCIgc3RFdnQ6aW5zdGFuY2VJRD0i"
. "eG1wLmlpZDo4MGIxMTUzZS00YzdhLTA4NGEtODM1Ny00YmVjYWM0ZGUxN2MiIHN0RXZ0OndoZW49IjIw"
. "MjMtMDYtMjBUMjE6MTA6MTYrMDM6MDAiIHN0RXZ0OnNvZnR3YXJlQWdlbnQ9IkFkb2JlIFBob3Rvc2hv"
. "cCAyMy4wIChXaW5kb3dzKSIgc3RFdnQ6Y2hhbmdlZD0iLyIvPiA8L3JkZjpTZXE+IDwveG1wTU06SGlz"
. "dG9yeT4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBl"
. "bmQ9InIiPz5wF6l/AAAIGElEQVRYw5WXe4xcZRnGf9/3nXPmtrM7u9vt7raltmUpWGjlUtqUhhYqSsNF"
. "BQ0kSFViJAaDIJoWLzH+04hAohgCjRgkSALRQIioBI2mFrSBQqWEBtpCAbvt3nd25z5zzve9/jGzl9lu"
. "KT3JyTlzbu/zPe/leUb94sl3GKmmg49KbT8CWaqEEEAaO4BMnTTOBe0rV9mvo8LDaA8EtIH3By03XerY"
. "/pU2SuWAV197jWx2lPb2Rfh+DyKWkZETZDJxli3rxVrwrJiWXBjsqDnzk0Bb3FSgWQCYc02UQmFuaLW1"
. "h7WLECCqQbe2rF0eJwpPfvdUm3c41/HjfBS/19cA+hO+pnFeImNz2TWEk28pL0b/QIVtn+9iy+pWxgoQ"
. "j3/CL2XD+FKFoJBpqudDP/uaEkGURyFYcIONpzleTtGzOMP1mxcwMmE5k037yhVm51nmBpT5wAhagZjk"
. "TaOHj1PpP87d12VIxDyKFUGpMwAgs3N7modnF6OyNSTZvmqw3LXqxo3trFmZZDgboTUopVBKYa0liiKs"
. "dTgnOCdEkcVaN1MDH0c186RkmiEnFGyM1Zd2/uCLV0Y/HJnANBaunHNYawmCgEQiQRD4eJ5CRJFIBCoI"
. "vIpzMiqi8OZbtWrs2TJMlFSdUoGOFiEVA9d4ydVqBB1dt1k9eJuvPTwfwFGtVqhUyvT19TWYk+njsmUr"
. "AJFazT5mrd3pzeVdK6hGMDCpWL1E2LYxYklGODig+de7mvGioiMpWIGWWMR72XYOnhjmkhVZ/HgXIoJz"
. "DhFBa90ILtMgQKEUCrjdGCUnpaAawUhBcccWy21XhA3SFZ9dE/HdqxXfeypg31HNgpZ6IRaqhqMTbVxS"
. "O0F2IkZ7phWlVBOQmRqqg6nfByDVlAKt4MSk4p7PRdxyeY0j/R4PvOSRKyvWLXesWeIYmlCkYlInTiDh"
. "OQ6OJLm6pKlQRAGZTCsKsPa0LVltSkG+qji3R7hlY8TQuOH2JwNy5Tqwlw/VH13YKiQCiPmCAtKxkI8m"
. "U/RP+pzV6SiVyvi+5qzeHgqlMrliCaNPPeCaGMgW4apVDrTwx30+g5PQ3QpfvsSyYaWlVFZYgYmi4ol/"
. "G2oR+J4wXIrx1lCGT/eM4uLt9A8Nc/9Tz7Pl0ov4wuVrGc/lp9tYoeotL/W6aAJgBWJ+/TxXAV9Drgwr"
. "u4W1KyyuqtCxOvXPvGbIV8AzkPAs+wfb+NIFE3SlEvQDu18/wLLuhfiJzSSqNcTVe19rTaUWUm20UlMR"
. "JgM4Nlbv5o0rHL972WNFxvH4K4b7XvRQwPN3VhEHo4UGWIG2wDFp0zzw3H50+AJVCVjW28Pr7xzhjp0P"
. "sbCjnTCyjE7kGM3l+NrWzWxdfyEj2UmaaqAjKew5rDlyzLB5dcT2axS/3eNxeFDRnhJ2XBPRmrb85h8B"
. "YwXF0o4p/bCMV2Isbz2frStakHg32mjK1SqxwOOve99kLF9m29ZNjOXzLOnqpFiuIMxJgdbgG9jxrM+u"
. "bwjf2hJy/RrLmx9ptqxyBAnH/vd9Htvj0dPaLF4uCkktuICzukNKtHD+2UswRmGM4ZFn/8bVGy7iuis3"
. "IrUy2VyRyUIRo1Wz/jqBnjbheFaxbVeMP+z18QxsXWMZyCke3+1z99M+KR/iXvNozsQi/pdP8ad9A3zn"
. "vl/z6sHDJDMd7HruJSJnuXbDRQwPDjA4NkG5WsUzutEFcyZhLYJFGSFXhp0veOza7RH3hXxFkStCd5uQ"
. "DCByNA0YTzsODTlu3LSZrZNH+P2Le4jHfJ7++yvcdfO1LO3p4oPjQ8TjMYIgmJmWc9VQqH88GYOlnULM"
. "CNZCOpD6b+/k4HUFUIhY3hoM2H7r9fiexz0PPcGNV6znhk3r6R8ew/MMURQRhiGqodmnnhANNJ6GwIDR"
. "c33izHyfutYRjzgwEOeND0N86jJcKFdAQSIWYJ2blukwDOsMMB8FMr8XnJomswPPNi5xY6noODuePEBS"
. "l/nV3d9k9xsHufeRp2hLJWlrSU6DmJJsrY32ToVhvhXLx/gGJ4pS2bF4+QZu3bqF9atW8uCdX2fv24f4"
. "/sNPICIkYgEiMpMCiwTGN41VqeZVSzPVJ7tl1WRaBDCuAsk+Qm8hhz44yrmfWsyj22/nlQPv8stn/kx7"
. "uqUJvPE7rxmLtaSvSKZT7S4Kpz81ZVTn8qGkcc9ZrA7QqQT4AcoPwAvwYz79Zc2SdJWLFxUYzkUs713I"
. "Z/qW07ugg47WFNGMSv7XO7Ln7T2VirvwvKsuu6cW6XZBPt4aCmgcNa8lihXH17n+E5eLl5hmyTOK8Q8d"
. "xzKK+MVxTKg4MZZldd9SrLVk80UC359RQ60cYsNcpRb+TFCIO401VVCWGAkTstbs7fzPweyojidRgDFw"
. "9HjI6sUeN6/rY6SQBiUYrRmfzDcAmjkOzBi0MeiGT1LqNLsIFWKsS77HZefasZ5zeveVVQovnWYgn+Ds"
. "lR3cv/M8Mp1JqpU61a6hhGqWX59iTJ/JnwiFUFRpeuU4bROHeHcoRToZPa6VYnjU0tqi+fmOXtpafcYn"
. "LEYLIu6kvp4Kboz2zwhAlThtXon13l6qYYl8PsvCtvJfylVHZIWf3tXNgs6AkTGL56lZTaVOGl5Ga8Ja"
. "aLwzWT9a0TtxkGKkKZpFaARr3bGFndF73/7qgr7zz4kxMBTiB7oRjHlTYIyiWKz+8+iHIw9+YgCiDXFb"
. "hMksx2wKqxWIIl8Q1q5O7lx/YWLT0GjktNZT3qt+aDjkWZKvbeRKk7nKrnwxevv/sZ0p2Ci1PVEAAAAA"
. "SUVORK5CYII="
Return Base64PNG
}
; โโโโโโโโโโโโ
Base64PNG_to_HICON(Base64PNG, W:=0, H:=0){
BLen:=StrLen(Base64PNG), Bin:=0, nBytes:=Floor(StrLen(RTrim(Base64PNG,"="))*3/4)
Return DllCall("Crypt32.dll\CryptStringToBinary", "Str",Base64PNG, "UInt",BLen, "UInt",1,"Ptr",&(Bin:=VarSetCapacity(Bin,nBytes)), "UIntP",nBytes, "UInt",0, "UInt",0)? DllCall("CreateIconFromResourceEx", "Ptr",&Bin, "UInt",nBytes, "Int",True, "UInt",0x30000, "Int",W, "Int",H, "UInt",0, "UPtr") : 0
}
Return
;โโโโโโโโโ Logo Icons Functions End โโโโโโโโโโ
;โฏโโโโโโโโโโโโ Reload/Exit Routine โโโโโโโโโโโโโฏ
WM_LBUTTONDOWN() { ; [PopUp Message Drag PT. 2]
PostMessage, 0x00A1, 2, 0
}
RETURN
; โฎโโโโ RELOAD โโโโ RELOAD โโโโ RELOAD โโโโโฎ
^Home:: ; (Ctrl + ([Home] times (# of TapCounts)))
if (A_TimeSincePriorHotkey > 250)
{
TapCount := 1
KeyWait, Esc
} else {
TapCount++
if (TapCount = 2) ; โฌ
โฌ
Set TapCount to # of key taps wanted.
{
Reload:
Gosub, IndicateDot1
Gui, Color, YELLOW ; โฌ
โฌ
IndicateDot Color.
Gosub, IndicateDot2
Reload
} else {
KeyWait, Esc
}
}
Return
; โฎโโโโโโ EXIT โโโโโโ EXIT โโโโโโ EXIT โโโโโโโฎ
^Esc:: ; (Ctrl + ([Esc] times (# of TapCounts)))
if (A_TimeSincePriorHotkey > 250)
{
TapCount := 1
KeyWait, Esc
} else {
TapCount++
if (TapCount = 3) ; โฌ
โฌ
Set TapCount to # of key taps wanted.
{
Exit:
Gosub, IndicateDot1
Gui, Color, RED ; โฌ
โฌ
IndicateDot Color.
Gosub, IndicateDot2
Gui, Destroy
ExitApp
} else {
KeyWait, Esc
}
}
Return
;โโโโโโโโโโ Reload/Exit Routine End โโโโโโโโ
;โฏโโโโโโโโโโโโโโโโโ Indicate Dots โโโโโโโโโโโโโโโโโโโฏ
; โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
IndicateDot1:
Gui, Destroy
SysGet, MonitorWorkArea, MonitorWorkArea
SysGet, TaskbarPos, 4
Gui, +AlwaysOnTop -Caption +hwndHGUI +LastFound
Return
; โโโโโโโโโโโ
IndicateDot2:
Gui, Margin, 13, 13 ; โฌ
โฌ
Dot Size.
Gui, Show, Hide
WinGetPos, , , WinWidth, WinHeight, ahk_id %HGUI%
NewX := MonitorWorkAreaRight - 80
NewY := MonitorWorkAreaBottom - WinHeight - 5
R := Min(WinWidth, WinHeight) // 1 ; โฌ
โฌ
Set value of cornering. (0.5=Oval, 0=square, 1= round, 5=rounded corners).
WinSet, Region, 0-0 W%WinWidth% H%WinHeight% R%R%-%R%
Gui, Show, x%NewX% y%NewY%
; SoundGet, master_volume
; SoundSet, 5
; Soundbeep, 2100, 75
; SoundSet, % master_volume
Sleep, 100
Gui, Destroy
Return
; โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
;โโโโโโโโโโโโโ Indicate Dots End โโโโโโโโโโโโโโ
;โฏโโโโโโโโโโโโโ Auto-Execute Sub โโโโโโโโโโโโโโฏ
AutoExecute:
#NoEnv ; Recommended for performance and future compatibility.
#Persistent ; Keeps a script permanently running until user closes it or ExitApp is encountered.
#SingleInstance, Force ; Determines whether a script is allowed to run again when it is already running.
DetectHiddenWindows, On
SetBatchLines, -1 ; Determines how fast script will run.
SetKeyDelay, 250 ; (Sets TapCount)
SetTitleMatchMode, 2
Menu, Tray, Icon, % "HICON:" . Base64PNG_to_HICON(TrayIcon())
RETURN
;โโโโโโโโโโ Auto-Execute Sub End โโโโโโโโโ
/*
____________________________________________________________
โโชปโโชกโซทโซทโซทโซทโซทโซท SCRIPT END โซธโซธโซธโซธโซธโซธโชขโโชผโ
โพโพโพโพโพโพโพโพโพโพโพโพโพโพโพโพโพโพโพโพโพโพโพโพโพโพโพโพโพโพโพโพโพโพโพโพโพโพโพโพโพโพโพโพโพโพโพโพโพโพโพโพโพโพโพโพโพโพโพโพ
*/
Re: AHK Fast Translator
In line 512, a function named URIEncode already gets defined. Parameters are different than in the second instance - haven't looked closer. Nevertheless, the second one would be a duplicate function definition. If they are different and you need both, you could rename one to URIEncode2 - but obviously you would need also to change the calls to that function...V0RT3X wrote: โ01 Sep 2023, 09:02viewtopic.php?f=6&t=63835#p273621. And now I have the issue of...
"Line Text: URIEncode(str, encoding := "UTF-8")"
"Error: Duplicate function definition."
Unfortunately I am only finding that mention once in the script.
Re: AHK Fast Translator
Thank you @gregster, the renaming did the trick.
Original idea was to click a button to allow for translating editable highlighted text, but realized a button would be pointless versus just simply hitting a hotkey when this script is active.
Other than some rearrangement, a couple add-ons, and color changes, no actual real changes have been done to @balawi28's original as it works perfect as is.
Original in English..............So unless this is translating incorrectly, I believe this is a wrap for me.
Translated to German..........Wenn dies also nicht falsch รผbersetzt wird, glaube ich, dass dies ein Wrap fรผr mich ist.
Translated back to English.....So unless this is mistranslated, I believe this is a wrap for me. <-- Slight alteration of original...
I would love for someone to test this and see if I broke anything this time and for those fluent in both English and German, if the translations are at least close to accurate.
Original idea was to click a button to allow for translating editable highlighted text, but realized a button would be pointless versus just simply hitting a hotkey when this script is active.
Other than some rearrangement, a couple add-ons, and color changes, no actual real changes have been done to @balawi28's original as it works perfect as is.
Original in English..............So unless this is translating incorrectly, I believe this is a wrap for me.
Translated to German..........Wenn dies also nicht falsch รผbersetzt wird, glaube ich, dass dies ein Wrap fรผr mich ist.
Translated back to English.....So unless this is mistranslated, I believe this is a wrap for me. <-- Slight alteration of original...
I would love for someone to test this and see if I broke anything this time and for those fluent in both English and German, if the translations are at least close to accurate.
Spoiler
Code: Select all
/*
โโโโโโโโโโโโโโโโ NOTES โโโโโโโโโโโโโโโโ
โขโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโข
โคโ โ โ โ โ โ โ Base Notes โ โ โ โ โ โ โ โ โ โ โ โ โ โ โ
ยป Refresh Script โโโโ Ctrl + HOME key rapidly clicked 2 times. (# TapCounts)
ยป Exit Script โโโโโโโโ Ctrl + Escape key rapidly clicked 3 times. (# TapCounts)
ยป Script Updater: Auto-reload script upon saved changes.
โ If you make any changes to the script file and save it, the script will automatically reload itself and continue running without manual intervention.
โขโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโข
โคโ โ โ โ โ โ โ Script Specific Notes โ โ โ โ โ โ โ โ
ยป SOURCE : https://github.com/balawi28/AHKFastTranslator
โขโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโข
โค Further notes at bottom of scriptโโโโโโโ Yes: No: โ
โโโโโโโโโโโโโโโ NOTES END โโโโโโโโโโโโโโโ
*/
;โฏโโโโโโโโโโโโโ Auto-Execute โโโโโโโโโโโโโโฏ
Gosub, AutoExecute
;โโโโโโโโโโโ Auto-Execute End โโโโโโโโโโโโ
;โฏโโโโโโโโโโโโโ Globals โโโโโโโโโโโโโโฏ
global Minimized := True
dict := GetLanguagesDict()
menuOptions := Join(dict, "|")
;โโโโโโโโโโโ Globals End โโโโโโโโโโโโ
;โฏโโโโโโโโโโโโโ INI Reads โโโโโโโโโโโโโโฏ
IniRead, defaultSourceLanguage, %A_ScriptFullPath%:Stream:$DATA, Settings, defaultSourceLanguage, Auto-Detect โข
IniRead, defaultTargetLanguage, %A_ScriptFullPath%:Stream:$DATA, Settings, defaultTargetLanguage, English
IniRead, hotKeyPrevious, %A_ScriptFullPath%:Stream:$DATA, Settings, hotKeyPrevious, ^+t
IniRead, isRanAtStartup, %A_ScriptFullPath%:Stream:$DATA, Settings, isRanAtStartup, 0
IniRead, outputMethod, %A_ScriptFullPath%:Stream:$DATA, Settings, outputMethod, tooltip
IniRead, EnableClipboard, %A_ScriptFullPath%:Stream:$DATA, Settings, EnableClipboard, 0
;โโโโโโโโโโโ INI Reads End โโโโโโโโโโโโ
;โฏโโโโโโโโโโโโโ Initializers โโโโโโโโโโโโโโฏ
; โโฎ Hotkey
if (StrLen(hotKeyPrevious) != 0)
Hotkey, %hotKeyPrevious%, HotkeyPressed
; โโฎ Source & Target Languages
sourceIndex := FindLanguageIndex(dict, defaultSourceLanguage)
targetIndex := FindLanguageIndex(dict, defaultTargetLanguage)
;โโโโโโโโโโโโ Initializers End โโโโโโโโโโโโ
;โฏโโโโโโโโโโโโโ Tray Menu โโโโโโโโโโโโโโฏ
; โโฎ Tray menu
Menu, Tray, NoStandard ; Remove all standard tray menu options
Menu, Tray, Add, GUI, HotkeyPressed
Menu, Tray, Add, Run at Startup, StartupToggle
Menu, Tray, Add, Exit, ExitApplication
Menu, Tray, Icon, Exit, Shell32.dll, 132
Menu, Tray, Default, GUI
if (isRanAtStartup)
Menu, Tray, Check, Run at Startup
;โโโโโโโโโโโโ Tray Menu End โโโโโโโโโโโโ
;โฏโโโโโโโโโโโโโ Gui Layout โโโโโโโโโโโโโโฏ
; โขโโโโ Transparacies Section โโโโโข
Gui, Color, 000101
Gui +LastFound
WinSet, TransColor, 000101
; โโโโ
Gui, Font, s20 q5 BOLD, Segoe UI
Gui, Add, Text, x8 y7 w360 c011167 BackgroundTrans CENTER, - TRANSLATOR -
Gui, Font, BOLD,
Gui, Add, Text, x9 y6 w360 c3981F3 BackgroundTrans CENTER, - TRANSLATOR -
Gui, Font, NORM,
Gui, Add, Text, x130 y5 w120 h23 c011167 BackgroundTrans HwndhText gDUMMY,
AttachTip(hText, "Google Translate")
Gui, Font, BOLD,
Gui, Add, Text, x10 y5 w360 c000101 BackgroundTrans CENTER, - TRANSLATOR -
; โโโโ
Gui, Font, s20 q5 BOLD, Segoe UI
Gui, Add, Text, x0 y238 w380 c011167 BackgroundTrans CENTER, __________________________________ ; Bottom
Gui, Add, Text, x0 y237 w380 c3981F3 BackgroundTrans CENTER, __________________________________ ; Deco
Gui, Add, Text, x0 y236 w380 c000101 BackgroundTrans CENTER, __________________________________ ; Bar
; โโโโโโโโโโโโ
Gui, Add, Picture, x178 y69 w23 h16 gSwapLanguages, % "HICON:" . Base64PNG_to_HICON(SwapIcon())
; โขโโโโ Transparacies Section End โโโโโข
Gui,
+AlwaysOnTop
+Border
-Caption
+LastFound
+OwnDialogs
+ToolWindow
Gui, Color, 3981F3
Gui, Margin, 10, 10
Gui, Font, s10 w200 c011167 q5, ARIAL
; โขโโโโ Top Gui Row Section โโโโโข
Gui, Add, Picture, x10 y10 w32 h32, % "HICON:" . Base64PNG_to_HICON(GoogleTranslateLogo())
Gui, Add, Text, x5 y5 w32 h30 w30 BackgroundTrans HwndhText gDUMMY,
AttachTip(hText, "Google Translate")
; โโโโ
Gui, Font, s10 c1A3FE8 q5 BOLD
Gui, Add, Text, x325 y3 BackgroundTrans, | | | |
; โโโโ
Gui, Font, s8 c659CF6 q5 BOLD
Gui, Add, Text, x330 y5 c011167 BackgroundTrans, ?
Gui, Add, Text, x325 y5 w15 BackgroundTrans HwndhText gABOUTS,
AttachTip(hText, "ABOUT")
; โโโโ
Gui, Font, s18 q5 NORM
Gui, Add, Text, x344 y5 cFCFCFC BackgroundTrans, *
Gui, Add, Text, x340 y-1 w10 BackgroundTrans HwndhText gReload,
AttachTip(hText, "RELOAD")
; โโโโ
Gui, Font, s8 c659CF6 q5 BOLD
Gui, Add, Text, x361 y5 cB20000 BackgroundTrans, X
Gui, Add, Text, x357 y5 w15 BackgroundTrans HwndhText gExit,
AttachTip(hText, "EXIT")
; โขโโโโ Top Gui Row Section End โโโโโข
; โขโโโโ Language Selection Row Section โโโโโข
Gui, Font, s8 w200 c011167 q5 UNDERLINE, ARIAL
Gui, Add, Text, x30 y45 w360 BackgroundTrans, Select Input Language
Gui, Font, s10 w200 c011167 q5 NORM, ARIAL
Gui, Add, DropDownList, x20 y65 w150 choose%sourceIndex% vSourceLang gOnSourceLangChange, %menuOptions%
; โโโโ
Gui, Font, s8 w200 c011167 q5 UNDERLINE, ARIAL
Gui, Add, Text, x220 y45 w150 BackgroundTrans, Select Output Language
Gui, Font, s10 w200 c011167 q5 NORM, ARIAL
Gui, Add, DropDownList, x210 y65 w150 choose%targetInde`x% vTargetLang gOnTargetLangChange, %menuOptions%
; โขโโโโ Language Selection Row Section End โโโโโข
; โขโโโโ Selections Box Section โโโโโข
Gui, Font, s8 w200 c011167 q5 UNDERLINE, ARIAL
Gui, Add, Text, x5 y98 w186 h60 BackgroundTrans 0x00800000,
Gui, Add, Text, x35 y108 BackgroundTrans, Select Display Style
Gui, Font, s10 w200 c011167 q5 NORM, TAHOMA
Gui, Add, Radio, x15 y129 vChoiceMsgBox gRadioChoice, Message Box
Gui, Add, Radio, x120 y129 vChoiceToolTip gRadioChoice, Tooltip
GuiControl,, % outputMethod = "tooltip" ? "ChoiceToolTip" : "ChoiceMsgBox", 1
; โโโโ
Gui, Font, s8 w200 c011167 q5 UNDERLINE, ARIAL
Gui, Add, Text, x190 y98 w186 h60 BackgroundTrans 0x00800000,
Gui, Add, Text, x220 y108 w185 h60 BackgroundTrans, Set Interface Hotkey
Gui, Font, s8 w200 c011167 q5 NORM, ARIAL
Gui, Add, Hotkey, x202 y128 w120 h17 vhotKeyCurrent
GuiControl,, hotKeyCurrent, %hotKeyPrevious%
Gui, Font, s8 w200 q5, TAHOMA
Gui Add, Button, x325 y128 w40 h17, Save
; โขโโโโ Selections Box Section End โโโโโข
; โขโโโโ Translations Section โโโโโข
Gui, Font, s8 w800 c1A3FE8 q5 ITALIC, CALIBRI
Gui, Add, Text, x10 y163 w360 CENTER, Translated text will appear in Clipboard and Prefered Display Style.
; โโโโ
Gui, Font, s8 w200 c011167 q5 NORM, ARIAL
Gui, Add, Edit, x15 y175 w350 BackgroundTrans vTextToTranslate
; โขโโโโ Translations Section End โโโโโข
; โขโโโโ Output Choices Section โโโโโข
Gui, Add, Text, x262 y200 w95 h60 BackgroundTrans 0x00800000,
Gui, Add, CheckBox, x310 y238 vEnableClipboard gCheckBox,
Gui, Font, s8 w200 c011167 q5 UNDERLINE, ARIAL
Gui, Add, Text, x267 y205 BackgroundTrans CENTER, Copy Translation`nTo Clipboard%A_SPACE%
Gui, Font, s8 w200 c011167 q5 NORM, ARIAL
GuiControl,,EnableClipboard,%EnableClipboard%
; โโโโโโโโโโโโ
Gui, Font, s8 w200 c011167 q5, ARIAL
Gui, Add, Text, x20 y200 w108 h60 BackgroundTrans 0x00800000,
Gui, Add, Button, x100 y223 h13 w20 BackgroundTrans gPASTE1, โข
Gui, Add, Button, x100 y240 h13 w20 BackgroundTrans gPASTE2, โข
Gui, Font, s8 w200 c011167 q5 UNDERLINE, ARIAL
Gui, Add, Text, x25 y205 BackgroundTrans, %A_SPACE%Paste Clipboard%A_SPACE%
Gui, Font, s8 w200 c011167 q5 NORM, ARIAL
Gui, Add, Text, x30 y223 BackgroundTrans, To Notepad
Gui, Add, Text, x30 y240 BackgroundTrans, To Notepad++
; โโโโโโโโโโโโ
Gui, Font, s8 w200 c011167 q5, ARIAL
Gui, Add, Text, x165 y210 w65 h40 BackgroundTrans 0x00800000,
Gui, Font, s8 w200 c1A3FE8 q5 UNDERLINE, ARIAL
Gui, Add, Text, x170 y215 BackgroundTrans CENTER HwndhText gINLINE, For Inline`nTranslation
AttachTip(hText, "Click for Instructions on Translating Highlighted and Editable Text")
Gui, Font, s8 w200 c011167 q5 NORM, ARIAL
; โขโโโโ Output Choices Section End โโโโโข
;โโโโโโโโโโโโ Gui Layout End โโโโโโโโโโโโ
;โฏโโโโโโโโ Drag & Memory Control Functions โโโโโโโโโฏ
; โโฎ Define the callback function to handle the WM_MOVE message
OnMessage(0x0232, "OnDragRelease")
; โโโโโโโโโโโโ
; โโฎ To enable drag on the main window
enableGuiDrag()
Return
; โโโโโโโโโโโโ
; โโฎ Define the MouseUp function to get the new x and y coordinates.
OnDragRelease(wParam, lParam, msg, hwnd)
{
WinGetPos, WinX, WinY, , , ahk_id %hwnd%
IniWrite, %WinX%, %A_ScriptFullPath%:Stream:$DATA, Settings, defaultXPosition
IniWrite, %WinY%, %A_ScriptFullPath%:Stream:$DATA, Settings, defaultYPosition
}
; โโโโโโโโโโโโ
enableGuiDrag(GuiLabel=1) {
WinGetPos,,,A_w,A_h,A
Gui, %GuiLabel%:Add, Text, x0 y0 w%A_w% h%A_h% +BackgroundTrans gGUI_Drag
Return
; โโโโโโโโโโโโ
GUI_Drag:
SendMessage 0xA1,2 ; โโฎ Goyyah/SKAN trick
; โโฎ http://autohotkey.com/board/topic/80594-how-to-enable-drag-for-a-gui-without-a-titlebar
Return
}
;โโโโโโ Drag & Memory Control Functions End โโโโโโ
;โฏโโโโโโโโโโโ Attach Tooltip Function โโโโโโโโโโโโฏ
AttachTip(hCtrl, text:="")
{
hGui := text!="" ? DlLCall("GetParent", "Ptr", hCtrl) : hCtrl
static hTip
if !hTip
{
hTip := DllCall("CreateWindowEx", "UInt", 0x8, "Str", "tooltips_class32"
, "Ptr", 0, "UInt", 0x80000002 ;// WS_POPUP:=0x80000000|TTS_NOPREFIX:=0x02
, "Int", 0x80000000, "Int", 0x80000000, "Int", 0x80000000, "Int", 0x80000000
, "Ptr", hGui, "Ptr", 0, "Ptr", 0, "Ptr", 0, "Ptr")
; TTM_SETMAXTIPWIDTH = 0x0418
DllCall("SendMessage", "Ptr", hTip, "Int", 0x0418, "Ptr", 0, "Ptr", 0)
if (A_OsVersion == "WIN_XP")
AttachTip(hGui)
}
static sizeof_TOOLINFO := 24 + (6 * A_PtrSize)
VarSetCapacity(TOOLINFO, sizeof_TOOLINFO, 0)
, NumPut(sizeof_TOOLINFO, TOOLINFO, 0, "UInt")
, NumPut(0x11, TOOLINFO, 4, "UInt") ; TTF_IDISHWND:=0x0001|TTF_SUBCLASS:=0x0010
, NumPut(hGui, TOOLINFO, 8, "Ptr")
, NumPut(hCtrl, TOOLINFO, 8 + A_PtrSize, "Ptr")
, NumPut(&text, TOOLINFO, 24 + (3 * A_PtrSize), "Ptr")
static TTM_ADDTOOL := A_IsUnicode ? 0x0432 : 0x0404
return DllCall("SendMessage", "Ptr", hTip, "Int", TTM_ADDTOOL, "Ptr", 0, "Ptr", &TOOLINFO)
}
;โโโโโโโ Attach Tooltip Function End โโโโโโโโ
;โฏโโโโโโโโโโ PopUp Message Function โโโโโโโโโโโฏ
PMess(ttitle, ttext, textColor := "BLACK", bkg := "WHITE") { ; <<- Default Text and Background Colors.
Gui, Box:New, , %ttitle% ; EXAMPLE : PMess("Title", "Text", "Text-Color", "Text-Background")
Gui,
+AlwaysOnTop
-Border
-Caption
Gui, Margin, 10, 10
Gui, Font, s10 c%textColor%
Gui, Color, %bkg%
Gui, Add, Text, , %ttext%
; Gui, Show ; โฎโโ Section blocked to allow varying PMess display times.
; Sleep, 3000
; Gui, Destroy
Return
}
;โโโโโโโ PopUp Message Function End โโโโโโโโ
;โฏโโโโโโโโโโโโโโโ #IfWinActive โโโโโโโโโโโโโโโโฏ
#IfWinActive, TRANSLATOR ahk_class AutoHotkeyGUI
Esc::
Goto, GuiClose
Return
NumpadEnter::
Enter::
Gui, Submit
GuiControl, , TextToTranslate
Minimized := True
url := TranslateURL(dict[SourceLang], dict[TargetLang], TextToTranslate)
response := PostRequest(url)
cleanResponse := SubStr(response, 3, StrLen(response) - 4)
if (SourceLang = "Auto-Detect โข")
cleanResponse := SubStr(cleanResponse, 2, StrLen(cleanResponse) - 7)
if (EnableClipboard)
Clipboard := cleanResponse
if (outputMethod = "tooltip"){
ToolTip % cleanResponse
Sleep, 2000 ; Display the tooltip for 2 seconds
ToolTip ; Remove the tooltip
} else
MsgBox, 0x40000,, % cleanResponse
Return
#IfWinActive
;โโโโโโโโโโโโโโ #IfWinActive End โโโโโโโโโโโโโโโ
;โฏโโโโโโโโโโโโโโโ gLabels โโโโโโโโโโโโโโโโฏ
CheckBox:
Gui, Submit, NoHide
IniWrite, %EnableClipboard%, %A_ScriptFullPath%:Stream:$DATA, Settings,EnableClipboard
Return
; โโโโโโโโโโโโ
ButtonSave: ; Save hotkey routine.
Gui, Submit, NoHide
if (StrLen(hotKeyPrevious) != 0 and hotKeyPrevious != hotKeyCurrent){
Hotkey, %hotKeyPrevious%, Off
}
if (StrLen(hotKeyCurrent) != 0){
Hotkey, %hotKeyCurrent%, On, UseErrorLevel
Hotkey, %hotKeyCurrent%, HotkeyPressed
}
IniWrite, %hotKeyCurrent%, %A_ScriptFullPath%:Stream:$DATA, Settings,hotKeyPrevious
hotKeyPrevious := hotKeyCurrent
PMess("Pop Message #1", "Hotkey Saved Successfully", "3981F3", "011167")
Gui, Show
OnMessage(0x0201, "WM_LBUTTONDOWN") ; [PopUp Message Drag PT. 1]
Sleep, 1500
Gui, Destroy
Return
; โโโโโโโโโโโโ
ABOUTS:
PMess("About", "โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ`n Original Author : balawi28`nhttps://github.com/balawi28/AHKFastTranslator`n โ โ โ โ โ โ โ โ โ`nHow to Use : `n 1. Select Input/Output Languages`n 2. Select Display Style`n 3. Set Interface Hotkey`n 4. Paste in Text to Translate`n 5. Translation will appear Display and Cliboard`nโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ", "3981F3", "011167")
Gui, Show
OnMessage(0x0201, "WM_LBUTTONDOWN") ; [PopUp Message Drag PT. 1]
Sleep, 7000
Gui, Destroy
Return
; โโโโโโโโโโโโ
PASTE1:
IfWinExist, ahk_class Notepad
{
WinActivate ahk_class Notepad
Send ^v`n
}
else
{
IfWinNotExist, ahk_class Notepad
Run, C:\windows\system32\notepad.exe
WinActivate ahk_class Notepad
WinWaitActive ahk_class Notepad
Send ^v`n
}
Return
; โโโโ
PASTE2:
IfWinExist ahk_class Notepad++
{
WinActivate
WinWaitActive
Send ^n ; open new tab
Send `n^v`n
}
Else {
Run %A_ProgramFiles%\Notepad++\notepad++.exe
WinActivate ahk_class Notepad++
WinWaitActive ahk_class Notepad++
; empty tab already opened, we don't need to do this
Send `n^v`n
}
Return
; โโโโโโโโโโโโ
INLINE:
PMess("Pop Message #1", "1. Highlighted Editable Text`n2. Press Ctrl+Alt+H`n3. Converts to 'English'`n`nChange to needed language inside script", "3981F3", "011167")
Gui, Show
OnMessage(0x0201, "WM_LBUTTONDOWN") ; [PopUp Message Drag PT. 1]
Sleep, 5000
Gui, Destroy
Return
; โโโโโโโโโโโโ
DUMMY:
Sleep, 10
Return
; โโโโโโโโโโโโ
GuiClose:
GuiControl, , TextToTranslate
Minimized := True
Gui, Cancel
Return
; โโโโโโโโโโโโ
RadioChoice:
gui, submit, nohide
outputMethod := ChoiceToolTip ? "tooltip" : "msgbox"
IniWrite, %outputMethod%, %A_ScriptFullPath%:Stream:$DATA, Settings,outputMethod
Return
; โโโโโโโโโโโโ
HotkeyPressed:
if(Minimized){
IniRead, defaultXPosition, %A_ScriptFullPath%:Stream:$DATA, Settings, defaultXPosition,Center
IniRead, defaultYPosition, %A_ScriptFullPath%:Stream:$DATA, Settings, defaultYPosition,Center
Gui, Show, x%defaultXPosition% y%defaultYPosition% w380 h275, TRANSLATOR
GuiControl, Focus, TextToTranslate
}else{
Goto, GuiClose
}
Minimized := ! Minimized
Return
; โโโโโโโโโโโโ
StartupToggle:
isRanAtStartup := !isRanAtStartup
Menu, Tray, ToggleCheck, Run at Startup
if(isRanAtStartup)
FileCreateShortcut,%A_ScriptFullPath%,%A_AppData%\Microsoft\Windows\Start Menu\Programs\Startup\TrayAudioAnalyzer.lnk,%A_ScriptDir%
else
FileDelete, %A_AppData%\Microsoft\Windows\Start Menu\Programs\Startup\TrayAudioAnalyzer.lnk
IniWrite, %isRanAtStartup%, %A_ScriptFullPath%:Stream:$DATA, Settings, isRanAtStartup
Return
;โโโโโโโโโโโโโโ gLabels End โโโโโโโโโโโโโโโ
;โฏโโโโโโโโโโโโโโโ InLine Translations โโโโโโโโโโโโโโโโฏ (Convert Editable Highlighted Text)
^!H::
WinActivate % "ahk_id" hWnd
ClipSave := ClipboardAll
Clipboard := ""
Send, {Ctrl down}c{Ctrl up}
ClipWait, 1
if ErrorLevel
Return
Clipboard := GoogleTranslate(Clipboard, "auto", "en") ; ๐กฐ ๐กฐ Change the 'en' (Clipboard, "auto", "en") to prefered base language ๐กฐ ๐กฐ
Send, {Ctrl down}v{Ctrl up}
Sleep, 500
Clipboard := ClipSave
Return
;โโโโโโโโโโโโโ InLine Translations End โโโโโโโโโโโโโโ
;โฏโโโโโโโโโโโโโโโ Misc Functions โโโโโโโโโโโโโโโโฏ
ExitApplication(){
ExitApp
Exit
}
; โโโโโโโโโโโโ
PostRequest(url){
response := ComObjCreate("WinHttp.WinHttpRequest.5.1")
response.Open("POST", url, false)
response.Send()
Return response.ResponseText
}
; โโโโโโโโโโโโ
TranslateURL(sourceLang, targetLang, textToTranslate)
{
baseUrl := "http://translate.google.com/translate_a/t?"
params := []
params["sl"] := sourceLang
params["tl"] := targetLang
params["uptl"] := targetLang
params["q"] := UriEncode(textToTranslate)
params["client"] := "p"
params["hl"] := "en"
params["sc"] := "2"
params["ie"] := "UTF-8"
params["oe"] := "UTF-8"
params["oc"] := "1"
params["prev"] := "conf"
params["psl"] := "auto"
params["ptl"] := "en"
params["otf"] := "1"
params["it"] := "sel.8936"
params["ssel"] := "0"
params["tsel"] := "3"
Return baseUrl . EncodeParams(params)
}
; โโโโโโโโโโโโ
Join(dict, delim) {
result := ""
for key in dict
{
if (result != "")
result .= delim
result .= key
}
Return result
}
; โโโโโโโโโโโโ
FindLanguageIndex(dict, language) {
index := 1
for key, value in dict
{
if (key == language)
Return index
index += 1
}
Return -1 ; Language not found, Return -1
}
; โโโโโโโโโโโโ
OnSourceLangChange() {
GuiControlGet, selectedSourceLang, , SourceLang
IniWrite, %selectedSourceLang%, %A_ScriptFullPath%:Stream:$DATA, Settings, defaultSourceLanguage
}
; โโโโโโโโโโโโ
OnTargetLangChange() {
GuiControlGet, selectedTargetLang, , TargetLang
IniWrite, %selectedTargetLang%, %A_ScriptFullPath%:Stream:$DATA, Settings, defaultTargetLanguage
}
; โโโโโโโโโโโโ
SwapLanguages(){
GuiControlGet, selectedTargetLang, , TargetLang
GuiControlGet, selectedSourceLang, , SourceLang
temp := selectedSourceLang
GuiControl, Choose, SourceLang, %selectedTargetLang%
GuiControl, Choose, TargetLang, %temp%
IniWrite, %selectedTargetLang%, %A_ScriptFullPath%:Stream:$DATA, Settings, defaultSourceLanguage
IniWrite, %temp%, %A_ScriptFullPath%:Stream:$DATA, Settings, defaultTargetLanguage
}
; โโโโโโโโโโโโ
EncodeParams(params)
{
encodedParams := ""
for key, value in params
{
encodedKey := key
encodedValue := value
encodedParams .= (encodedParams = "") ? encodedKey . "=" . encodedValue : "&" . encodedKey . "=" . encodedValue
}
Return encodedParams
}
; โโโโโโโโโโโโ
; UriEncode function is written by the-Automator : URIEncode - URIEncode - URIEncode
; https://www.the-automator.com/parse-url-parameters/
UriEncode(Uri, RE="[0-9A-Za-z]")
{
VarSetCapacity(Var, StrPut(Uri, "UTF-8"), 0)
StrPut(Uri, &Var, "UTF-8")
While Code := NumGet(Var, A_Index-1, "UChar")
{
Res .= (Chr := Chr(Code)) ~= RE ? Chr : Format("%{:02X}", Code)
}
Return Res
}
;โโโโโโโโโโโโโโ Misc Functions End โโโโโโโโโโโโโโโ
;โฏโโโโโโโโ Get Language Dictionaries Function โโโโโโโโโฏ
GetLanguagesDict(){
global dict
if !dict {
dict := {}
dict["Auto-Detect โข"] := "auto"
dict["Afrikaans"] := "af"
dict["Albanian"] := "sq"
dict["Amharic"] := "am"
dict["Arabic"] := "ar"
dict["Armenian"] := "hy"
dict["Assamese"] := "as"
dict["Aymara"] := "ay"
dict["Azerbaijani"] := "az"
dict["Bambara"] := "bm"
dict["Basque"] := "eu"
dict["Belarusian"] := "be"
dict["Bengali"] := "bn"
dict["Bhojpuri"] := "bho"
dict["Bosnian"] := "bs"
dict["Bulgarian"] := "bg"
dict["Catalan"] := "ca"
dict["Cebuano"] := "ceb"
dict["Chinese (Simplified)"] := "zh-CN"
dict["Chinese (Traditional)"] := "zh-TW"
dict["Corsican"] := "co"
dict["Croatian"] := "hr"
dict["Czech"] := "cs"
dict["Danish"] := "da"
dict["Dhivehi"] := "dv"
dict["Dogri"] := "doi"
dict["Dutch"] := "nl"
dict["English"] := "en"
dict["Esperanto"] := "eo"
dict["Estonian"] := "et"
dict["Ewe"] := "ee"
dict["Filipino (Tagalog)"] := "fil"
dict["Finnish"] := "fi"
dict["French"] := "fr"
dict["Frisian"] := "fy"
dict["Galician"] := "gl"
dict["Georgian"] := "ka"
dict["German"] := "de"
dict["Greek"] := "el"
dict["Guarani"] := "gn"
dict["Gujarati"] := "gu"
dict["Haitian Creole"] := "ht"
dict["Hausa"] := "ha"
dict["Hawaiian"] := "haw"
dict["Hebrew"] := "he"
dict["Hindi"] := "hi"
dict["Hmong"] := "hmn"
dict["Hungarian"] := "hu"
dict["Icelandic"] := "is"
dict["Igbo"] := "ig"
dict["Ilocano"] := "ilo"
dict["Indonesian"] := "id"
dict["Irish"] := "ga"
dict["Italian"] := "it"
dict["Japanese"] := "ja"
dict["Javanese"] := "jv"
dict["Kannada"] := "kn"
dict["Kazakh"] := "kk"
dict["Khmer"] := "km"
dict["Kinyarwanda"] := "rw"
dict["Konkani"] := "gom"
dict["Korean"] := "ko"
dict["Krio"] := "kri"
dict["Kurdish"] := "ku"
dict["Kurdish (Sorani)"] := "ckb"
dict["Kyrgyz"] := "ky"
dict["Lao"] := "lo"
dict["Latin"] := "la"
dict["Latvian"] := "lv"
dict["Lingala"] := "ln"
dict["Lithuanian"] := "lt"
dict["Luganda"] := "lg"
dict["Luxembourgish"] := "lb"
dict["Macedonian"] := "mk"
dict["Maithili"] := "mai"
dict["Malagasy"] := "mg"
dict["Malay"] := "ms"
dict["Malayalam"] := "ml"
dict["Maltese"] := "mt"
dict["Maori"] := "mi"
dict["Marathi"] := "mr"
dict["Meiteilon (Manipuri)"] := "mni-Mtei"
dict["Mizo"] := "lus"
dict["Mongolian"] := "mn"
dict["Myanmar (Burmese)"] := "my"
dict["Nepali"] := "ne"
dict["Norwegian"] := "no"
dict["Nyanja (Chichewa)"] := "ny"
dict["Odia (Oriya)"] := "or"
dict["Oromo"] := "om"
dict["Pashto"] := "ps"
dict["Persian"] := "fa"
dict["Polish"] := "pl"
dict["Portuguese"] := "pt"
dict["Punjabi"] := "pa"
dict["Quechua"] := "qu"
dict["Romanian"] := "ru"
dict["Samoan"] := "sm"
dict["Sanskrit"] := "sa"
dict["Scots Gaelic"] := "gd"
dict["Sepedi"] := "nso"
dict["Serbian"] := "sr"
dict["Sesotho"] := "st"
dict["Shona"] := "sn"
dict["Sindhi"] := "sd"
dict["Sinhala (Sinhalese)"] := "si"
dict["Slovak"] := "sk"
dict["Slovenian"] := "sl"
dict["Somali"] := "so"
dict["Spanish"] := "es"
dict["Sundanese"] := "su"
dict["Swahili"] := "sw"
dict["Swedish"] := "sv"
dict["Tagalog (Filipino)"] := "tl"
dict["Tajik"] := "tg"
dict["Tamil"] := "ta"
dict["Tatar"] := "tt"
dict["Telugu"] := "te"
dict["Thai"] := "th"
dict["Tigrinya"] := "ti"
dict["Tsonga"] := "ts"
dict["Turkish"] := "tr"
dict["Turkmen"] := "tk"
dict["Twi (Akan)"] := "ak"
dict["Ukrainian"] := "uk"
dict["Urdu"] := "ur"
dict["Uyghur"] := "ug"
dict["Uzbek"] := "uz"
dict["Vietnamese"] := "vi"
dict["Welsh"] := "cy"
dict["Xhosa"] := "xh"
dict["Yiddish"] := "yi"
dict["Yoruba"] := "yo"
dict["Zulu"] := "zu"
}
Return dict
}
;โโโโโโ Get Language Dictionaries Function End โโโโโโ
;โฏโโโโโโโโโโโโ Logo Icons Functions โโโโโโโโโโโโโฏ
SwapIcon(){
Base64PNG := ""
. "iVBORw0KGgoAAAANSUhEUgAAACAAAAAVCAYAAAAnzezqAAAACXBIWXMAAA3XAAAN1wFCKJt4AAAFyWlU"
. "WHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhp"
. "SHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0"
. "az0iQWRvYmUgWE1QIENvcmUgNy4xLWMwMDAgNzkuYTg3MzFiOSwgMjAyMS8wOS8wOS0wMDozNzozOCAg"
. "ICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJk"
. "Zi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRw"
. "Oi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczpkYz0iaHR0cDovL3B1cmwub3JnL2RjL2VsZW1l"
. "bnRzLzEuMS8iIHhtbG5zOnBob3Rvc2hvcD0iaHR0cDovL25zLmFkb2JlLmNvbS9waG90b3Nob3AvMS4w"
. "LyIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0RXZ0"
. "PSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VFdmVudCMiIHhtcDpDcmVh"
. "dG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIDIzLjAgKFdpbmRvd3MpIiB4bXA6Q3JlYXRlRGF0ZT0iMjAy"
. "My0wNi0zMFQwMjowMToyNSswMzowMCIgeG1wOk1vZGlmeURhdGU9IjIwMjMtMDYtMzBUMDI6MjM6MzUr"
. "MDM6MDAiIHhtcDpNZXRhZGF0YURhdGU9IjIwMjMtMDYtMzBUMDI6MjM6MzUrMDM6MDAiIGRjOmZvcm1h"
. "dD0iaW1hZ2UvcG5nIiBwaG90b3Nob3A6Q29sb3JNb2RlPSIzIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAu"
. "aWlkOjU5NjQ4M2ExLTBiYmQtM2M0Yi05YzMyLWEwZjE5NTRhYzdjNyIgeG1wTU06RG9jdW1lbnRJRD0i"
. "YWRvYmU6ZG9jaWQ6cGhvdG9zaG9wOmU1OWJmZTNjLWQ3ZjYtNzM0YS1hNjY3LWQzOWI1NmMxMmZmYSIg"
. "eG1wTU06T3JpZ2luYWxEb2N1bWVudElEPSJ4bXAuZGlkOmQwYmVhNDVkLTU0MTgtMTU0ZS1hNGQ1LTY4"
. "N2UwZDYxODhiMiI+IDx4bXBNTTpIaXN0b3J5PiA8cmRmOlNlcT4gPHJkZjpsaSBzdEV2dDphY3Rpb249"
. "ImNyZWF0ZWQiIHN0RXZ0Omluc3RhbmNlSUQ9InhtcC5paWQ6ZDBiZWE0NWQtNTQxOC0xNTRlLWE0ZDUt"
. "Njg3ZTBkNjE4OGIyIiBzdEV2dDp3aGVuPSIyMDIzLTA2LTMwVDAyOjAxOjI1KzAzOjAwIiBzdEV2dDpz"
. "b2Z0d2FyZUFnZW50PSJBZG9iZSBQaG90b3Nob3AgMjMuMCAoV2luZG93cykiLz4gPHJkZjpsaSBzdEV2"
. "dDphY3Rpb249InNhdmVkIiBzdEV2dDppbnN0YW5jZUlEPSJ4bXAuaWlkOjU5NjQ4M2ExLTBiYmQtM2M0"
. "Yi05YzMyLWEwZjE5NTRhYzdjNyIgc3RFdnQ6d2hlbj0iMjAyMy0wNi0zMFQwMjoyMzozNSswMzowMCIg"
. "c3RFdnQ6c29mdHdhcmVBZ2VudD0iQWRvYmUgUGhvdG9zaG9wIDIzLjAgKFdpbmRvd3MpIiBzdEV2dDpj"
. "aGFuZ2VkPSIvIi8+IDwvcmRmOlNlcT4gPC94bXBNTTpIaXN0b3J5PiA8L3JkZjpEZXNjcmlwdGlvbj4g"
. "PC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PmOrIjcAAAEfSURBVEgNY2DA"
. "DhKA+D8QL2YYAJAEtRyEXwAx20BZDsKZ9LQ8G83yOHpano9muQM9Lc9Ds/wxEPcA8Vog3gLEm0jAR4B4"
. "AhAzkuKAF2gOoAb2IcUB09E0PwXinUB8F4jvAPFtEvAbID4MxEJI5nMBsRQhR8xEcsBvIDamYhTvg5pb"
. "TYojvgKxFhUsZwXi50jm1hLSMAEtOuyo4Ah3NDPbCGnoRlL8DIhZqOAIKzRHdBPS0AlVeIqKacEMiP+S"
. "4ghNIBZA4vMB8WYgvg/E50jA56H0KiB+QmpIIANfGpQXL0lxAKhWXAjEl4D4AAn4EDQrzoaWssgOqKZn"
. "kW+JZnktPS0PRrO8lJ6Wx6BZnk9Py9nQKju6Wg4Da6CW52CTBADLm7B1N75ElAAAAABJRU5ErkJggg=="
Return Base64PNG
}
; โโโโโโโโโโโโ
TrayIcon(){
Base64PNG := ""
. "iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAACXBIWXMAAAsTAAALEwEAmpwYAAAGSWlU"
. "WHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhp"
. "SHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0"
. "az0iQWRvYmUgWE1QIENvcmUgNy4xLWMwMDAgNzkuYTg3MzFiOSwgMjAyMS8wOS8wOS0wMDozNzozOCAg"
. "ICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJk"
. "Zi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRw"
. "Oi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94"
. "YXAvMS4wL21tLyIgeG1sbnM6c3RFdnQ9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9S"
. "ZXNvdXJjZUV2ZW50IyIgeG1sbnM6cGhvdG9zaG9wPSJodHRwOi8vbnMuYWRvYmUuY29tL3Bob3Rvc2hv"
. "cC8xLjAvIiB4bWxuczpkYz0iaHR0cDovL3B1cmwub3JnL2RjL2VsZW1lbnRzLzEuMS8iIHhtcDpDcmVh"
. "dG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIDIzLjAgKFdpbmRvd3MpIiB4bXA6Q3JlYXRlRGF0ZT0iMjAy"
. "My0wNy0xMlQxNjoyMToxMiswMzowMCIgeG1wOk1ldGFkYXRhRGF0ZT0iMjAyMy0wNy0xMlQxNjoyMTox"
. "MiswMzowMCIgeG1wOk1vZGlmeURhdGU9IjIwMjMtMDctMTJUMTY6MjE6MTIrMDM6MDAiIHhtcE1NOklu"
. "c3RhbmNlSUQ9InhtcC5paWQ6NzgyODIyMDEtYzYwYi05MzQxLTkwNzktMTA0NjI2YjA5MDFmIiB4bXBN"
. "TTpEb2N1bWVudElEPSJhZG9iZTpkb2NpZDpwaG90b3Nob3A6ZGM5MjljYTItYjM5MS00ZTQ1LTkyZWIt"
. "ODYyMWIzZmM3NGViIiB4bXBNTTpPcmlnaW5hbERvY3VtZW50SUQ9InhtcC5kaWQ6ZWZlYTBmN2MtNjQ4"
. "MS1kYzRlLTg0MDgtYzlhNjBkNDAyYmJmIiBwaG90b3Nob3A6Q29sb3JNb2RlPSIzIiBkYzpmb3JtYXQ9"
. "ImltYWdlL3BuZyI+IDx4bXBNTTpIaXN0b3J5PiA8cmRmOlNlcT4gPHJkZjpsaSBzdEV2dDphY3Rpb249"
. "ImNyZWF0ZWQiIHN0RXZ0Omluc3RhbmNlSUQ9InhtcC5paWQ6ZWZlYTBmN2MtNjQ4MS1kYzRlLTg0MDgt"
. "YzlhNjBkNDAyYmJmIiBzdEV2dDp3aGVuPSIyMDIzLTA3LTEyVDE2OjIxOjEyKzAzOjAwIiBzdEV2dDpz"
. "b2Z0d2FyZUFnZW50PSJBZG9iZSBQaG90b3Nob3AgMjMuMCAoV2luZG93cykiLz4gPHJkZjpsaSBzdEV2"
. "dDphY3Rpb249InNhdmVkIiBzdEV2dDppbnN0YW5jZUlEPSJ4bXAuaWlkOjc4MjgyMjAxLWM2MGItOTM0"
. "MS05MDc5LTEwNDYyNmIwOTAxZiIgc3RFdnQ6d2hlbj0iMjAyMy0wNy0xMlQxNjoyMToxMiswMzowMCIg"
. "c3RFdnQ6c29mdHdhcmVBZ2VudD0iQWRvYmUgUGhvdG9zaG9wIDIzLjAgKFdpbmRvd3MpIiBzdEV2dDpj"
. "aGFuZ2VkPSIvIi8+IDwvcmRmOlNlcT4gPC94bXBNTTpIaXN0b3J5PiA8cGhvdG9zaG9wOlRleHRMYXll"
. "cnM+IDxyZGY6QmFnPiA8cmRmOmxpIHBob3Rvc2hvcDpMYXllck5hbWU9Iti5IiBwaG90b3Nob3A6TGF5"
. "ZXJUZXh0PSLYuSIvPiA8L3JkZjpCYWc+IDwvcGhvdG9zaG9wOlRleHRMYXllcnM+IDwvcmRmOkRlc2Ny"
. "aXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+WwrQuAAAAjtJ"
. "REFUWMO9VztuwkAQNSeAipomkAIJxAmQ0lByBAoOQIdEhbgAhQ9ASRVRcACOABIFRSTo0xgSORRImfg5"
. "HjOYtRfshZGm8O545+183mgtIrI8efH03dODp8TabDZpOBz62ul0SO5l0EPg6yXwbVU8dVTGcMzSbrdN"
. "AWB1At8+GtIBQDQMAyDfd7fb/VksFqTS3W4XAlgulxRnV6/X0wL4tuQt00qm6MhCk8JrUsfjMW02myub"
. "UqmUJQ3nj8lk4h+M0BeLxSvjWq1G8/nct+n1eqbq4PyBXEJOpxPZtn1hmMvlaDQa+fuO41ChUDAPAIqi"
. "griuS+VyOVyvVqt0PB7D0BvshMsF5JMFKcHN8/l8GHqkx3ArJvd/q9Wifr//SD5Qb3Aq1ut1yAcG6TgZ"
. "ANLAAKTMZrObWw5gYS+JDClVFO+lY/S6TnBQEhDpWEtaaL0oWoka+3Fsif0oEekucMUfqsOR82i+4YSJ"
. "KipyFoAjmCuiZ8BOMTcs/yacY93YBRCA5n8kJyC8Kcb3/6FpmC36n+QQFVXj9ljHRbVtmFY5MhwdRAV1"
. "IUc7OuxhAHBLroOkLnoYAOaAOEGEIvVh1jkOVxEYQMVwhznncCDDfyNzmgMgSSiS5+cA4Eq/c2SbAxDT"
. "Zs8DIPN/B7GZAyBnBdrtxtF9+R7MonIW8EACKLSmKiKNRsNNfJpl7QSdTKfTDwB4jXucZiEjHR1DBoPB"
. "mxU8kStBJL5MUzJSgK5gQPv9/ne1Wn1ut1sbvv8Akdi/PNdSy+EAAAAASUVORK5CYII="
Return Base64PNG
}
; โโโโโโโโโโโโ
GoogleTranslateLogo(){
Base64PNG := ""
. "iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAACXBIWXMAAAsTAAALEwEAmpwYAAAGlmlU"
. "WHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhp"
. "SHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0"
. "az0iQWRvYmUgWE1QIENvcmUgNy4xLWMwMDAgNzkuYTg3MzFiOSwgMjAyMS8wOS8wOS0wMDozNzozOCAg"
. "ICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJk"
. "Zi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRw"
. "Oi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczpkYz0iaHR0cDovL3B1cmwub3JnL2RjL2VsZW1l"
. "bnRzLzEuMS8iIHhtbG5zOnBob3Rvc2hvcD0iaHR0cDovL25zLmFkb2JlLmNvbS9waG90b3Nob3AvMS4w"
. "LyIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0RXZ0"
. "PSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VFdmVudCMiIHhtcDpDcmVh"
. "dG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIDIzLjAgKFdpbmRvd3MpIiB4bXA6Q3JlYXRlRGF0ZT0iMjAy"
. "My0wNi0yMFQyMDoyOToxNCswMzowMCIgeG1wOk1vZGlmeURhdGU9IjIwMjMtMDYtMjBUMjE6MTA6MTYr"
. "MDM6MDAiIHhtcDpNZXRhZGF0YURhdGU9IjIwMjMtMDYtMjBUMjE6MTA6MTYrMDM6MDAiIGRjOmZvcm1h"
. "dD0iaW1hZ2UvcG5nIiBwaG90b3Nob3A6Q29sb3JNb2RlPSIzIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAu"
. "aWlkOjgwYjExNTNlLTRjN2EtMDg0YS04MzU3LTRiZWNhYzRkZTE3YyIgeG1wTU06RG9jdW1lbnRJRD0i"
. "YWRvYmU6ZG9jaWQ6cGhvdG9zaG9wOjNkZmFjNDUxLThhZTQtOTc0MS04MmE1LTZiNTVkYmRhYzlkZCIg"
. "eG1wTU06T3JpZ2luYWxEb2N1bWVudElEPSJ4bXAuZGlkOjUyYWI3YjQ2LTQwNzMtNTE0YS05NWM3LWQ3"
. "YTU0Y2Y1OWI3OCI+IDx4bXBNTTpIaXN0b3J5PiA8cmRmOlNlcT4gPHJkZjpsaSBzdEV2dDphY3Rpb249"
. "ImNyZWF0ZWQiIHN0RXZ0Omluc3RhbmNlSUQ9InhtcC5paWQ6NTJhYjdiNDYtNDA3My01MTRhLTk1Yzct"
. "ZDdhNTRjZjU5Yjc4IiBzdEV2dDp3aGVuPSIyMDIzLTA2LTIwVDIwOjI5OjE0KzAzOjAwIiBzdEV2dDpz"
. "b2Z0d2FyZUFnZW50PSJBZG9iZSBQaG90b3Nob3AgMjMuMCAoV2luZG93cykiLz4gPHJkZjpsaSBzdEV2"
. "dDphY3Rpb249InNhdmVkIiBzdEV2dDppbnN0YW5jZUlEPSJ4bXAuaWlkOmIxZDI4M2JiLTU0MmQtOWE0"
. "Yy1iOWQxLTdhODg2MjM2ODY3MyIgc3RFdnQ6d2hlbj0iMjAyMy0wNi0yMFQyMToxMDoxNiswMzowMCIg"
. "c3RFdnQ6c29mdHdhcmVBZ2VudD0iQWRvYmUgUGhvdG9zaG9wIDIzLjAgKFdpbmRvd3MpIiBzdEV2dDpj"
. "aGFuZ2VkPSIvIi8+IDxyZGY6bGkgc3RFdnQ6YWN0aW9uPSJzYXZlZCIgc3RFdnQ6aW5zdGFuY2VJRD0i"
. "eG1wLmlpZDo4MGIxMTUzZS00YzdhLTA4NGEtODM1Ny00YmVjYWM0ZGUxN2MiIHN0RXZ0OndoZW49IjIw"
. "MjMtMDYtMjBUMjE6MTA6MTYrMDM6MDAiIHN0RXZ0OnNvZnR3YXJlQWdlbnQ9IkFkb2JlIFBob3Rvc2hv"
. "cCAyMy4wIChXaW5kb3dzKSIgc3RFdnQ6Y2hhbmdlZD0iLyIvPiA8L3JkZjpTZXE+IDwveG1wTU06SGlz"
. "dG9yeT4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBl"
. "bmQ9InIiPz5wF6l/AAAIGElEQVRYw5WXe4xcZRnGf9/3nXPmtrM7u9vt7raltmUpWGjlUtqUhhYqSsNF"
. "BQ0kSFViJAaDIJoWLzH+04hAohgCjRgkSALRQIioBI2mFrSBQqWEBtpCAbvt3nd25z5zzve9/jGzl9lu"
. "KT3JyTlzbu/zPe/leUb94sl3GKmmg49KbT8CWaqEEEAaO4BMnTTOBe0rV9mvo8LDaA8EtIH3By03XerY"
. "/pU2SuWAV197jWx2lPb2Rfh+DyKWkZETZDJxli3rxVrwrJiWXBjsqDnzk0Bb3FSgWQCYc02UQmFuaLW1"
. "h7WLECCqQbe2rF0eJwpPfvdUm3c41/HjfBS/19cA+hO+pnFeImNz2TWEk28pL0b/QIVtn+9iy+pWxgoQ"
. "j3/CL2XD+FKFoJBpqudDP/uaEkGURyFYcIONpzleTtGzOMP1mxcwMmE5k037yhVm51nmBpT5wAhagZjk"
. "TaOHj1PpP87d12VIxDyKFUGpMwAgs3N7modnF6OyNSTZvmqw3LXqxo3trFmZZDgboTUopVBKYa0liiKs"
. "dTgnOCdEkcVaN1MDH0c186RkmiEnFGyM1Zd2/uCLV0Y/HJnANBaunHNYawmCgEQiQRD4eJ5CRJFIBCoI"
. "vIpzMiqi8OZbtWrs2TJMlFSdUoGOFiEVA9d4ydVqBB1dt1k9eJuvPTwfwFGtVqhUyvT19TWYk+njsmUr"
. "AJFazT5mrd3pzeVdK6hGMDCpWL1E2LYxYklGODig+de7mvGioiMpWIGWWMR72XYOnhjmkhVZ/HgXIoJz"
. "DhFBa90ILtMgQKEUCrjdGCUnpaAawUhBcccWy21XhA3SFZ9dE/HdqxXfeypg31HNgpZ6IRaqhqMTbVxS"
. "O0F2IkZ7phWlVBOQmRqqg6nfByDVlAKt4MSk4p7PRdxyeY0j/R4PvOSRKyvWLXesWeIYmlCkYlInTiDh"
. "OQ6OJLm6pKlQRAGZTCsKsPa0LVltSkG+qji3R7hlY8TQuOH2JwNy5Tqwlw/VH13YKiQCiPmCAtKxkI8m"
. "U/RP+pzV6SiVyvi+5qzeHgqlMrliCaNPPeCaGMgW4apVDrTwx30+g5PQ3QpfvsSyYaWlVFZYgYmi4ol/"
. "G2oR+J4wXIrx1lCGT/eM4uLt9A8Nc/9Tz7Pl0ov4wuVrGc/lp9tYoeotL/W6aAJgBWJ+/TxXAV9Drgwr"
. "u4W1KyyuqtCxOvXPvGbIV8AzkPAs+wfb+NIFE3SlEvQDu18/wLLuhfiJzSSqNcTVe19rTaUWUm20UlMR"
. "JgM4Nlbv5o0rHL972WNFxvH4K4b7XvRQwPN3VhEHo4UGWIG2wDFp0zzw3H50+AJVCVjW28Pr7xzhjp0P"
. "sbCjnTCyjE7kGM3l+NrWzWxdfyEj2UmaaqAjKew5rDlyzLB5dcT2axS/3eNxeFDRnhJ2XBPRmrb85h8B"
. "YwXF0o4p/bCMV2Isbz2frStakHg32mjK1SqxwOOve99kLF9m29ZNjOXzLOnqpFiuIMxJgdbgG9jxrM+u"
. "bwjf2hJy/RrLmx9ptqxyBAnH/vd9Htvj0dPaLF4uCkktuICzukNKtHD+2UswRmGM4ZFn/8bVGy7iuis3"
. "IrUy2VyRyUIRo1Wz/jqBnjbheFaxbVeMP+z18QxsXWMZyCke3+1z99M+KR/iXvNozsQi/pdP8ad9A3zn"
. "vl/z6sHDJDMd7HruJSJnuXbDRQwPDjA4NkG5WsUzutEFcyZhLYJFGSFXhp0veOza7RH3hXxFkStCd5uQ"
. "DCByNA0YTzsODTlu3LSZrZNH+P2Le4jHfJ7++yvcdfO1LO3p4oPjQ8TjMYIgmJmWc9VQqH88GYOlnULM"
. "CNZCOpD6b+/k4HUFUIhY3hoM2H7r9fiexz0PPcGNV6znhk3r6R8ew/MMURQRhiGqodmnnhANNJ6GwIDR"
. "c33izHyfutYRjzgwEOeND0N86jJcKFdAQSIWYJ2blukwDOsMMB8FMr8XnJomswPPNi5xY6noODuePEBS"
. "l/nV3d9k9xsHufeRp2hLJWlrSU6DmJJsrY32ToVhvhXLx/gGJ4pS2bF4+QZu3bqF9atW8uCdX2fv24f4"
. "/sNPICIkYgEiMpMCiwTGN41VqeZVSzPVJ7tl1WRaBDCuAsk+Qm8hhz44yrmfWsyj22/nlQPv8stn/kx7"
. "uqUJvPE7rxmLtaSvSKZT7S4Kpz81ZVTn8qGkcc9ZrA7QqQT4AcoPwAvwYz79Zc2SdJWLFxUYzkUs713I"
. "Z/qW07ugg47WFNGMSv7XO7Ln7T2VirvwvKsuu6cW6XZBPt4aCmgcNa8lihXH17n+E5eLl5hmyTOK8Q8d"
. "xzKK+MVxTKg4MZZldd9SrLVk80UC359RQ60cYsNcpRb+TFCIO401VVCWGAkTstbs7fzPweyojidRgDFw"
. "9HjI6sUeN6/rY6SQBiUYrRmfzDcAmjkOzBi0MeiGT1LqNLsIFWKsS77HZefasZ5zeveVVQovnWYgn+Ds"
. "lR3cv/M8Mp1JqpU61a6hhGqWX59iTJ/JnwiFUFRpeuU4bROHeHcoRToZPa6VYnjU0tqi+fmOXtpafcYn"
. "LEYLIu6kvp4Kboz2zwhAlThtXon13l6qYYl8PsvCtvJfylVHZIWf3tXNgs6AkTGL56lZTaVOGl5Ga8Ja"
. "aLwzWT9a0TtxkGKkKZpFaARr3bGFndF73/7qgr7zz4kxMBTiB7oRjHlTYIyiWKz+8+iHIw9+YgCiDXFb"
. "hMksx2wKqxWIIl8Q1q5O7lx/YWLT0GjktNZT3qt+aDjkWZKvbeRKk7nKrnwxevv/sZ0p2Ci1PVEAAAAA"
. "SUVORK5CYII="
Return Base64PNG
}
; โโโโโโโโโโโโ
Base64PNG_to_HICON(Base64PNG, W:=0, H:=0){
BLen:=StrLen(Base64PNG), Bin:=0, nBytes:=Floor(StrLen(RTrim(Base64PNG,"="))*3/4)
Return DllCall("Crypt32.dll\CryptStringToBinary", "Str",Base64PNG, "UInt",BLen, "UInt",1,"Ptr",&(Bin:=VarSetCapacity(Bin,nBytes)), "UIntP",nBytes, "UInt",0, "UInt",0)? DllCall("CreateIconFromResourceEx", "Ptr",&Bin, "UInt",nBytes, "Int",True, "UInt",0x30000, "Int",W, "Int",H, "UInt",0, "UPtr") : 0
}
Return
;โโโโโโโโโ Logo Icons Functions End โโโโโโโโโโ
;โฏโโโโโโโโโโโโ Google Translate Functions โโโโโโโโโโโโโฏ
GoogleTranslate(str, from := "auto", to := "en") {
static JS := CreateScriptObj(), _ := JS.( GetJScript() ) := JS.("delete ActiveXObject; delete GetObject;")
json := SendRequest(JS, str, to, from, proxy := "")
oJSON := JS.("(" . json . ")")
if !IsObject(oJSON[1]) {
Loop % oJSON[0].length
trans .= oJSON[0][A_Index - 1][0]
}
else {
MainTransText := oJSON[0][0][0]
Loop % oJSON[1].length {
trans .= "`n+"
obj := oJSON[1][A_Index-1][1]
Loop % obj.length {
txt := obj[A_Index - 1]
trans .= (MainTransText = txt ? "" : "`n" txt)
}
}
}
if !IsObject(oJSON[1])
MainTransText := trans := Trim(trans, ",+`n ")
else
trans := MainTransText . "`n+`n" . Trim(trans, ",+`n ")
from := oJSON[2]
trans := Trim(trans, ",+`n ")
Return trans
}
SendRequest(JS, str, tl, sl, proxy) {
static http
ComObjError(false)
if !http
{
http := ComObjCreate("WinHttp.WinHttpRequest.5.1")
( proxy && http.SetProxy(2, proxy) )
http.open("GET", "https://translate.google.com", true)
http.SetRequestHeader("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:47.0) Gecko/20100101 Firefox/47.0")
http.send()
http.WaitForResponse(-1)
}
http.open("POST", "https://translate.googleapis.com/translate_a/single?client=gtx"
; or "https://clients5.google.com/translate_a/t?client=dict-chrome-ex"
. "&sl=" . sl . "&tl=" . tl . "&hl=" . tl
. "&dt=at&dt=bd&dt=ex&dt=ld&dt=md&dt=qca&dt=rw&dt=rm&dt=ss&dt=t&ie=UTF-8&oe=UTF-8&otf=0&ssel=0&tsel=0&pc=1&kc=1"
. "&tk=" . JS.("tk").(str), true)
http.SetRequestHeader("Content-Type", "application/x-www-form-urlencoded;charset=utf-8")
http.SetRequestHeader("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:47.0) Gecko/20100101 Firefox/47.0")
http.send("q=" . URIEncode(str))
http.WaitForResponse(-1)
Return http.responsetext
}
URIEncode2(str, encoding := "UTF-8") {
VarSetCapacity(var, StrPut(str, encoding))
StrPut(str, &var, encoding)
while code := NumGet(Var, A_Index - 1, "UChar") {
bool := (code > 0x7F || code < 0x30 || code = 0x3D)
UrlStr .= bool ? "%" . Format("{:02X}", code) : Chr(code)
}
Return UrlStr
}
GetJScript()
{
script =
(
var TKK = ((function() {
var a = 561666268;
var b = 1526272306;
return 406398 + '.' + (a + b);
})());
function b(a, b) {
for (var d = 0; d < b.length - 2; d += 3) {
var c = b.charAt(d + 2),
c = "a" <= c ? c.charCodeAt(0) - 87 : Number(c),
c = "+" == b.charAt(d + 1) ? a >>> c : a << c;
a = "+" == b.charAt(d) ? a + c & 4294967295 : a ^ c
}
return a
}
function tk(a) {
for (var e = TKK.split("."), h = Number(e[0]) || 0, g = [], d = 0, f = 0; f < a.length; f++) {
var c = a.charCodeAt(f);
128 > c ? g[d++] = c : (2048 > c ? g[d++] = c >> 6 | 192 : (55296 == (c & 64512) && f + 1 < a.length && 56320 == (a.charCodeAt(f + 1) & 64512) ?
(c = 65536 + ((c & 1023) << 10) + (a.charCodeAt(++f) & 1023), g[d++] = c >> 18 | 240,
g[d++] = c >> 12 & 63 | 128) : g[d++] = c >> 12 | 224, g[d++] = c >> 6 & 63 | 128), g[d++] = c & 63 | 128)
}
a = h;
for (d = 0; d < g.length; d++) a += g[d], a = b(a, "+-a^+6");
a = b(a, "+-3^+b+-f");
a ^= Number(e[1]) || 0;
0 > a && (a = (a & 2147483647) + 2147483648);
a `%= 1E6;
return a.toString() + "." + (a ^ h)
}
)
Return script
}
CreateScriptObj() {
static doc, JS, _JS
if !doc {
doc := ComObjCreate("htmlfile")
doc.write("<meta http-equiv='X-UA-Compatible' content='IE=9'>")
JS := doc.parentWindow
if (doc.documentMode < 9)
JS.execScript()
_JS := ObjBindMethod(JS, "eval")
}
Return _JS
}
;โโโโโโโโโโ Google Translate Functions End โโโโโโโโโโโ
;โฏโโโโโโโโโโโโ Reload/Exit Routine โโโโโโโโโโโโโฏ
WM_LBUTTONDOWN() { ; [PopUp Message Drag PT. 2]
PostMessage, 0x00A1, 2, 0
}
RETURN
; โฎโโโโ RELOAD โโโโ RELOAD โโโโ RELOAD โโโโโฎ
^Home:: ; (Ctrl + ([Home] times (# of TapCounts)))
if (A_TimeSincePriorHotkey > 250)
{
TapCount := 1
KeyWait, Esc
} else {
TapCount++
if (TapCount = 2) ; โฌ
โฌ
Set TapCount to # of key taps wanted.
{
Reload:
Gosub, IndicateDot1
Gui, Color, YELLOW ; โฌ
โฌ
IndicateDot Color.
Gosub, IndicateDot2
Reload
} else {
KeyWait, Esc
}
}
Return
; โฎโโโโโโ EXIT โโโโโโ EXIT โโโโโโ EXIT โโโโโโโฎ
^Esc:: ; (Ctrl + ([Esc] times (# of TapCounts)))
if (A_TimeSincePriorHotkey > 250)
{
TapCount := 1
KeyWait, Esc
} else {
TapCount++
if (TapCount = 3) ; โฌ
โฌ
Set TapCount to # of key taps wanted.
{
Exit:
Gosub, IndicateDot1
Gui, Color, RED ; โฌ
โฌ
IndicateDot Color.
Gosub, IndicateDot2
Gui, Destroy
ExitApp
} else {
KeyWait, Esc
}
}
Return
;โโโโโโโโโโ Reload/Exit Routine End โโโโโโโโ
;โฏโโโโโโโโโโโโโโโโโ Indicate Dots โโโโโโโโโโโโโโโโโโโฏ
; โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
IndicateDot1:
Gui, Destroy
SysGet, MonitorWorkArea, MonitorWorkArea
SysGet, TaskbarPos, 4
Gui, +AlwaysOnTop -Caption +hwndHGUI +LastFound
Return
; โโโโโโโโโโโ
IndicateDot2:
Gui, Margin, 13, 13 ; โฌ
โฌ
Dot Size.
Gui, Show, Hide
WinGetPos, , , WinWidth, WinHeight, ahk_id %HGUI%
NewX := MonitorWorkAreaRight - 80
NewY := MonitorWorkAreaBottom - WinHeight - 5
R := Min(WinWidth, WinHeight) // 1 ; โฌ
โฌ
Set value of cornering. (0.5=Oval, 0=square, 1= round, 5=rounded corners).
WinSet, Region, 0-0 W%WinWidth% H%WinHeight% R%R%-%R%
Gui, Show, x%NewX% y%NewY%
; SoundGet, master_volume
; SoundSet, 5
; Soundbeep, 2100, 75
; SoundSet, % master_volume
Sleep, 100
Gui, Destroy
Return
; โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
;โโโโโโโโโโโโโ Indicate Dots End โโโโโโโโโโโโโโ
;โฏโโโโโโโโโโโโโ Auto-Execute Sub โโโโโโโโโโโโโโฏ
AutoExecute:
#NoEnv ; Recommended for performance and future compatibility.
#Persistent ; Keeps a script permanently running until user closes it or ExitApp is encountered.
#SingleInstance, Force ; Determines whether a script is allowed to run again when it is already running.
DetectHiddenWindows, On
SetBatchLines, -1 ; Determines how fast script will run.
SetKeyDelay, 250 ; (Sets TapCount)
SetTitleMatchMode, 2
Menu, Tray, Icon, % "HICON:" . Base64PNG_to_HICON(TrayIcon())
RETURN
;โโโโโโโโโโ Auto-Execute Sub End โโโโโโโโโ
/*
____________________________________________________________
โโชปโโชกโซทโซทโซทโซทโซทโซท SCRIPT END โซธโซธโซธโซธโซธโซธโชขโโชผโ
โพโพโพโพโพโพโพโพโพโพโพโพโพโพโพโพโพโพโพโพโพโพโพโพโพโพโพโพโพโพโพโพโพโพโพโพโพโพโพโพโพโพโพโพโพโพโพโพโพโพโพโพโพโพโพโพโพโพโพโพ
*/
- image.png (57.64 KiB) Viewed 2437 times
Re: AHK Fast Translator
Hi this seems like a wonderful tool.
However, it is written in AHK v1.x
It does not work in the latest version of AHK v 2.x
I was wondering if you have 2.x version?
If not I will try and update myself!
Thanks
However, it is written in AHK v1.x
It does not work in the latest version of AHK v 2.x
I was wondering if you have 2.x version?
If not I will try and update myself!
Thanks
Re: AHK Fast Translator
@V0RT3X How does this gui script work to bypass translation limits? When I only use the function itself
MsgBox, % GoogleTranslate("Hello, World", "en", "pl")
After a while, the translation is blocked, and the gui version still works. Do you know how to do it without GUI?
MsgBox, % GoogleTranslate("Hello, World", "en", "pl")
After a while, the translation is blocked, and the gui version still works. Do you know how to do it without GUI?
Return to โScripts and Functions (v1)โ
Jump to
- AutoHotkey Foundation
- About This Community
- Forum Issues
- AutoHotkey (v2, current version)
- Ask for Help (v2)
- Gaming
- Scripts and Functions (v2)
- Gaming
- Tutorials (v2)
- Tips and Tricks
- Wish List
- Suggestions on Documentation Improvements
- Bug Reports
- AutoHotkey Development
- AutoHotkey_H
- Ask for Help
- Development
- Editors
- Adventure IDE
- Old Topics
- AHK Studio
- Notepad++
- Pulovers Macro Creator
- SciTE4AutoHotkey
- Visual Studio Code
- Announcements
- General Discussion
- AutoHotkey (v1.1 and older)
- Ask for Help (v1)
- Gaming Help (v1)
- Scripts and Functions (v1)
- Gaming Scripts (v1)
- Tutorials (v1)
- Tips and Tricks (v1)
- General
- Other Utilities & Resources
- Other Programming Languages
- C/C++
- ASM
- C#
- KeySharp
- Off-topic Discussion
- RPA
- Other languages
- Looking for Volunteers in other languages
- Deutsch (German)
- Ich brauche Hilfe
- Spiele
- Skripte und Funktionen
- Tutorials
- Tooltime
- Allgemeines
- ไธญๆ (Chinese)
- ่ฏทๆฑๅธฎๅฉ
- ่ๆฌๅฝๆฐ
- ๆ็จ่ตๆ
- ็ธๅ ณๅทฅๅ ท
- ๅ ถไป
- Espaรฑol (Spanish)
- Pedir Ayuda
- Automatizaciรณn de Juegos
- Scripts y Funciones
- Tutoriales
- Otras Utilidades y Recursos
- General
- ะ ัััะบะธะน (Russian)
- ะะพะผะพัั
- ะกะบัะธะฟัั ะดะปั ะะณั
- ะกะบัะธะฟัั ะธ ะฑะธะฑะปะธะพัะตะบะธ
- ะกัะฐััะธ ะธ ััะบะพะฒะพะดััะฒะฐ
- ะัะพัะธะต ัะตััััั ะธ ะะ.
- ะกะฒะพะฑะพะดะฝะพะต ะพะฑัะตะฝะธะต
- Franรงais (French)
- J'ai besoin d'aide
- Scripts et Fonctions
- Tutoriels
- Autres Utilitaires et Ressources
- Hors Sujet
- Portuguรชs (Portuguese)
- Ajuda e Suporte Geral
- Scripts e Funรงรตes
- Tutoriais
- Outras Ferramentas e Recursos
- Outros Assuntos
- ํ๊ตญ์ด (Korean)
Who is online
Users browsing this forum: Tvlao and 53 guests