1 (изменено: 1srafel, Вчера 03:05:01)

Тема: AHK: FileZones — быстрый доступ к файлам и папкам

Скрипт создаёт компактное окно с 6 настраиваемыми зонами (3×2), в каждой из которых можно держать быстрый доступ к папкам и файлам.

Возможности:

- Привязка папки к зоне — содержимое папки отображается в зоне и обновляется автоматически; можно скрывать отдельные объекты или всю папку без удаления файлов с диска.
- Ручное добавление файлов и папок в любую зону вместе с содержимым привязанной папки.
- Drag & Drop — перетаскивание файлов из Проводника в зону и между зонами; порядок объектов можно менять вручную.
- Три вида отображения: таблица с сортировкой по столбцам, крупные и обычные значки.
- Настройка внешнего вида: цвет каждой зоны, палитра, размер шрифтов, эскизы для выбранных типов файлов.
- Переименование зон, сброс к стандартному названию при очистке.
- Значок в трее с меню (показать/скрыть окно, настройки, справка, редактирование скрипта).
- Управление из внешнего AHK-скрипта — можно показывать/скрывать окно программно через оконное сообщение.
- Все настройки хранятся в INI-файле рядом со скриптом.
- Встроенная справка прямо в программе — описывает все команды, форматы файла настроек и способы внешнего управления.

---

https://github.com/Iskander1220/AutoHotkey_FileZones

2 (изменено: 1srafel, Вчера 16:29:26)

Re: AHK: FileZones — быстрый доступ к файлам и папкам

Не сработала отправка кода (3 тыс. строк) и присоединение, поэтому дал ссылку на GitHub.

3

Re: AHK: FileZones — быстрый доступ к файлам и папкам

Код для запуска из стороннего скрипта:



global ZonesPID := 0
global WM_ZONES_TOGGLE := 0x8042


ToggleZones() {
    global ZonesPID, WM_ZONES_TOGGLE

    hwnd := 0

    ; Сначала ищем окно ранее запущенного процесса.
    if (ZonesPID) {
        Process, Exist, %ZonesPID%
        if (ErrorLevel = ZonesPID)
            hwnd := WinExist("ahk_pid " ZonesPID " ahk_class AutoHotkeyGUI")
        else
            ZonesPID := 0
    }

    ; Например, процесс мог быть запущен вручную.
    if (!hwnd)
        hwnd := WinExist("FileZones ahk_class AutoHotkeyGUI")

    if (hwnd) {
        WinGet, ZonesPID, PID, ahk_id %hwnd%
        PostMessage, %WM_ZONES_TOGGLE%, 0, 0,, ahk_id %hwnd%
    } else {
        Run, % """" A_ScriptDir "\Include\FileZones.ahk""", %A_ScriptDir%, UseErrorLevel, ZonesPID
    }
}

Хоткей::
ToggleZones()

4

Re: AHK: FileZones — быстрый доступ к файлам и папкам

Яндекс-диск — не лучший выбор, он для скачивания потребовал авторизации с отправкой кода на телефон, геморройно, а без аккаунта вообще не скачать. Советую освоить GitHub.
Приложение у меня на ноутбуке с масштабированием экрана 200% открылось так:

+ открыть спойлер

https://i.ibb.co/Z6P6yCXc/77d7d2e1b981.png

без возможности перетащить.
После того, как я исхитрился его всё же сдвинуть в область экрана и уменьшить, в следующий раз открылось так:

+ открыть спойлер

https://i.ibb.co/whJS20tB/6c2d6217fec5.png

При указании внутренних координат в GUI нужно учитывать DPI (переменная A_ScreenDPI). Если указываете, например, ширину окна 500, то при масштабировании экрана 200% окно будет 1000 экранных пикселей в ширину.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

5

Re: AHK: FileZones — быстрый доступ к файлам и папкам

Скрипт перенесен на GitHub и внесены правки:

- добавлен коэффициент масштабирования на основе A_ScreenDPI / 96;
- внутренние размеры, отступы, зоны, кнопки и маркеры теперь переводятся в физические пиксели через Dpi();
- исключено повторное масштабирование динамически рассчитываемых координат;
- адаптировано главное окно и окно справки.

6

Re: AHK: FileZones — быстрый доступ к файлам и папкам

Пока не получилось:

+ открыть спойлер

https://i.ibb.co/C3FJpvFw/e37d8d5ca771.png

Кроме того, файл скачивается в кодировке UTF-8 без BOM, поэтому при запуске выдаёт ошибку:

Error at line 761.

Line Text: . "<p>Загрузка проходит в два этапа:</p>`r`n"
Error: Continuation section too long.

The program will exit.

Нужно, чтобы файл изначально был сохранён в UTF-8 с BOM и в таком виде закачан на GitHub (а не создан там из текста).

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

7

Re: AHK: FileZones — быстрый доступ к файлам и папкам

Обновил.

8

Re: AHK: FileZones — быстрый доступ к файлам и папкам

Теперь запускается и отображается правильно. Я не совсем понял, на что влияет эта настройка:
https://i.ibb.co/YT03Tpvm/8f9ca941d99a.png
?
Ещё обнаружил забавное:

EditScript() {
    Run, "notepad.exe" "%A_ScriptFullPath%"
}

В блокноте код практически никто не редактирует. Есть команда Edit, которая открывает файл в назначенном в системе редакторе ahk-файлов, если не назначен, то тот же блокнот.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

9 (изменено: 1srafel, Вчера 16:23:56)

Re: AHK: FileZones — быстрый доступ к файлам и папкам

Настройка - задание стартовых цветов для зон. Так как и цвета зон и эти стартовые цвета пишутся в один и тот же файл настроек - не очень логично, но может быть полезно для понимания, какие цвета участвуют в интерфейсе.

Поменял на Edit.

10

Re: AHK: FileZones — быстрый доступ к файлам и папкам

Команды Edit нет же после Windows XP. Нормально открывается командой run 'имя.ahk'

11 (изменено: 1srafel, Вчера 20:24:46)

Re: AHK: FileZones — быстрый доступ к файлам и папкам

- Убрана настройка «Начальные цвета»;
- Вместо Edit на всякий случай: «Run, "%A_ScriptFullPath%"».
В меню «Цвет зоны»:
- Активный цвет текущей зоны отмечается чёрной галкой;
- Цвета, используемые другими зонами, отмечаются серой галкой.

12

Re: AHK: FileZones — быстрый доступ к файлам и папкам

haridev пишет:

Команды Edit нет же после Windows XP

Это где такое написано, и как это связано с версией Windows? У меня работает на Windows 10 и 11.

haridev пишет:

Нормально открывается командой run 'имя.ahk'

В смысле, нормально открывается? Команда Run должна запускать скрипт, а не открывать его в редакторе. Если у вас не так, значит неправильно настроена ассоциация файла.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

13

Re: AHK: FileZones — быстрый доступ к файлам и папкам

1srafel пишет:

Вместо Edit на всякий случай: «Run, "%A_ScriptFullPath%"».

Так скрипт просто перезапускается.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

14

Re: AHK: FileZones — быстрый доступ к файлам и папкам

Применил вариант: если действие edit отсутствует или запуск завершился ошибкой, файл открывается в Блокноте.