Total Commander Forum Index Total Commander
Форум поддержки пользователей Total Commander
Сайты: Все о Total Commander | Totalcmd.net | Ghisler.com | RU.TCKB
 
 RulesRules   SearchSearch   FAQFAQ   MemberlistMemberlist   UsergroupsUsergroups   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

Single Post  Topic: Autorun 
Author Message
Orion9



PostPosted: Sat Mar 07, 2026 12:57    Post subject: Reply with quote

Решение от AkulaBig рабочее, у меня этот код проблем не вызывает. Тем не менее, решил сделать альтернативный код, использующий другой алгоритм поиска кнопки.

Делал из интереса, поэтому некоторые моменты не учтены (например, работа с ключем в реестре), но разделение на блоки позволяет легко внести нужные изменения, если они потребуется.

Пример хорошо демонстрирует всю мощь и великолепие скриптового языка, которым стал современный Autorun. Тут вам и запуск в отдельном потоке, и чтение ключей из ini, и проверка существования файлов и каталогов, и раскрытие переменных окружения, и создание массивов, и выполнение операций в цикле, и работа со строками, и вызовы DllCall... Матерь божья! Laughing Чувак сделал целый скриптовый движок!

 Hidden text

Что касается алгоритма, принцип примерно такой же. Каждые 50 миллисекунд после старта ТС происходит поиск окна триала. Если окно найдено, перечисляются все элементы управления через вызов EnumChildWindows. Далее сравнивается текст и класс каждого элемента, при совпадении посылается SendMessage.

Пример перечисления есть в справке (объект Callback), он был взят за основу.

Код можно вставить в любое место, но первый вызов "RunThread" должен обязательно идти после "LoadLibrary Plugins", поскольку используются дополнительные функции из модулей такие, как WinFind и ShowHint.

Если dbg = 1, то при запуске с удержанием CTRL отобразится отладочная информация в окне подсказки.

Возможно, запуск в отдельном потоке поможет избавится от конфликта с другими приложениями и плагинами, если таковой конфликт имелся.
View user's profile Send private message


Powered by phpBB © 2001, 2005 phpBB Group