Добрый день.
На delphi прекрасно работает такой код
begin
DLLProc := @DLLMain;
DLLMain(DLL_PROCESS_ATTACH);
end.
..............................................
procedure DLLMain(Reason: DWORD);
begin
Case Reason Of
DLL_PROCESS_ATTACH :
begin // DLL_PROCESS_ATTACH
// if ..... then // какое-то условие
ExitCode := 1; //dll не будет загружаться
end; // DLL_PROCESS_ATTACH
End; //case
end;
В Free Pascal (использую 2.5.1)
ExitCode := 1 не работает
begin
DLLMain(DLL_PROCESS_ATTACH);
end.
...............................................
procedure DLLMain(Reason: DWORD);
begin
Case Reason Of
DLL_PROCESS_ATTACH :
begin // DLL_PROCESS_ATTACH
// if ..... then // какое-то условие
ExitCode := 1; //dll не будет загружаться
end; // DLL_PROCESS_ATTACH
End; //case
end;
Такое ощущение что ExitCode не используется при загрузке dll.
Как быть в подобной ситуации?
как принудительно предотвратить загрузку dll (ExitCode := 1)
Модератор: Модераторы
begin
DLLProc := @DLLMain;
DLLMain(DLL_PROCESS_ATTACH);
end.
Не понял я где это. В DLL?
Такое ощущение что ExitCode не используется при загрузке dll.
Как быть в подобной ситуации?
1. Забыть про DllMain. Это дерьмовая штука.
2. Использовать для инициализации DLL отдельную функцию.
Да уж.... Ответ А.Н. информативен до безобразия.....
Вообщем ничего лучшего как исправить родной system.pp (точнее syswin.inc)
и перекомпилировать RTL я не нашел.
Вообщем ничего лучшего как исправить родной system.pp (точнее syswin.inc)
и перекомпилировать RTL я не нашел.
Ну, про DllMain много написано. Что уж тут ещё приписать-то? Лучше забыть про неё, по-моему.
Хм... Каждый раз, при обновлении среды, исправлять и перекомпилировать?
Хм... Каждый раз, при обновлении среды, исправлять и перекомпилировать?
