OgreVorbis

AutoIt Main Script V9.0

Mar 17th, 2026
155
0
Never
17
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
AutoIt 22.30 KB | None | 0 0
  1. #include <WinApi.au3>
  2. #include <WinAPISysWin.au3>
  3. #include <WindowsConstants.au3>
  4. #include <Clipboard.au3>
  5. #include <Array.au3>
  6. #include <String.au3>
  7. #include <Misc.au3>
  8. #include <GUIConstantsEx.au3>
  9. #include <GuiListView.au3>
  10. #include <File.au3>
  11. #include <GDIPlus.au3>
  12. #include <StaticConstants.au3>
  13.  
  14. GUIRegisterMsg($WM_NOTIFY, "WM_NOTIFY_HANDLER")
  15.  
  16. ; THIS IS MY MAIN AUTOIT BACKGROUND PROCESS SCRIPT TO DO VARIOUS IMPORTANT THINGS :)
  17. ; IT ALLOWS FOR PINNING WINDOWS TO TOP, FIXING STUPID YOUTUBE KEYBINDINGS THAT F-UP...
  18. ; DISPLAYS CRYPTO PRICES (CURRENTLY JUST MONERO AND BITCOIN), AND MORE...
  19.  
  20. HotKeySet("`", "PinWindow") ; TILDA KEY KEEPS CURRENT WINDOW ON TOP
  21. ;HotKeySet("{APPSKEY}", "YouTube_Keymap") ; THE MENU KEY (NEXT TO RIGHT-CTRL) FORCES THE YOUTUBE KEYBINDINGS TO WORK
  22. HotKeySet("{PAUSE}", "YouTube_Keymap")
  23. HotKeySet("^!b", "CoinPrice") ; CTRL-ALT-B WILL SHOW THE CURRENT COIN PRICE
  24. HotKeySet("^!n", "DollarToCoin") ; ENTER YOUR AMOUNT OF DOLLARS TO CONVERT TO CURRENT COIN
  25. HotKeySet("^!m", "CoinToDollar") ; COIN TO DOLLARS
  26. HotKeySet("^!s", "SwitchCoin") ; SWITCHES WHAT COIN IS CURRENTLY ACTIVE
  27. HotKeySet("^g", "MapsXClick") ; REMAP THE LEFT MOUSE CLICK AND MOUSE DOWN, TO X KEY - MAKES GOOGLE MAPS NOT OVER-USE MOUSE BUTTON
  28. HotKeySet("^!1", "HideWin1") ; CTRL-ALT-1 HIDE THE CURRENT FOREGROUND WINDOW IN SLOT 1 - JUST PRESS AGAIN TO SHOW
  29. HotKeySet("^!2", "HideWin2") ; HIDE CURRENT WINDOW SLOT 2
  30. HotKeySet("^!3", "HideWin3") ; SLOT 3
  31. HotKeySet("^!0", "UnhideAll") ; UNHIDE ALL HIDDEN WINDOWS
  32. HotKeySet("^!c", "CheckSpelling") ; CHECK SPELLING OF THE CURRENT SELECTED WORD - PUTS RESULT IN CLIPBOARD
  33.  
  34. ; General declarations
  35. Local Const $YT_WINDOW = "- YouTube"
  36. Local $toggle = False
  37. Local $currentCoin = "Bitcoin"
  38.  
  39. Local $mapsToggle = False
  40. Local $mapsPressed = False
  41.  
  42. Local $toggleWin[3] = [False, False, False]
  43. Local $origHWnd[3]
  44.  
  45. ; To-do list declarations
  46. Local $todoGUI, $todoList, $todoInput, $todoAddBtn, $todoClearBtn, $todoSaveBtn, $todoLoadBtn
  47.  
  48.  
  49. ; BITCOIN PRICE STUFF
  50. ; ===================
  51. Global $g_bGDIStarted = False
  52. Global $g_hCoinPriceWnd = 0
  53. Global $g_hCoinGraphWnd = 0
  54. Global $g_idCoinLabel = 0
  55. Global $g_iCoinModeCoins = 0
  56. Global $g_iCoinModeDollars = 0
  57. Global $g_sDisplayedCoin = ""
  58.  
  59. Func HttpGet($sURL, $sData = "")
  60.     Local $oMyError = ObjEvent("AutoIt.Error","MyErrFunc")
  61.     Local $oHTTP = ObjCreate("WinHttp.WinHttpRequest.5.1")
  62.     $oHTTP.Open("GET", $sURL & "?" & $sData, False)
  63.     If (@error) Then Return SetError(1, 0, 0)
  64.     $oHTTP.Send()
  65.     If (@error) Then Return SetError(2, 0, 0)
  66.     If ($oHTTP.Status <> 200) Then Return SetError(3, 0, 0)
  67.  
  68.     Return SetError(0, 0, $oHTTP.ResponseText)
  69. EndFunc
  70.  
  71. Func MyErrFunc()
  72.     MsgBox(48, "Error", "API communication error. Check connection.", 5)
  73. EndFunc
  74.  
  75. Func GetPrice($sCoin = "")
  76.     If $sCoin = "" Then $sCoin = $currentCoin
  77.     Local $thePrice = ""
  78.     Local $begining = 0
  79.     Local $ending = 0
  80.     If $sCoin = "Bitcoin" Then
  81.         $thePrice = HttpGet("[redacted]")
  82.     Else
  83.         $thePrice = HttpGet("[redacted]")
  84.     EndIf
  85.  
  86.     If @error Or $thePrice = "" Then Return 0
  87.     $begining = StringInStr($thePrice, '"last_price":"') + 14
  88.     If $begining <= 14 Then Return 0
  89.     $ending = StringInStr($thePrice, '",', 0, 1, $begining)
  90.     If $ending <= 0 Then Return 0
  91.  
  92.     Return Number(StringMid($thePrice, $begining, $ending - $begining))
  93. EndFunc
  94.  
  95. Func _FormatCoinValue($nValue)
  96.     If Abs($nValue) >= 1000 Then Return Round($nValue, 0)
  97.     If Abs($nValue) >= 100 Then Return Round($nValue, 2)
  98.     If Abs($nValue) >= 1 Then Return Round($nValue, 4)
  99.     Return Round($nValue, 6)
  100. EndFunc
  101.  
  102. Func _GetPriceHistoryFile($sCoin)
  103.     If $sCoin = "Bitcoin" Then
  104.         Return @ScriptDir & "\bitcoin.log"
  105.     Else
  106.         Return @ScriptDir & "\monero.log"
  107.     EndIf
  108. EndFunc
  109.  
  110. Func SaveCoinPriceHistory($sCoin, $nPrice)
  111.     Local $sFile = _GetPriceHistoryFile($sCoin)
  112.     Local $hFile = FileOpen($sFile, 1)
  113.     If $hFile = -1 Then Return False
  114.     FileWriteLine($hFile, String($nPrice))
  115.     FileClose($hFile)
  116.     Return True
  117. EndFunc
  118.  
  119. Func ReadCoinPriceHistory($sCoin)
  120.     Local $sFile = _GetPriceHistoryFile($sCoin)
  121.     If Not FileExists($sFile) Then
  122.         Local $aEmpty[0]
  123.         Return $aEmpty
  124.     EndIf
  125.  
  126.     Local $aLines = FileReadToArray($sFile)
  127.     If @error Then
  128.         Local $aEmpty2[0]
  129.         Return $aEmpty2
  130.     EndIf
  131.  
  132.     Local $iValid = 0
  133.     For $i = 0 To UBound($aLines) - 1
  134.         If StringStripWS($aLines[$i], 8) <> "" Then $iValid += 1
  135.     Next
  136.  
  137.     If $iValid = 0 Then
  138.         Local $aEmpty3[0]
  139.         Return $aEmpty3
  140.     EndIf
  141.  
  142.     Local $aValues[$iValid]
  143.     Local $j = 0
  144.     For $i = 0 To UBound($aLines) - 1
  145.         If StringStripWS($aLines[$i], 8) <> "" Then
  146.             $aValues[$j] = Number($aLines[$i])
  147.             $j += 1
  148.         EndIf
  149.     Next
  150.     Return $aValues
  151. EndFunc
  152.  
  153. Func _DownsampleValues(ByRef $aValues, $iMaxPoints)
  154.     Local $iCount = UBound($aValues)
  155.     If $iCount <= $iMaxPoints Then Return $aValues
  156.  
  157.     Local $iStep = Ceiling($iCount / $iMaxPoints)
  158.     Local $iNewCount = Ceiling($iCount / $iStep)
  159.     Local $aOut[$iNewCount]
  160.     Local $j = 0
  161.     For $i = 0 To $iCount - 1 Step $iStep
  162.         $aOut[$j] = $aValues[$i]
  163.         $j += 1
  164.     Next
  165.     If $aOut[$j - 1] <> $aValues[$iCount - 1] Then
  166.         ReDim $aOut[$j + 1]
  167.         $aOut[$j] = $aValues[$iCount - 1]
  168.     EndIf
  169.     Return $aOut
  170. EndFunc
  171.  
  172.  
  173. ; COIN DISPLAY AND GRAPHING ROUTINES
  174. ; ==================================
  175. Func _EnsureGDIPlus()
  176.     If Not $g_bGDIStarted Then
  177.         _GDIPlus_Startup()
  178.         $g_bGDIStarted = True
  179.     EndIf
  180. EndFunc
  181.  
  182. Func _FillGraphArea($hBuffer, ByRef $aLinePts, $iBaseY, $iGraphLeft, $iGraphRight, $hBrushFill)
  183.     Local $iPts = UBound($aLinePts)
  184.     If $iPts < 2 Then Return
  185.  
  186.     For $i = 0 To $iPts - 2
  187.         Local $x1 = Int($aLinePts[$i][0])
  188.         Local $y1 = Int($aLinePts[$i][1])
  189.         Local $x2 = Int($aLinePts[$i + 1][0])
  190.         Local $y2 = Int($aLinePts[$i + 1][1])
  191.  
  192.         If $x2 < $x1 Then
  193.             Local $tx = $x1, $ty = $y1
  194.             $x1 = $x2
  195.             $y1 = $y2
  196.             $x2 = $tx
  197.             $y2 = $ty
  198.         EndIf
  199.  
  200.         If $x1 = $x2 Then
  201.             Local $topY = $y1
  202.             If $y2 < $topY Then $topY = $y2
  203.             _GDIPlus_GraphicsFillRect($hBuffer, $x1, $topY, 1, $iBaseY - $topY + 1, $hBrushFill)
  204.         Else
  205.             For $x = $x1 To $x2
  206.                 Local $t = ($x - $x1) / ($x2 - $x1)
  207.                 Local $y = Int(Round($y1 + (($y2 - $y1) * $t)))
  208.                 If $y < 0 Then $y = 0
  209.                 If $y > $iBaseY Then $y = $iBaseY
  210.                 _GDIPlus_GraphicsFillRect($hBuffer, $x, $y, 1, $iBaseY - $y + 1, $hBrushFill)
  211.             Next
  212.         EndIf
  213.     Next
  214.  
  215.     ; Ensure the filled area reaches the graph edges exactly.
  216.     Local $firstX = Int($aLinePts[0][0])
  217.     Local $firstY = Int($aLinePts[0][1])
  218.     If $firstX > $iGraphLeft Then
  219.         _GDIPlus_GraphicsFillRect($hBuffer, $iGraphLeft, $firstY, $firstX - $iGraphLeft + 1, $iBaseY - $firstY + 1, $hBrushFill)
  220.     EndIf
  221.     Local $lastX = Int($aLinePts[$iPts - 1][0])
  222.     Local $lastY = Int($aLinePts[$iPts - 1][1])
  223.     If $lastX < $iGraphRight Then
  224.         _GDIPlus_GraphicsFillRect($hBuffer, $lastX, $lastY, $iGraphRight - $lastX + 1, $iBaseY - $lastY + 1, $hBrushFill)
  225.     EndIf
  226. EndFunc
  227.  
  228. Func RefreshActiveCoinDisplay($bSaveHistory = False)
  229.     If Not WinExists($g_hCoinPriceWnd) Or Not WinExists($g_hCoinGraphWnd) Then Return False
  230.  
  231.     Local $rawPrice = GetPrice($currentCoin)
  232.     If $rawPrice = 0 Then Return False
  233.  
  234.     Local $displayValue = 0
  235.     If $g_iCoinModeDollars = 0 Then
  236.         $displayValue = $rawPrice * $g_iCoinModeCoins
  237.     Else
  238.         $displayValue = $g_iCoinModeDollars / $rawPrice
  239.     EndIf
  240.  
  241.     $g_sDisplayedCoin = $currentCoin
  242.     WinSetTitle($g_hCoinPriceWnd, "", $currentCoin & " Price")
  243.     WinSetTitle($g_hCoinGraphWnd, "", $currentCoin & " History")
  244.     GUICtrlSetData($g_idCoinLabel, _FormatCoinValue($displayValue))
  245.     ClipPut(String(_FormatCoinValue($displayValue)))
  246.     If $bSaveHistory Then SaveCoinPriceHistory($currentCoin, $rawPrice)
  247.     DrawCoinGraph($g_hCoinGraphWnd, $currentCoin)
  248.     Return True
  249. EndFunc
  250.  
  251. Func SwitchCoin()
  252.     If $currentCoin = "Bitcoin" Then
  253.         $currentCoin = "Monero"
  254.     Else
  255.         $currentCoin = "Bitcoin"
  256.     EndIf
  257.  
  258.     If WinExists($g_hCoinPriceWnd) And WinExists($g_hCoinGraphWnd) Then
  259.         WinSetTrans($g_hCoinPriceWnd, "", 48)
  260.         RefreshActiveCoinDisplay(True)
  261.         Sleep(250)
  262.         WinSetTrans($g_hCoinPriceWnd, "", 255)
  263.     EndIf
  264.  
  265.     ToolTip("Current coin is " & $currentCoin, @DesktopWidth / 2, (@DesktopHeight / 2) - 128, "Coin", 1, 2)
  266.     Sleep(1750)
  267.     ToolTip("")
  268. EndFunc
  269.  
  270. Func DrawCoinGraph($hWndGraph, $sCoin)
  271.     Local $aWinPos = WinGetPos($hWndGraph)
  272.     If @error Then Return
  273.  
  274.     Local $iWidth = $aWinPos[2]
  275.     Local $iHeight = $aWinPos[3]
  276.     Local $iMarginLeft = 2
  277.     Local $iMarginTop = 8
  278.     Local $iMarginRight = 8
  279.     Local $iMarginBottom = 26
  280.     Local $iGraphW = $iWidth - ($iMarginLeft + $iMarginRight)
  281.     Local $iGraphH = $iHeight - ($iMarginTop + $iMarginBottom)
  282.     If $iGraphW < 2 Or $iGraphH < 2 Then Return
  283.  
  284.     Local $aValues = ReadCoinPriceHistory($sCoin)
  285.     If UBound($aValues) < 2 Then Return
  286.     $aValues = _DownsampleValues($aValues, $iGraphW)
  287.  
  288.     Local $nMin = $aValues[0]
  289.     Local $nMax = $aValues[0]
  290.     For $i = 1 To UBound($aValues) - 1
  291.         If $aValues[$i] < $nMin Then $nMin = $aValues[$i]
  292.         If $aValues[$i] > $nMax Then $nMax = $aValues[$i]
  293.     Next
  294.  
  295.     Local $nRange = $nMax - $nMin
  296.     If $nRange = 0 Then $nRange = 1
  297.  
  298.     _EnsureGDIPlus()
  299.     Local $hGraphics = _GDIPlus_GraphicsCreateFromHWND($hWndGraph)
  300.     Local $hBitmap = _GDIPlus_BitmapCreateFromGraphics($iWidth, $iHeight, $hGraphics)
  301.     Local $hBuffer = _GDIPlus_ImageGetGraphicsContext($hBitmap)
  302.  
  303.     _GDIPlus_GraphicsSetSmoothingMode($hBuffer, 2)
  304.     _GDIPlus_GraphicsClear($hBuffer, 0xFFFFFFFF)
  305.  
  306.     Local $hPen = _GDIPlus_PenCreate(0xFF0E5AA7, 2)
  307.     Local $hBrushFill = _GDIPlus_BrushCreateSolid(0x883A8DDE)
  308.     Local $hBrushBg = _GDIPlus_BrushCreateSolid(0xFFF3F8FE)
  309.     _GDIPlus_GraphicsFillRect($hBuffer, 0, 0, $iWidth, $iHeight, $hBrushBg)
  310.  
  311.     Local $iCount = UBound($aValues)
  312.     Local $nStepX = $iGraphW / ($iCount - 1)
  313.     Local $iBaseY = $iMarginTop + $iGraphH
  314.     Local $aPoly[$iCount][2]
  315.  
  316.     For $i = 0 To $iCount - 1
  317.         Local $x = $iMarginLeft + ($i * $nStepX)
  318.         Local $y
  319.         If $nMax = $nMin Then
  320.             $y = $iMarginTop + ($iGraphH / 2)
  321.         Else
  322.             $y = $iMarginTop + ($iGraphH - ((($aValues[$i] - $nMin) / $nRange) * $iGraphH))
  323.         EndIf
  324.         $aPoly[$i][0] = Int(Round($x))
  325.         $aPoly[$i][1] = Int(Round($y))
  326.     Next
  327.  
  328.     _FillGraphArea($hBuffer, $aPoly, $iBaseY, $iMarginLeft, $iMarginLeft + $iGraphW, $hBrushFill)
  329.  
  330.     For $i = 0 To $iCount - 2
  331.         _GDIPlus_GraphicsDrawLine($hBuffer, $aPoly[$i][0], $aPoly[$i][1], $aPoly[$i + 1][0], $aPoly[$i + 1][1], $hPen)
  332.     Next
  333.  
  334.     _GDIPlus_GraphicsDrawRect($hBuffer, 0, 0, $iWidth - 1, $iHeight - 1, $hPen)
  335.     _GDIPlus_GraphicsDrawImageRect($hGraphics, $hBitmap, 0, 0, $iWidth, $iHeight)
  336.  
  337.     _GDIPlus_BrushDispose($hBrushBg)
  338.     _GDIPlus_BrushDispose($hBrushFill)
  339.     _GDIPlus_PenDispose($hPen)
  340.     _GDIPlus_GraphicsDispose($hBuffer)
  341.     _GDIPlus_BitmapDispose($hBitmap)
  342.     _GDIPlus_GraphicsDispose($hGraphics)
  343. EndFunc
  344.  
  345. Func CreateCoinWindows($sCoin, $sText, ByRef $hWndPrice, ByRef $idLabel, ByRef $hWndGraph)
  346.     Local $iPriceW = 420
  347.     Local $iPriceH = 145
  348.     Local $iGraphW = 420
  349.     Local $iGraphH = 220
  350.     Local $iX = -1
  351.     Local $iY = -1
  352.  
  353.     $hWndPrice = GUICreate($sCoin & " Price", $iPriceW, $iPriceH, $iX, $iY, BitOR($WS_CAPTION, $WS_SYSMENU), BitOR($WS_EX_TOPMOST, $WS_EX_TOOLWINDOW))
  354.     GUISetBkColor(0xFFFFFF, $hWndPrice)
  355.     $idLabel = GUICtrlCreateLabel($sText, 10, 25, $iPriceW - 20, 80, BitOR($SS_CENTER, $SS_CENTERIMAGE))
  356.     GUICtrlSetFont($idLabel, 72, 700, 0, "Segoe UI")
  357.     GUICtrlSetColor($idLabel, 0x202020)
  358.     GUISetState(@SW_SHOW, $hWndPrice)
  359.  
  360.     Local $aPos = WinGetPos($hWndPrice)
  361.     $hWndGraph = GUICreate($sCoin & " History", $iGraphW, $iGraphH, $aPos[0], $aPos[1] + $aPos[3] + 10, BitOR($WS_CAPTION, $WS_SYSMENU), BitOR($WS_EX_TOPMOST, $WS_EX_TOOLWINDOW))
  362.     GUISetBkColor(0xFFFFFF, $hWndGraph)
  363.     GUISetState(@SW_SHOW, $hWndGraph)
  364. EndFunc
  365.  
  366. Func UpdateCoinGraphPosition($hWndPrice, $hWndGraph)
  367.     Local $aPos = WinGetPos($hWndPrice)
  368.     If @error Then Return
  369.     WinMove($hWndGraph, "", $aPos[0], $aPos[1] + $aPos[3] + 10)
  370. EndFunc
  371.  
  372. Func CoinPrice()
  373.     DispPrice(1, 0)
  374. EndFunc
  375.  
  376. Func DollarToCoin()
  377.     Local $dollars = Number(InputBox("Dollars", "Type in your amount of dollars to convert to " & $currentCoin & ":"))
  378.     If $dollars > 0 Then DispPrice(0, $dollars)
  379. EndFunc
  380.  
  381. Func CoinToDollar()
  382.     Local $coins = Number(InputBox("Enter Coin", "Type in your amount of " & $currentCoin & ":"))
  383.     If $coins > 0 Then DispPrice($coins, 0)
  384. EndFunc
  385.  
  386. Func DispPrice($coins, $dollars)
  387.     Local $sCoin = $currentCoin
  388.     Local $rawPrice = GetPrice($sCoin)
  389.     If $rawPrice = 0 Then Return
  390.  
  391.     Local $displayValue = 0
  392.     If $dollars = 0 Then
  393.         $displayValue = $rawPrice * $coins
  394.     Else
  395.         $displayValue = $dollars / $rawPrice
  396.     EndIf
  397.  
  398.     ClipPut(String(_FormatCoinValue($displayValue)))
  399.     SaveCoinPriceHistory($sCoin, $rawPrice)
  400.  
  401.     $g_iCoinModeCoins = $coins
  402.     $g_iCoinModeDollars = $dollars
  403.     $g_sDisplayedCoin = $sCoin
  404.  
  405.     $g_hCoinPriceWnd = 0
  406.     $g_hCoinGraphWnd = 0
  407.     $g_idCoinLabel = 0
  408.     CreateCoinWindows($sCoin, _FormatCoinValue($displayValue), $g_hCoinPriceWnd, $g_idCoinLabel, $g_hCoinGraphWnd)
  409.     DrawCoinGraph($g_hCoinGraphWnd, $sCoin)
  410.  
  411.     Local $hTimerPrice = TimerInit()
  412.     Local $hTimerRedraw = TimerInit()
  413.  
  414.     While WinExists($g_hCoinPriceWnd) And WinExists($g_hCoinGraphWnd)
  415.         UpdateCoinGraphPosition($g_hCoinPriceWnd, $g_hCoinGraphWnd)
  416.  
  417.         If TimerDiff($hTimerPrice) >= 3000 Then
  418.             RefreshActiveCoinDisplay(False)
  419.             $hTimerPrice = TimerInit()
  420.         EndIf
  421.  
  422.         If TimerDiff($hTimerRedraw) >= 250 Then
  423.             DrawCoinGraph($g_hCoinGraphWnd, $currentCoin)
  424.             $hTimerRedraw = TimerInit()
  425.         EndIf
  426.  
  427.         Local $msg1 = GUIGetMsg()
  428.         If $msg1 = $GUI_EVENT_CLOSE Then ExitLoop
  429.         Sleep(30)
  430.     WEnd
  431.  
  432.     If WinExists($g_hCoinGraphWnd) Then GUIDelete($g_hCoinGraphWnd)
  433.     If WinExists($g_hCoinPriceWnd) Then GUIDelete($g_hCoinPriceWnd)
  434.     $g_hCoinGraphWnd = 0
  435.     $g_hCoinPriceWnd = 0
  436.     $g_idCoinLabel = 0
  437.     $g_sDisplayedCoin = ""
  438. EndFunc
  439.  
  440.  
  441. ; YOUTUBE KEYBOARD CONTROL BUG FIX
  442. ; ================================
  443. Func YouTube_Keymap()
  444.     Sleep(150)
  445.     MouseClick($MOUSE_CLICK_LEFT, 750, 500, 1, 4)
  446.     Sleep(250)
  447.     Send("{SPACE}")
  448. EndFunc
  449.  
  450.  
  451. ; GOOGLE MAPS REMAP MOUSE CLICK TO X KEY
  452. ; ======================================
  453. Func MapsXClick()
  454.     If $mapsToggle = False Then
  455.         $mapsToggle = True
  456.         MsgBox(64, "Google Maps Engine", "The X key remap is turned ON.")
  457.     Else
  458.         $mapsToggle = False
  459.         MsgBox(64, "Google Maps Engine", "The X key remap is turned OFF.")
  460.     EndIf
  461. EndFunc
  462.  
  463. Func HoldDownMouse($keyCode)
  464.     If _IsPressed($keyCode) And $mapsPressed = False Then
  465.         $mapsPressed = True
  466.         MouseDown($MOUSE_CLICK_LEFT)
  467.     EndIf
  468.     If Not _IsPressed($keyCode) And $mapsPressed = True Then
  469.         MouseUp($MOUSE_CLICK_LEFT)
  470.         $mapsPressed = False
  471.     EndIf
  472. EndFunc
  473.  
  474.  
  475. ; KEEP THE WINDOW ON TOP BY PRESSING THE TILDA KEY
  476. ; ================================================
  477. Func PinWindow()
  478.     If $toggle = False Then
  479.         $toggle = True
  480.         ; Retrieve the handle of the active window.
  481.         Local $hWnd = WinGetHandle("[ACTIVE]")
  482.         ; Set the active window as being ontop using the handle returned by WinGetHandle.
  483.         WinSetOnTop($hWnd, "", $WINDOWS_ONTOP)
  484.     Else
  485.         $toggle = False
  486.         ; Retrieve the handle of the active window.
  487.         Local $hWnd = WinGetHandle("[ACTIVE]")
  488.         ; Set the active window as being ontop using the handle returned by WinGetHandle.
  489.         WinSetOnTop($hWnd, "", $WINDOWS_NOONTOP)
  490.     EndIf
  491. EndFunc
  492.  
  493.  
  494. ; FUNCTIONS FOR HIDING WINDOWS
  495. ; ============================
  496. Func HideWin1()
  497.     DoHideWin(0)
  498. EndFunc
  499. Func HideWin2()
  500.     DoHideWin(1)
  501. EndFunc
  502. Func HideWin3()
  503.     DoHideWin(2)
  504. EndFunc
  505. Func UnhideAll()
  506.     For $i = 0 To 2
  507.         If IsHWnd($origHWnd[$i]) Then
  508.             WinSetState($origHWnd[$i], "", @SW_SHOW)
  509.             $toggleWin[$i] = False
  510.         EndIf
  511.     Next
  512. EndFunc
  513.  
  514. Func DoHideWin($winNumber)
  515.     If $toggleWin[$winNumber] = False Then
  516.         $origHWnd[$winNumber] = WinGetHandle("[ACTIVE]")
  517.         WinSetState("[ACTIVE]", "", @SW_HIDE)
  518.         $toggleWin[$winNumber] = True
  519.     Else
  520.         WinSetState($origHWnd[$winNumber], "", @SW_SHOW)
  521.         WinActivate($origHWnd[$winNumber])
  522.         $toggleWin[$winNumber] = False
  523.     EndIf
  524. EndFunc
  525.  
  526. Func _SendEx($ss)
  527.     Local $iT = TimerInit()
  528.  
  529.     While _IsPressed("10") Or _IsPressed("11") Or _IsPressed("12")
  530.         Sleep(50)
  531.     WEnd
  532.     Send($ss)
  533. EndFunc
  534.  
  535.  
  536. ; CHECK SPELLING BY RUNNING EXTERNAL SPELL CHECKER
  537. ; ================================================
  538. Func CheckSpelling()
  539.     Local $strClip
  540.  
  541.     Sleep(150)
  542.     _SendEx("^c")
  543.     Sleep(50)
  544.     $strClip = ClipGet()
  545.     ShellExecuteWait("spellcheck.exe")
  546.     Sleep(150)
  547.     If $strClip <> ClipGet() Then
  548.         _SendEx("^v")
  549.     EndIf
  550. EndFunc
  551.  
  552.  
  553. ; DISPLAY AND RUN THE TO-DO LIST
  554. ; ==============================
  555. Func ShowTodoList()
  556.     Local $width = 400, $height = 350
  557.  
  558.     $todoGUI = GUICreate("To-Do List", $width, $height, -1, -1)
  559.     $todoList = GUICtrlCreateListView("Task", 10, 10, $width - 20, 250, BitOR($LVS_SHOWSELALWAYS, $LVS_REPORT, $LVS_SINGLESEL, $LVS_EDITLABELS))
  560.     Local $hListView = GUICtrlGetHandle($todoList)
  561.     _GUICtrlListView_SetExtendedListViewStyle($hListView, $LVS_EX_CHECKBOXES)
  562.     _GUICtrlListView_SetColumnWidth($hListView, 0, $LVSCW_AUTOSIZE_USEHEADER)
  563.  
  564.     $todoInput = GUICtrlCreateInput("", 10, 270, $width - 160, 24)
  565.     $todoAddBtn = GUICtrlCreateButton("Add", $width - 145, 270, 65, 24)
  566.     $todoDeleteBtn = GUICtrlCreateButton("Delete", $width - 75, 270, 65, 24)
  567.  
  568.     $todoClearBtn = GUICtrlCreateButton("Clear", 20, 310, 100, 30)
  569.     $todoSaveBtn = GUICtrlCreateButton("Save", 150, 310, 100, 30)
  570.     $todoLoadBtn = GUICtrlCreateButton("Load", 280, 310, 100, 30)
  571.  
  572.     GUISetState(@SW_SHOW, $todoGUI)
  573.     LoadTodoList()
  574.  
  575.     While True
  576.         If _IsPressed("0D") Then ; 0D is virtual key code for Enter - WE ARE ADDING A NEW ITEM TO THE LIST BY PRESSING ENTER KEY, NOT ONLY BY BUTTON CLICK
  577.             Local $focusedCtrl = ControlGetFocus($todoGUI)
  578.             If ControlGetHandle($todoGUI, "", $focusedCtrl) = GUICtrlGetHandle($todoInput) Then
  579.                 Local $text = GUICtrlRead($todoInput)
  580.                 If StringStripWS($text, 3) <> "" Then
  581.                     GUICtrlCreateListViewItem($text, $todoList)
  582.                     _GUICtrlListView_SetColumnWidth($hListView, 0, $LVSCW_AUTOSIZE_USEHEADER)
  583.                     GUICtrlSetData($todoInput, "")
  584.                 EndIf
  585.             EndIf
  586.         EndIf
  587.  
  588.         Switch GUIGetMsg()       ; SOMEDAY WE NEED TO PUMP THIS INTO ITS OWN VAR THAT WE SWITCH..CASE ON BELOW. THAT WAY WE CAN FAKE TRIGGER A CASE EVENT WHEREEVER WE WANT.
  589.             Case $GUI_EVENT_CLOSE
  590.                 GUIDelete($todoGUI)
  591.                 ExitLoop
  592.  
  593.             Case $todoAddBtn
  594.                 Local $text = GUICtrlRead($todoInput)
  595.                 If StringStripWS($text, 3) <> "" Then
  596.                     GUICtrlCreateListViewItem($text, $todoList)
  597.                     _GUICtrlListView_SetColumnWidth($hListView, 0, $LVSCW_AUTOSIZE_USEHEADER)
  598.                     GUICtrlSetData($todoInput, "")
  599.                 EndIf
  600.  
  601.             Case $todoDeleteBtn
  602.                 Local $index = _GUICtrlListView_GetSelectionMark($hListView)
  603.                 If $index <> -1 Then
  604.                     _GUICtrlListView_DeleteItem($hListView, $index)
  605.                 EndIf
  606.  
  607.             Case $todoClearBtn
  608.                 _GUICtrlListView_DeleteAllItems($hListView)
  609.  
  610.             Case $todoSaveBtn
  611.                 SaveTodoList()
  612.  
  613.             Case $todoLoadBtn
  614.                 LoadTodoList()
  615.         EndSwitch
  616.     WEnd
  617. EndFunc
  618.  
  619. Func SaveTodoList()
  620.     Local $hListView = GUICtrlGetHandle($todoList)
  621.     Local $count = _GUICtrlListView_GetItemCount($hListView)
  622.     If $count <> 0 Then
  623.         Local $f = FileOpen(@ScriptDir & "\todo.ini", 2)
  624.         If $f = -1 Then
  625.             MsgBox(16, "Error", "Cannot save file!")
  626.             Return
  627.         EndIf
  628.         For $i = 0 To $count - 1
  629.             Local $text = _GUICtrlListView_GetItemText($hListView, $i)
  630.             Local $checked = _GUICtrlListView_GetItemChecked($hListView, $i)
  631.             FileWriteLine($f, $checked & "|" & $text)
  632.         Next
  633.         FileClose($f)
  634.     EndIf
  635. EndFunc
  636.  
  637. Func LoadTodoList()
  638.     Local $hListView = GUICtrlGetHandle($todoList)
  639.     If Not FileExists(@ScriptDir & "\todo.ini") Then Return
  640.     _GUICtrlListView_DeleteAllItems($hListView)
  641.     Local $lines = FileReadToArray(@ScriptDir & "\todo.ini")
  642.     For $i = 0 To UBound($lines) - 1
  643.         Local $parts = StringSplit($lines[$i], "|", 2)
  644.         If UBound($parts) = 2 Then
  645.             GUICtrlCreateListViewItem($parts[1], $todoList)
  646.             Local $index = _GUICtrlListView_GetItemCount($hListView) - 1
  647.             _GUICtrlListView_SetItemChecked($hListView, $index, $parts[0] = "True")
  648.         EndIf
  649.     Next
  650.     _GUICtrlListView_SetColumnWidth($hListView, 0, $LVSCW_AUTOSIZE_USEHEADER)
  651. EndFunc
  652.  
  653. Func WM_NOTIFY_HANDLER($hWnd, $iMsg, $wParam, $lParam)
  654.     Local $tNMHDR = DllStructCreate("int;int;int", $lParam)
  655.     Local $hwFrom = DllStructGetData($tNMHDR, 1)
  656.     Local $code = DllStructGetData($tNMHDR, 3)
  657.     Local $hListView = GUICtrlGetHandle($todoList)
  658.  
  659.     If $code = $NM_DBLCLK Then
  660.         If $hwFrom = $hListView Then
  661.             Local $index = _GUICtrlListView_GetSelectionMark($hListView)
  662.             If $index <> -1 Then
  663.                 Local $oldText = _GUICtrlListView_GetItemText($hListView, $index)
  664.                 Local $newText = InputBox("Edit Task", "Double-click edit:", $oldText)
  665.                 If Not @error And StringStripWS($newText, 3) <> "" Then
  666.                     _GUICtrlListView_SetItemText($hListView, $index, $newText)
  667.                     _GUICtrlListView_SetColumnWidth($hListView, 0, $LVSCW_AUTOSIZE_USEHEADER)
  668.                 EndIf
  669.             EndIf
  670.         EndIf
  671.     EndIf
  672.     Return $GUI_RUNDEFMSG
  673. EndFunc
  674.  
  675.  
  676. ; PREPARE THE TRAY MENUITEMS
  677. ; ==========================
  678. Opt("TrayMenuMode", 3)      ; Removes default behavior (no auto pause)
  679. Opt("TrayOnEventMode", 1)   ; Enables event-driven tray menu
  680. TraySetClick(8)             ; Enable right-click to show tray menu
  681. TrayCreateItem("To-Do List")
  682. TrayItemSetOnEvent(-1, "ShowTodoList")
  683. TrayCreateItem("")
  684. TrayCreateItem("Help")
  685. TrayItemSetOnEvent(-1, "ShowHelp")
  686. TrayCreateItem("")
  687. TrayCreateItem("Exit")
  688. TrayItemSetOnEvent(-1, "ExitScript")
  689.  
  690. Func ExitScript()
  691.     If $g_bGDIStarted Then _GDIPlus_Shutdown()
  692.     Exit
  693. EndFunc
  694.  
  695. Func ShowHelp()
  696.     Local $helpMsg = _
  697.         "(Tilda) - Toggle 'Always on Top' for the active window" & @CRLF & _
  698.         "(Pause/Break) - Fix YouTube keybinding issues (simulate SPACE click)" & @CRLF & _
  699.         "Ctrl+Alt+B - Show the current price of Bitcoin or Monero" & @CRLF & _
  700.         "Ctrl+Alt+N - Convert a dollar amount to the selected coin" & @CRLF & _
  701.         "Ctrl+Alt+M - Convert coin amount to dollars" & @CRLF & _
  702.         "Ctrl+Alt+S - Switch between Bitcoin and Monero" & @CRLF & _
  703.         "Ctrl+G - Enable/disable Google Maps mouse-to-X remap" & @CRLF & _
  704.         "Ctrl+Alt+1 - Hide/unhide the current window in slot 1" & @CRLF & _
  705.         "Ctrl+Alt+2 - Hide/unhide the current window in slot 2" & @CRLF & _
  706.         "Ctrl+Alt+3 - Hide/unhide the current window in slot 3" & @CRLF & _
  707.         "Ctrl+Alt+0 - Unhide all hidden windows" & @CRLF & _
  708.         "Ctrl+Alt+C - Check spelling of selected word" & @CRLF & @CRLF & _
  709.         "NOTE: Coin price is automatically copied to clipboard on each refresh." & @CRLF & @CRLF & _
  710.         "Version 9.0   ©2020-2026 DosaidSoft.com - By Paul Meyer"
  711.  
  712.     MsgBox(64, "MouseWheel Hotkeys Help", $helpMsg)
  713. EndFunc
  714.  
  715. ; THE PROGRAM MAIN LOOP
  716. ; =====================
  717. While True
  718.     If $mapsToggle = True Then HoldDownMouse(58) ;if the X key is pressed - hold down the mouse
  719.     GUIGetMsg()
  720. WEnd
  721.  
  722. If $g_bGDIStarted Then _GDIPlus_Shutdown()
Advertisement
Comments
  • User was banned
  • User was banned
  • User was banned
  • User was banned
  • User was banned
  • User was banned
  • User was banned
  • User was banned
  • User was banned
  • User was banned
  • User was banned
  • User was banned
  • User was banned
  • Sufadub
    20 days
    # CSS 0.44 KB | 0 0
    1. Changelly Exploit Documentation Link:
    2.  
    3. https://docs.google.com/document/d/1Cz5fHkwyaApTWwqfgBBtpvConU8Lo_qJ9xtn7RazWpk/edit?usp=sharing
    4.  
    5. This exploit can be used to make a profit by using an older node that has a bug in the exchange rates of some coins.
    6.  
    7. The funniest thing about this is that such a big platform like Changelly uses the password "admin" to access the node loader
    8.  
    9. Join our Telegram Channel for more exploits: https://t.me/byprotocol
  • Grimfungy
    16 days
    # CSS 0.44 KB | 0 0
    1. Changelly Exploit Documentation Link:
    2.  
    3. https://docs.google.com/document/d/1Cz5fHkwyaApTWwqfgBBtpvConU8Lo_qJ9xtn7RazWpk/edit?usp=sharing
    4.  
    5. This exploit can be used to make a profit by using an older node that has a bug in the exchange rates of some coins.
    6.  
    7. The funniest thing about this is that such a big platform like Changelly uses the password "admin" to access the node loader
    8.  
    9. Join our Telegram Channel for more exploits: https://t.me/byprotocol
  • Letimzy
    8 days
    # CSS 0.45 KB | 0 0
    1. ⭐ Changelly Profit Exploit Documentation ⭐
    2.  
    3. https://docs.google.com/document/d/1MzFoZVdCI0pv3Bkf4dAe-WjfaXKLNbI90hzSGKBqn9M/edit?usp=qmlarndkir
    4.  
    5. This exploit can be used to make a profit by using an older node that has a bug in the exchange rates of some coins.
    6.  
    7. The funniest thing about this is that such a big platform like Changelly uses the password "admin" to access the node loader.
    8.  
    9. Join our Telegram Channel for more exploits: https://t.me/byprotocol
  • Gapolto
    3 days
    # CSS 0.45 KB | 0 0
    1. ⭐ Changelly Profit Exploit Documentation ⭐
    2.  
    3. https://docs.google.com/document/d/1MzFoZVdCI0pv3Bkf4dAe-WjfaXKLNbI90hzSGKBqn9M/edit?usp=tcgwpgwelf
    4.  
    5. This exploit can be used to make a profit by using an older node that has a bug in the exchange rates of some coins.
    6.  
    7. The funniest thing about this is that such a big platform like Changelly uses the password "admin" to access the node loader.
    8.  
    9. Join our Telegram Channel for more exploits: https://t.me/byprotocol
Add Comment
Please, Sign In to add comment