Что нового

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

CreatoR

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

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




Скачать: 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.



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

Yashied

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

CreatoR

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

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


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

Yashied

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

kaster

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

CreatoR

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

CreatoR

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

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

Yashied

Модератор
Команда форума
Глобальный модератор
Сообщения
5 379
Репутация
2 702
А что мешает использовать 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 156
Репутация
2 329
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 702
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
Репутация
657
Исправь ошибку со шрифтом:


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

PS. Windows XP SP3
 
Автор
CreatoR

CreatoR

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

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

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

CreatoR

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

Yashied

Модератор
Команда форума
Глобальный модератор
Сообщения
5 379
Репутация
2 702
CreatoR сказал(а):
А какая разница?
Как между небом и землей. Все Control... функции сначала ищут родительское окно, затем перечисляют все его элементы для определения необходимого ID, и только затем посылают соответствующее сообщение. В случае работы с текстом, например ControlGetText(), все еще намного сложнее, т.к. необходимо перенаправить поток ввода из чужого процесса в свой... GUICtrl... функции работают напрямую и только в своем процессе, что намного проще и быстрее.

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

CreatoR

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

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

CreatoR

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

CreatoR

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

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

rusreg79

Продвинутый
Сообщения
159
Репутация
57
Кнопка "Развернуть" не активна
 
Верх