Автор Тема: IncludesHelper - менеджер включаемых файлов для SciTE  (Прочитано 11279 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн asdf8 [?]

  • AutoIt Гуру
  • *****
  • Сообщений: 560

  • Автор темы
  • Репутация: 150
    • Награды
Я тоже, постоянно пользуюсь обфускатором (код из поста CreatoR), если в коде используются несколько функций, скажем из UDF WinAPIEx - без обфускатора, при компиляции, в скрипт попадет весь файл WinAPIEx.au3, плюс файлы APIConstants.au3 и WinAPI.au3 (в сумме больше 1,5 Мб).
 А эту утилиту начал делать, после того, как несколько раз после Organize Includes пришлось искать недостающие константы для скрипта, например:

Код: AutoIt [Выделить]
;Только при установленной библиотеке "WinAPIEx"

$var = BitOR($PROCESS_VM_OPERATION, $PROCESS_VM_READ)

;Результат  Includes Helper  :#Include <ProcessConstants.au3>
;Результат  Organize Includes:#Include <APIConstants.au3> - хотя в APIConstants.au3 эти константы закомментированы
 


Русское сообщество AutoIt

Re: IncludesHelper - менеджер включаемых файлов для SciTE
« Ответ #15 Отправлен: Август 06, 2011, 12:20:00 »

Оффлайн madmasles [?]

  • Глобальный модератор
  • *
  • Сообщений: 7790
  • Репутация: 2313
  • Пол: Мужской
  • Награды За модерирование форума
    • Награды
  • Версия AutoIt: 3.3.x.x
Не совсем по теме, но после использования
Код: AutoIt [Выделить]
#AutoIt3Wrapper_Run_Obfuscator=y
#Obfuscator_Parameters=/striponly

Обфускатор мне выдал в консоль
Цитировать
-### StripOnly Error: Found DllCallbackRegister() statement using unsolvable Func, which will/could lead to removal of Funcs that are used by the Call() statement.
>### current Func: _Timer_SetTimer
C:\Program Files\AutoIt3\include\Timers.au3(275,1) Warning for line:$hCallBack = DllCallbackRegister($sTimerFunc, "none", "hwnd;int;uint_ptr;dword")

-#############################################################################################
-#### Obfuscator Found   1 Error(s)!!!!    This means your script could have problems running properly.  ####
-#############################################################################################
- Iteration 1 Strip Functions result: Output  9917 lines and stripped 15393 lines
- Iteration 2 Strip Variables result: Output  5768 lines and stripped 4096 lines
- Iteration 3 Strip Variables result: Output  5694 lines and stripped 74 lines
- Iteration 4 Strip Variables result: Output  5693 lines and stripped 1 lines
+> Source    64379 lines 3203176 Characters.
+> Stripped  19564 Func/Var lines and  38965 comment lines, Total 2982652 Characters.
+> Saved     90% lines 93% Characters.
И, соответственно, нерабочий скомпилированный вариант.

Оффлайн asdf8 [?]

  • AutoIt Гуру
  • *****
  • Сообщений: 560

  • Автор темы
  • Репутация: 150
    • Награды
Для обфускатора есть команды:
Код: AutoIt [Выделить]
#Obfuscator_Ignore_Funcs= MyFync_1, MyFync_2
#Obfuscator_Ignore_Variables= $var_1, $var_2
 


можно указать, какие функции и переменные не удалять из скрипта

Оффлайн CreatoR [?]

  • Администратор
  • *
  • Сообщений: 7806
  • Репутация: 2279
  • Пол: Мужской
  • AutoIt is simple, subtle, elegant
    • CreatoR's Lab
    • Награды
  • Версия AutoIt: 3.3.10.2
asdf8  [?]
Цитировать
А эту утилиту начал делать, после того, как несколько раз после Organize Includes пришлось искать недостающие константы для скрипта
Ну так это делает #AutoIt3Wrapper_Add_Constants, правда добавляет сразу весь файл с нужной константой. Но как писалось выше, обфускатор это исправляет на стадий компилляций. Поэтому если честно не вижу особого смысла в данной утилите, хотя конечно могу ошибаться.


Правила, Поиск, Супер тема


AutoIt is simple, subtle, elegant.


«Не оказываю тех. поддержку через ПМ/ICQ, и по электронной почте - для этого есть форум. (C)»
«Законы Мэрфи неоспоримы!»


Мои работы

Русское сообщество AutoIt

Re: IncludesHelper - менеджер включаемых файлов для SciTE
« Ответ #18 Отправлен: Август 06, 2011, 13:24:31 »

Оффлайн AZJIO [?]

  • VIP
  • *
  • Сообщений: 2706
  • Репутация: 1136
    • мой сайт
    • Награды
  • Версия AutoIt: 3.3.8.1
madmasles
Последний варинат который мне понравился
Код: AutoIt [Выделить]
#AutoIt3Wrapper_Run_Obfuscator=y
#Obfuscator_Parameters=/sf /sv /om /cs=0 /cn=0
#AutoIt3Wrapper_Run_After=del /f /q "%scriptdir%\%scriptfile%_Obfuscated.au3"

Его отличие тем, что он даёт рандомные короткие имена переменных и  функций, а это тоже делает скрипт компактным. И строка на удаление временного обфуцированного файла.

asdf8
Organize Includes не проверяет вложенные Include в Include, а вообще утилита с полезными регулярками. Я её не мог запустить потому что не знал что она требует в обязательном порядке SciTE, поэтому сделал свой вариант, независимый от SciTE.

CreatoR
Цитировать
Поэтому если честно не вижу особого смысла в данной утилите, хотя конечно могу ошибаться.
Лично я не всегда компилирую файлы,  и тестирую до компиляции и старые скрипты обычно не содержат нужных Include, поэтому тестить их нескомпилированными проблематично.

Оффлайн asdf8 [?]

  • AutoIt Гуру
  • *****
  • Сообщений: 560

  • Автор темы
  • Репутация: 150
    • Награды
Цитировать
если честно не вижу особого смысла в данной утилите, хотя конечно могу ошибаться.

CreatoR, но кроме констант есть еще функции и глобальные переменные, и кроме папки "Include" необходимые для работы скрипта "запчасти" могут находиться в папке скрипта (а в общем случае - где угодно).
И, если, в этой утилите нет особого смысла - тогда в Organize Includes смысла еще меньше.

Цитировать
поэтому сделал свой вариант, независимый от SciTE

AZJIO,  под npp, действительно легко переделать, они же на одном движке с SciTE.

Еще хотелось бы прояснить, то, что Includes Helper указывает минимально необходимый набор include, означает только, что код будет выглядеть более аккуратно. При компиляции, если не пользоваться обфускатором с соответствующими опциями, в выходной файл будут добавлены целиком все указанные в скрипте include и, рекурсивно, все include, указанные в тех include.

Оффлайн AZJIO [?]

  • VIP
  • *
  • Сообщений: 2706
  • Репутация: 1136
    • мой сайт
    • Награды
  • Версия AutoIt: 3.3.8.1
asdf8
Цитировать
Еще хотелось бы прояснить, то, что Includes Helper указывает минимально необходимый набор include, означает только, что код будет выглядеть более аккуратно. При компиляции, если не пользоваться обфускатором с соответствующими опциями, в выходной файл будут добавлены целиком все указанные в скрипте include и, рекурсивно, все include, указанные в тех include.
Да, я эту фичу "минимальный набор" в своём варианте добавил.
А вообще в UDF первой строкой идёт #include-once, так что два раза один и тот же UDF по любому не добавится.

Цитировать
под npp, действительно легко переделать, они же на одном движке с SciTE.
Я вообще то не нашёл способ передачи команд npp, как это делает SciTE, а то бы ещё одну утилитку хотел сделать аналог "SciTE Hopper". Искал в инете способы создания плагов, но пока полезного не нашёл.

Оффлайн asdf8 [?]

  • AutoIt Гуру
  • *****
  • Сообщений: 560

  • Автор темы
  • Репутация: 150
    • Награды
Цитировать
А вообще в UDF первой строкой идёт #include-once

не всегда, бывают очень "своеобразные" UDF.

Цитировать
Я вообще то не нашёл способ передачи команд npp, как это делает SciTE, а то бы ещё одну утилитку хотел сделать аналог "SciTE Hopper". Искал в инете способы создания плагов, но пока полезного не нашёл.

Мне npp тоже больше нравится, и перешел бы на него, если б он сохранял фолдинг для файлов при открытии.
Когда-то делал UDF, для работы с npp, посмотри - может найдешь что-то нужное.

Русское сообщество AutoIt

Re: IncludesHelper - менеджер включаемых файлов для SciTE
« Ответ #22 Отправлен: Август 06, 2011, 18:28:18 »

Оффлайн AZJIO [?]

  • VIP
  • *
  • Сообщений: 2706
  • Репутация: 1136
    • мой сайт
    • Награды
  • Версия AutoIt: 3.3.8.1
asdf8
Цитировать
если б он сохранял фолдинг
я законченные функции просто перекладываю во временный скрипт-UDF, который режит рядом, чтоб функции не моячили в коде, а при окончании проекта вставляю в общий скрипт. Но сделав JumpToString для Notepad++, аналог "SciTE Hopper",  не вижу теперь смысла в этих операциях, да и вообще UDF юзать стало одно удовольствие. Спасибо за nppUDF.au3.

Оффлайн asdf8 [?]

  • AutoIt Гуру
  • *****
  • Сообщений: 560

  • Автор темы
  • Репутация: 150
    • Награды
Обновил версию.
Список изменений в первом посте.

Оффлайн asdf8 [?]

  • AutoIt Гуру
  • *****
  • Сообщений: 560

  • Автор темы
  • Репутация: 150
    • Награды
AZJIO  [?]
Цитировать
Может в IncludesHelper необходимо добавить строку
#include<SendMessage.au3>
А зачем?

Оффлайн CreatoR [?]

  • Администратор
  • *
  • Сообщений: 7806
  • Репутация: 2279
  • Пол: Мужской
  • AutoIt is simple, subtle, elegant
    • CreatoR's Lab
    • Награды
  • Версия AutoIt: 3.3.10.2
asdf8  [?]
Цитировать
А зачем?
В 3.3.6.1 она нужна для _SendMessage.

В 3.3.8.0+ SendMessage.au3 включена в WinAPI.au3, которая включена в Security.au3, которая в данном скрипте включена в Memory.au3 (из MemoryDll.au3) :wacko: .

В 3.3.6.1 в Security.au3 нет #include "WinAPI.au3".

Оффлайн asdf8 [?]

  • AutoIt Гуру
  • *****
  • Сообщений: 560

  • Автор темы
  • Репутация: 150
    • Награды
Спасибо, понял.
Давно не пользовался  3.3.6.1
Поправлю.

Русское сообщество AutoIt

Re: IncludesHelper - менеджер включаемых файлов для SciTE
« Ответ #27 Отправлен: Февраль 23, 2012, 16:25:38 »

 

Похожие темы

  Тема / Автор Ответов Последний ответ
7 Ответов
6405 Просмотров
Последний ответ Апрель 16, 2011, 00:12:31
от CreatoR
32 Ответов
16589 Просмотров
Последний ответ Октябрь 31, 2012, 15:40:17
от beve
8 Ответов
4992 Просмотров
Последний ответ Июнь 24, 2015, 06:12:29
от madmasles
39 Ответов
29743 Просмотров
Последний ответ Май 03, 2015, 18:09:20
от CreatoR
4 Ответов
2663 Просмотров
Последний ответ Октябрь 05, 2011, 15:27:15
от cobra2029
27 Ответов
13294 Просмотров
Последний ответ Февраль 19, 2014, 00:33:34
от erlik
263 Ответов
77121 Просмотров
Последний ответ Август 16, 2017, 17:52:56
от barbituraat
0 Ответов
1088 Просмотров
Последний ответ Январь 16, 2016, 22:31:28
от shasoft
3 Ответов
757 Просмотров
Последний ответ Ноябрь 10, 2016, 18:03:36
от Lknomad
4 Ответов
408 Просмотров
Последний ответ Июль 08, 2017, 19:37:17
от Vovsla