DLL에서는 4가지 메시지가 있습니다.
로드될때, 해제될때, 스레드를 생설할때, 스레드를 종료할때.
DLL의 DllProc라는 전역객체에 우리가 원하는 프로시져를 할당하여, 각각의 메시지에서 원하는 작업을 하면 됩니다.
DLL이 로드될때 DllProc에 프로시져를 할당하smsep, Dll의 시작점은 프로젝트파일의 begin end 부분입니다.
아주 잘하는 사람이 만들어 놓은 예제를 보면,
//보통 DLLEntryPoint라는 이름을 쓴답니다. 그리고 반드시 인자는 DWord형 하나고요.
library SomeDLL;
...
procedure DLLEntryPoint(dwReason: DWord);
begin
case dwReason of
DLL_PROCESS_ATTACH: ShowMessage('Dll 실행');
DLL_PROCESS_DETACH: ShowMessage('Dll 제거'); //이게 DLL의 종료시점이 되겠네요.
DLL_THREAD_ATTACH: ShowMessage('Thread 실행');
DLL_THREAD_DETACH: ShowMessage('Thread 제거');
end;
end;
begin
//원하는 프로시져를 할당하고요.
DllProc := @DLLEntryPoint;
//생성시에는 메시지를 날려줍니다.
DLLEntryPoint(DLL_PROCESS_ATTACH);
end.
로드될때, 해제될때, 스레드를 생설할때, 스레드를 종료할때.
DLL의 DllProc라는 전역객체에 우리가 원하는 프로시져를 할당하여, 각각의 메시지에서 원하는 작업을 하면 됩니다.
DLL이 로드될때 DllProc에 프로시져를 할당하smsep, Dll의 시작점은 프로젝트파일의 begin end 부분입니다.
아주 잘하는 사람이 만들어 놓은 예제를 보면,
//보통 DLLEntryPoint라는 이름을 쓴답니다. 그리고 반드시 인자는 DWord형 하나고요.
library SomeDLL;
...
procedure DLLEntryPoint(dwReason: DWord);
begin
case dwReason of
DLL_PROCESS_ATTACH: ShowMessage('Dll 실행');
DLL_PROCESS_DETACH: ShowMessage('Dll 제거'); //이게 DLL의 종료시점이 되겠네요.
DLL_THREAD_ATTACH: ShowMessage('Thread 실행');
DLL_THREAD_DETACH: ShowMessage('Thread 제거');
end;
end;
begin
//원하는 프로시져를 할당하고요.
DllProc := @DLLEntryPoint;
//생성시에는 메시지를 날려줍니다.
DLLEntryPoint(DLL_PROCESS_ATTACH);
end.
즐코하세요...^^