Пётр
Ещё интересует как выгрузить или заблокировать плагин, если что-то пошло не так. Например в каждом запросе к Scintilla используется проверка
логично было бы проверку Scintilla сделать там же где и происходит её однократный вызов. Понятно что ни один запрос далее работать не будет и плаг надо выгружать. Одновременно я понимаю что это не критично, то есть проверить что число не равно 0 это быстрая операция, но хочется сделать правильно. Вызвать DetachProcess(Instance) не могу, так как там параметр Instance, но внутри функции Instance не используется ,можно попробовать любое число. Я попробовал содержимое функции выполнить как операцию выгрузки, но даже по контексту она просто отключает горячие клавиши. Хотелось бы вывести мессагу для пользователя, что плаг имеет проблему и будет выгружен. Также я понимаю что в 99.999% указатель на функцию Scintilla будет получен и выгрузка плага в большинстве лишний код.
Ещё момент код внутри функции AttachProcess() как и код в глобальном пространстве оба выполняются при подключении DLL, т.е. при Attach. Т.е. чтобы написать красиво, весь глобальный код должен быть в AttachProcess(), конечно я понимаю что объявления структур, констант и глобальных переменных должно быть снаружи, а вот логические сравнения, чтения ini-файла и т.д. должно быть в AttachProcess().
На счёт OnErrorCall(@FatalError()) это только для теста? я понимаю что она может помочь в выводе ошибок и пользователь может детально сообщить о проблеме, но как я понимаю это встраивает в логику компилируемого файла связь с номером строки и увеличивает размер файла, а понадобится ли это на практике, когда плаг оттестирован достаточно.
Отредактировано AZJIO (12.07.2021 09:51:49)