Что нового

ASC - Каталогизатор AutoIt скриптов

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8,671
Репутация
2,481
Представляю вашему вниманию, специально для Русского сообщества AutoIt...

Каталогизатор AutoIt скриптов

ASC_About.png



ASC_Main.png
ASC_Settings.png

Скачать: Au3, Exe

Данный инструмент позволит вам каталогизировать ваши скрипты и проекты.

Возможности программы:
  • Авто обновление программы
  • Мультиязычность
  • Поддержка скинов
  • Встроенный плагин редактора скриптов
  • Работа из системного трея
  • Поддержка Drag & Drop в список скриптов, а также в список категории (в последнем случае можно перетаскивать папки)
  • Поддержка горячих клавиш (список см. ниже).
  • Хранение скриптов в локальной базе данных
  • Сортировка списка
  • Фильтрация и быстрый поиск по списку, включая поиск по содержимому скриптов
  • Копирование информации о выделенных скриптах
  • Копирование скриптов в другие категории
  • И многое другое

Список поддерживаемых горячих клавиш:
=== Для списка скриптов ===
Ctrl + Shift + S
- Создание нового скрипта
Ctrl + Shift + A - Добавление скриптов
Ctrl + Shift + C - Копировать скрипты в...
Ctrl + Alt + C - Копировать скрипты в другую категорию
Ctrl + R - Запустить скрипт
Ctrl + E - Редактировать скрипт
Ctrl + Shift + R - Переименовать скрипт
Shift + Del - Удалить файл скрипта с диска
Del - Удалить скрипт из списка
Ctrl + Shift + P - Копировать путь к скрипту
Ctrl + Shift + N - Копировать имя скрипта
Ctrl + Shift + I - Копировать информацию о скрипте
Ctrl + Shift + F - Копировать список функции скрипта
Ctrl + S - Задать комментарии для скрипта
Ctrl + D - Открыть папку скрипта

=== Для списка категории ===
Ctrl + Up
- Переместить вверх
Ctrl + Down - Переместить вниз
Ctrl + N - Создать новую категорию
Ctrl + G - Создать новую группу
Ctrl + Shift + E - Удалить пустые категории
Ctrl + Alt + E - Удалить несуществующие скрипты в категории
Ctrl + Shift + Del - Удалить категорию
Alt + C - Очистить категорию
Ctrl + Alt + R - Переименовать категорию

=== Общие ===
F12
- Вызвать диалог настроек
F1 - Вызвать диалог “О программе”

Примечание:
Код программы разрабатывался под AutoIt 3.3.6.1, но позже полностью был адаптирован под 3.3.8.1.



Мини FAQ...

Где можно скачать дополнительные скины и как их добавить?

Как перевести программу на другой язык?
  • Запускаем программу с параметром “/GenerateLangFile:LangName”, где LangName это имя языкового файла.
  • В папке Languages будет создан файл с указанным именем.
  • Далее открываете файл и переводите строчки на свой язык :smile:.
  • Также можно заполнить заголовок файла информацией, такой как версия программы (для которой готовится перевод), автор языкового файла, и т.д.

Как обновить файлы перевода под новую версию?
  • Запускаем программу с параметром “/GenerateLangFile”.
  • В существующих файлах перевода будут добавлены недостающие строчки для перевода.

* Для перевода плагинов, нужно брать как шаблон секцию [Plugins Translation] из файла English.lng.



Предложения по улучшению и замечания очень приветствуются.
 

Вложения

  • ASC_Exe_v1.7.zip
    1.9 МБ · Просмотры: 31
  • ASC_Src_v1.7.zip
    1.2 МБ · Просмотры: 35
Последнее редактирование:

Yashied

Модератор
Команда форума
Глобальный модератор
Сообщения
5,379
Репутация
2,724
А почему скриншот без скина? Со скином намного красивее выглядит.
 
Автор
CreatoR

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8,671
Репутация
2,481
Yashied [?]
А почему скриншот без скина?
Да да, забыл :smile:. Обновил скрин.

Со скином намного красивее выглядит
Кстати, со скином медленнее обработка списка, не в курсе почему?


P.S.
А как сама утилита, по функционалу в смысле, нужна она вообще?
 

Yashied

Модератор
Команда форума
Глобальный модератор
Сообщения
5,379
Репутация
2,724
CreatoR сказал(а):
А как сама утилита, по функционалу в смысле, нужна она вообще?

Сейчас буду играться...
 

kaster

Мой Аватар, он лучший самый
Команда форума
Глобальный модератор
Сообщения
4,020
Репутация
626
мне кажется, картинки на кнопках лучше использовать непрозрачные. а то полоски фона просвечивают, некрасиво
 
Автор
CreatoR

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8,671
Репутация
2,481
Kaster [?]
картинки на кнопках лучше использовать непрозрачные
Тогда если не использовать скин будет выглядеть не очень. Нужно как то проверять...
 
Автор
CreatoR

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8,671
Репутация
2,481
Обновление...

[1.1]
* Косметические поправки в коде.
* Переработка дизайна:
* Кнопки управления категориями заменены контекстным меню (в списке категории).
* Кнопки с иконками теперь отображаются корректно при включённом скине.
* Изменены горячие клавиши. Теперь все г. клавиши можно легко изменить задав нужные значения у констант в начале скрипта (в секции инициализации).
+ Добавлены г. клавиши для управления категориями.
+ Добавлена возможность восстановления настроек по умолчанию.
+ Добавлена командная строка для поддержки генерации языкового файла.
Если программа запущена с параметром "/GenerateLangFile:LangName", то языковый файл генерируется как LangName.lng.
В случае если LangName не указан, то существующие файлы дополняются отсутствующими строчками для перевода.
Полезно при создании нового файлового языка, а также при обновлении программы, чтобы иметь возможность иметь свои переведённые строчки
(только новые, недостающие строчки будут добавлены в указанный языковый файл).
- Убрана опция добавления подкатегории (по причине некоторых сложностей при перемещении элементов списка).

Утилита теперь доступна отдельно в скомпилированном виде.
 

Yashied

Модератор
Команда форума
Глобальный модератор
Сообщения
5,379
Репутация
2,724
А что мешает использовать WinAPIEx UDF? Отсюда и все недочеты. Например, в WM_DROPFILES нужно вызывать DragFinish(). Что бы в Vista+ с UAC работал WM_DROPFILES нужно добавить исключение (см. ChangeWindowMessageFilterEx()).


Добавлено:
Сообщение автоматически объединено:

Опять же, что бы интерфейс не зависил от используемого в системе шрифта, лучше задать шрифт однозначно - "Microsoft Sans Serif" (я об этом писал здесь).


Добавлено:
Сообщение автоматически объединено:

OnAutoItExitRegister() стоит до объявления всех переменных, но в самой функции выхода они используются. В принципе ничего страшного, но порядка ради...


Добавлено:
Сообщение автоматически объединено:

Не совсем понял смысл следующей записи:

Код:
If Not IsDeclared('WM_DROPFILES') Then Assign('WM_DROPFILES', 0x233, 2)


Мне кажется это лишнее.


Добавлено:
Сообщение автоматически объединено:

Это неправильный вызов функции.

Код:
Func _WinAPI_GetWindowFromPoint($XPoint, $YPoint)
	Local $aResult = DllCall("User32.dll", "hwnd", "WindowFromPoint", "int", $XPoint, "int", $YPoint)
	Return $aResult[0]
EndFunc



Добавлено:
Сообщение автоматически объединено:

Код:
If Not Execute(GUICtrlRead($Filter_Input) == $sOld_Filter_Text) Then


Зачем здесь использовать Execute()?


Добавлено:
Сообщение автоматически объединено:

Код:
ControlEnable($hSetting_GUI, "", $iSettings_OK_Button)


И ControlEnable()?


Добавлено:
Сообщение автоматически объединено:

Код:
DllCall("user32.dll", "ptr", "SendMessage", "hwnd", $hWnd, "int", $WM_INPUTLANGCHANGEREQUEST, "int", 1, "int", $aRet[0])


Нужно так (последние два параметра):

Код:
DllCall("user32.dll", "lresult", "SendMessage", "hwnd", $hWnd, "uint", $WM_INPUTLANGCHANGEREQUEST, "uint_ptr", 1, "uint_ptr", $aRet[0])



Добавлено:
Сообщение автоматически объединено:

Когда я нажимаю левую кнопку мыши в пустом месте списка, то такие пункты меню, как "Run Script", "Edit Script" и т.д., доступны...

:smile:


Добавлено:
Сообщение автоматически объединено:

Почему ты не сделал защиту от повторного запуска?
 
Автор
CreatoR

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8,671
Репутация
2,481
Yashied [?]
что мешает использовать WinAPIEx UDF?
Привязанность к старым методам?

Например, в WM_DROPFILES нужно вызывать DragFinish(). Что бы в Vista+ с UAC работал WM_DROPFILES нужно добавить исключение (см. ChangeWindowMessageFilterEx()).
Подробнее можно, желательно с примерами.

OnAutoItExitRegister() стоит до объявления всех переменных, но в самой функции выхода они используются. В принципе ничего страшного, но порядка ради...
Поправлю, спасибо.

Мне кажется это лишнее.
Вся строка? Без неё ругается в 3.3.6.1 (там нет этой константы).

Зачем здесь использовать Execute()?
Не помню :stars:. Ты не поверишь, но скрипт начал писать пару лет назад.

А вот это нужно, чтобы активировать кнопку «OK» в диалоге настроек при обновлении полей ввода.
Заметь, она активна только после первого ввода пользователя.

Когда я нажимаю левую кнопку мыши в пустом месте списка, то такие пункты меню, как "Run Script", "Edit Script" и т.д., доступны...
Ты наверно имел в виду правую? :smile:
Ну я это ещё не реализовал, хотя в задумках есть.
Но в любом случае, эти пункты не реагируют если нет выделения.

Почему ты не сделал защиту от повторного запуска?
Слишком много ToDo'шек :laugh:
Сделаю, спасибо за напоминание.
 

Yashied

Модератор
Команда форума
Глобальный модератор
Сообщения
5,379
Репутация
2,724
CreatoR сказал(а):
Подробнее можно, желательно с примерами.

WinAPIEx UDF => _WinAPI_DragQueryFileEx.au3

CreatoR сказал(а):
Вся строка? Без неё ругается в 3.3.6.1 (там нет этой константы).

Ну ведь ты пишешь не UDF, а готовую программу и под 3.3.6.1. Просто объяви ее в самом скрипте. Зачем городить огород и усложнять код ради ненужной совместимости?

CreatoR сказал(а):
Не помню. Ты не поверишь, но скрипт начал писать пару лет назад.

Здесь Execute() не нужен. Да и вообще, в очень редких случаях может понадобиться.

CreatoR сказал(а):
А вот это нужно, чтобы активировать кнопку «OK» в диалоге настроек при обновлении полей ввода.

GUICtrlSetState()?
 

Zaramot

I ♥ AutoIt
Сообщения
1,160
Репутация
660
Исправь ошибку со шрифтом:


При смене языка на русский...

PS. Windows XP SP3
 
Автор
CreatoR

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8,671
Репутация
2,481
Yashied [?]
Ну ведь ты пишешь не UDF, а готовую программу и под 3.3.6.1. Просто объяви ее в самом скрипте. Зачем городить огород и усложнять код ради ненужной совместимости?
Ну я писал под 3.3.6.1, но хочу чтобы ей могли пользоваться и под 3.3.8.1, что в этом плохо?
Может сделать поддержку только последней версии?

А какая разница?
Просто в начале я не хотел объявлять переменную для кнопки и использовал её ClassNN, но потом решил что надёжнее будет использовать именно ID (в случае изменении), а функцию так и не сменил.

Zaramot [?]
Исправь ошибку со шрифтом:
А без скина?
 
Автор
CreatoR

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8,671
Репутация
2,481
Архивы перезалил, с некоторыми косметическими поправками в коде. Версия не изменилась.
 

Yashied

Модератор
Команда форума
Глобальный модератор
Сообщения
5,379
Репутация
2,724
CreatoR сказал(а):
А какая разница?

Как между небом и землей. Все Control... функции сначала ищут родительское окно, затем перечисляют все его элементы для определения необходимого ID, и только затем посылают соответствующее сообщение. В случае работы с текстом, например ControlGetText(), все еще намного сложнее, т.к. необходимо перенаправить поток ввода из чужого процесса в свой... GUICtrl... функции работают напрямую и только в своем процессе, что намного проще и быстрее.

Control... функции нужно использовать только для окон, созданных не AutoIt средствами.
 
Автор
CreatoR

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8,671
Репутация
2,481
Yashied [?]
в WM_DROPFILES нужно вызывать DragFinish()
После чего $GUI_EVENT_DROPPED уже не срабатывает, а оно мне нужно чтобы обработать сброшенные файлы.

[?]
WinAPIEx UDF => _WinAPI_DragQueryFileEx.au3
Использовал только _WinAPI_DragQueryFileEx.
Мне кажется нет смысла усложнять в этом случае, зачем ещё один Callback, когда есть WM_DROPPED.
 
Автор
CreatoR

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8,671
Репутация
2,481
[?]
зачем ещё один Callback, когда есть WM_DROPPED.
И к тому же непонятно как обрабатывать несколько элементов, мне нужно задать перетаскивание для двух ListView, какой $hProc возвращать потом из WM_DROPPED?
 
Автор
CreatoR

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8,671
Репутация
2,481
Обновление...

[1.2]
+ Добавлен модуль авто обновления программы.
* Теперь исходный код программы полностью совместим только с AutoIt 3.3.8.1.
* Улучшена обработка Drag & Drop.
* Исправлена проблема со шрифтами.
* Исправлены некоторые функции для совместимости с x64.
* Исправлена проблема с не переведёнными строками.
* Мелкие поправки в интерфейсе программы.
* Теперь только одна копия программы может быть запущена.
* Теперь пункты меню которые не могут быть выполнены, не активны (не доступны для нажатия).
 
Верх