Вниз
Скачать: CL | DM;

Как предотвратить загрузку Dll в определенный процесс   Найти похожие ветки 

 
vic_vm   (2003-09-20 16:05) [0]

Где-то встречал примерно такой метод предотвращения загрузки Dll в определенный процесс:
В DllMain на уведомление DLL_PROCESS_ATTACH определяем имя главного модуля процесса и если не хотим чтобы наша Dll загружалась возвращаем в значении функции FALSE.
Проблемма в том что в MFC DllMain это функция, а в Delphi это процедура. Как быть?


 
MBo ©   (2003-09-20 16:47) [1]

получилось так:

library DllPr;

uses
Windows, dialogs;

procedure A(var Param:Integer);
begin
Param:=Param+1;
end;

procedure DLLEntryPoint(dwReason: DWord);
var lproc: string;
l:integer;
begin
case dwReason of
DLL_PROCESS_ATTACH: begin
setlength(lproc,max_path);
l:=getmodulefilename(0,Pchar(lproc),max_path);
setlength(lproc,l);
ShowMessage("Attaching to process "+lproc);
if pos("Project2",lproc)>0 then
ExitCode:=1;
end;
DLL_PROCESS_DETACH: ;
end;
end;

exports
A;

begin
DllProc := @DLLEntryPoint;
DLLEntryPoint(DLL_PROCESS_ATTACH);
end.


 
vic_vm   (2003-09-21 13:53) [2]

2 MBo
Ну и что мы в итоге получим?
Запускаю Project2 из под делфей и все равно вижу
в списке модулей (View->Debug Windows->Modules) DllPr.dll
А если запускаю Project2 без делфей то он вообще не запускается.
Пишет "Ошибка при инициализации приложения (0x0000142). Для выхода нажмите кнопку OK"


 
vic_vm   (2003-09-21 14:02) [3]

Поправлюсь - этот код не работает в случае
ранего связывания
procedure A; external "DllPr.dll" name "A";

А при позднем связывании
LoadLibrary("DllPr.dll");
Все работает нормально.


 
Digitman ©   (2003-09-22 16:06) [4]


> vic_vm


тебе ж говорят : состояние переменной ExitCode, устанавливаемая тобой в хде иниц-ции DLL, известит ОС об успешной либо неуспешной инициализации библ-ки

ExitCode = 0 - иниц-я прошла успешно
ExitCode = 1 - иначе



Страницы: 1 вся ветка

Скачать: CL | DM;



Память: 0.46 MB
Время: 0.014 c
1-56682
Hermit
2003-11-07 17:12
2003.11.17
Формы


3-56494
smu
2003-10-28 11:10
2003.11.17
Здравствуйте. Как правильно работать с транзакциями в firebird?


1-56758
McSimm2
2003-11-06 15:53
2003.11.17
Set of


1-56614
amisare
2003-11-05 19:30
2003.11.17
Снова TFileStream


1-56582
Игоряныч
2003-11-06 09:21
2003.11.17
Есть у кого нибудь исходник - как печатать из делфи через Word.




   Наверх