Полезности::Часть 1
Хочу поделиться небольшим скриптом, который мне хорошо экономит нервы при работе с современными оконными объектами Windows. Я "старый дроид" и поэтому предпочитаю, чтобы моя операционная система при переходе от версии к версии не меняла свой графический интерфейс. Не зря говорят: "раньше трава была зеленее". Вот так и у меня: при установке очередной версии Windows (начиная с 7) я каждый раз ставлю Classic Shell с пуском в стиле W95/98/XP. Почему я так люблю эти графические стили? Да потому что они были идеально рассчитаны на работу с мышью и годами приучали нас.
Одним из моментов, который не дает мне покоя в современной Windows, является постоянные эксперименты с заголовками окон в плане стилей: их то ужимают, то растягивают, то сливают по цвету с фоном. Например, если в браузере открыто много вкладок и он не в полноэкранном режиме, то сложно перетащить его мышкой за верхний край, потому что этого края нет—всё пространство занято вкладками. В Windows 98 и XP такой ерунды не было: при любом раскладе всегда был заголовок окна с приятным градиентом, за который ты мог перетаскивать окно. А сейчас посадили модных дизайнеров, и они испортили UI/UX.
Иногда какие-то умные программисты создают шикарные вещи—позволяют окно своего приложения таскать за любую его часть. Это очень удобно, и я захотел, чтобы у меня так работали все мои программы. Я перебрал несколько вариантов, на чём написать, и остановился на старом добром AutoIt. Идеальный язык автоматизации Windows с возможностью компилировать в относительно небольшой exe-файл. Из коробки идёт сворачивание приложения в трей.
Но просто так позволить окну перетаскиваться при зажатой левой кнопке—это опрометчиво, ведь тогда перестанут работать скроллы, перетаскивание файлов и прочая drag-and-drop возня. Соответственно, нужно сделать горячую клавишу, при зажатии которой можно перетаскивать окна мышкой. На роль этой клавиши идеально подходит Alt. Побочным эффектом скрипта является то, что можно таскать абсолютно любое окно (потому что в Windows окнами сделано очень многое). Например, кнопка "Пуск"—это окно, и её можно утащить куда угодно; она будет там висеть, пока не нажмете на клавишу Win, которая восстанавливает её координаты. Также можно двигать само меню "Пуск".
В общем, забавная фича-баг, которую, конечно, можно отфильтровать, если указать скрипту список запрещенных к перетаскиванию окон. Но я этим не стал заморачиваться; специально я таскать их не буду, а случайно—и подавно.
В итоге скрипт получился таким:
#include <WindowsConstants.au3>
#include <MsgBoxConstants.au3>
#include <Misc.au3>
Global $hWnd = 0
Global $isDragging = False
While True
; Проверяем, зажата ли левая кнопка мыши
If _IsPressed('01') and _IsPressed('12') Then
; Получаем текущее положение мыши
Local $mousePos = MouseGetPos()
If _IsMouseOnWindow($mousePos[0], $mousePos[1]) Then
; Если окно не выбрано, выбираем его
If $hWnd = 0 Then
$hWnd = WinGetHandle("")
; Запоминаем начальную позицию курсора
$startX = $mousePos[0]
$startY = $mousePos[1]
$winPos = WinGetPos($hWnd)
$offsetX = $startX - $winPos[0]
$offsetY = $startY - $winPos[1]
EndIf
$isDragging = True
EndIf
Else
; Отпускаем окно при отпускании левой кнопки
If $isDragging Then
$hWnd = 0
$isDragging = False
EndIf
EndIf
; Если мы в режиме перетаскивания
If $isDragging Then
; Получаем текущее положение мыши
$mousePos = MouseGetPos()
; Перемещаем окно
WinMove($hWnd, "", $mousePos[0] - $offsetX, $mousePos[1] - $offsetY)
EndIf
Sleep(5)
WEnd
Func _IsMouseOnWindow($x, $y)
; Создаем область определения для поиска окна под мышью
Local $hWndUnderMouse = WinGetHandle("")
Return ($hWndUnderMouse <> "")
EndFunc
Теперь при зажатом Alt я, не задумываясь где мой курсор, спокойно перетаскиваю или просто сдвигаю активное окно куда мне нужно.
Если кто-то так же страдает от тонких полосок для перетаскивания или одинакового цвета фона активной области окна и заголовка - думаю вам такое пригодится.
Любителей таскать окна с клавиатуры сразу предупрежу - это я умею. Просто не всегда удобно, ну и плюс с клавиатуры есть только ряд дискретных позиций.
p.s. Пикабу не умеет форматировать код:( - ну понятно..это ж не Хабр
У кого-нибудь в Крыму работает сайт autoit-script.ru (русское сообщество AutoIt)?
Сайт https://autoit-script.ru хостится на облачном хостинге Cloudflare, а американская компания Cloudflare ввела санкции против Крыма и заблокировала жителям полуострова доступ ко всем сайтам, размещенным на ее облачных серверах.
Даже программы с валидными цифровыми подписями могут содержать вирусы
Есть скриптовый язык AutoIt. Его интерпретатор (файл AutoIt3.exe), скачанный с официального сайта https://www.autoitscript.com, имеет валидную цифровую подпись, согласно следующим скриншотам:
Я закинул файл AutoIt3.exe на проверку на сервисе https://www.virustotal.com, но на него ругаются три антивируса:
Ссылка на отчет: https://www.virustotal.com/gui/file/237d1bca6e056df5bb16a121...
Неужели разработчики AutoIt сами занимаются легальным хакерством и создают легальные вирусы?
P.S. Баянометр выдал рекламу Эльдорадо.
Проблема TLS + Windows XP/Vista + Google Chrome 49 + autoit-script.ru
При попытке зайти на русскоязычный форум по скриптовому языку AutoIt https://autoit-script.ru через браузер Google Chrome 49.0.2623.112 на Windows XP SP3 и Windows Vista SP2 выскакивает следующая ошибка, при этом доступ к форуму блокируется:
Этот сайт не может обеспечить безопасное соединениеВ большинстве случаев проблема в устаревшей версии Windows. В Windows ниже 7-ки в Google Chrome этот форум не работает и вряд ли уже когда-нибудь заработает. Единственное решение - обновление до Windows 7 и выше.
На сайте autoit-script.ru используется неподдерживаемый протокол.
ERR SSL_VERSION_OR_CIPHER_MISMATCH
Убедитесь сами: https://www.ssllabs.com/ssltest/analyze.html?d=autoit-script...
Причина в том, что поддерживаемые данным форумом 2 несчастных набора шифров TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256 и TLS_CHACHA20_POLY1305_SHA256 появились только в современных версиях Google Chrome для Windows 7 и выше. Браузер Mozilla Firefox 52.9 ESR и браузеры на его движке (Pale Moon, Mypal, Centaury, Serpent, New Moon, K-Meleon), в отличие от Internet Explorer и Google Chrome, не пользуются встроенными в Windows XP/Vista наборами шифров, а используют свои собственные и всегда свежие наборы шифров, поэтому в них этот форум открывается.
Умножение/деление, сложение/вычитание для детей 1-3 класс
Когда мой ребенок начал учиться в школе я решил написать ему программу для того что бы он научился складывать, вычитать, умножать и делить в уме. Писал я ее если честно от скуки, когда на работе было свободное время, но моей программой заинтересовались родители подруги моей жены и им она понравилась, может кому то и здесь она придется по душе и поможет при занятиях с ребенком. Программы 2, одна для сложения и вычитания (числа не выше трехзначных, а результат не выходит в минус), вторая для умножения и деления (все ответы будут целыми числами, без дробей, числа не больше двухзначных). Счет ведется до 10 очков, в любой момент можно нажать F1 и посмотреть какой был пример, какой был ответ и какой ответ правильный. Ссылки на них https://yadi.sk/d/HLgIL-Jxyp0kIg - деление умножение, https://yadi.sk/d/TKrZ_BN0px7ZSw - сложение вычитание. Программы написаны для Windows скриптовым языком AutoIT.
Индикатор раскладки клавиатуры
Всем привет!
Хочу поделиться своей цифровой поделкой. Сразу скажу, что пошёл по пути меньшего сопротивления и написал на скриптовом языке AutoIt.
Langdicator - это цветовой индикатор языковой раскладки клавиатуры. Название происходит от слияния двух слов "Language" и "Indicator"
Преимущество - легко различить раскладку клавиатуры, фокусируя внимание на рабочей зоне. Не нужно переводить взгляд или пользоваться "переключалками" языков. Перед печатью вы заранее знаете на каком языке вы будете печатать.
Описание работы:
При загрузке операционной системы приложение загружается в память.
В верхней части экрана появляется цветной полупрозрачный прямоугольник.
Его цвет зависит от активного языка раскладки клавиатуры.
Размер индикатора формируется относительно разрешения экрана.
На индикатор не влияет курсор мыши (имеет сквозной клик).
Цвета фиксированные и привязанные к языкам:
Русский - зелёный
Украинский - жёлтый
Белорусский - белый
Английский - красный
Остальные языки - синий
Установка:
Установщик создаёт папку в папке с программами.
Создаёт там исполнительный файл и файл с деинсталлятором.
Копирует исполнительный файл в папку автозагрузки.
Добавляет приложение в список установленных приложений.
Предлагает перезагрузить компьютер.
В планах:
- Установка с "нормальным" установщиком
- Иконка в трее
- Регулировка размеров индикатора из иконки в трее
- Свободное присваивание цветов индикатору
ВНИМАНИЕ! Антивирус может ругаться на инсталлятор. Это особенность инсталлятора! Разрешите исполнение во время установки или выключите антивирус. После установки можете запретить исполнение установки на вашем компьютере. Антивирус всё равно убьёт ненужное. В будущем будет применен установщик без фокусов.
Вы можете скачать программу для самостоятельного добавления в автозагрузку.
Версия только для Windows!
Если кто умеет запиливать инсталляторы, то прошу помочь. Сходу не смог в инсталляторы.
Это первое моё творение, поэтому сильно не пинайте :)
Буду рад если кому-то пригодится.
Запилил пару страниц для удобного скачивания.
Ламповый конструктор для лентяев
Так как я не умею рисовать и при этом я лентяй и программист, а порисовать в "Ламповом конструкторе" хочется, то пришлось поднапрячь мозги и автоматизировать рисование.
Несколько лет назад я уже автоматизировал себе игру в "Зомби ферму" в ВК на AutoIt3, сейчас решил тоже его использовать.
Скрипт можно взять тут: https://pastebin.com/KQJ7Ed5p
Небольшой недостаток, что перед началом рисования нужно вручную устанавливать курсор на верхнюю левую лампу, а потом клавиатурой запускать скрипт.
Также возможно придётся чуток подправить скрипт если у вас браузер не Google Chrome и/или нестандартный масштаб.
Палитра доступных цветов не идеальна, поэтому не все картинки выходят хорошими.
Пример светодоски: https://pikabu.ru/page/newyear2019/?id=10%20YHXGE0WkA
Всех с наступающим новым годом!