C++Builder Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
C++빌더 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
메신저 프로젝트
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C++빌더 Q&A
C++Builder Programming Q&A
[11349] Re:[질문]Dll로 실행된 프로그램의 메모리를 알려면?
박지훈.임프 [cbuilder] 1343 읽음    2001-09-22 04:43
임프랍니다.

현재 프로세스에 특정 dll이 로드되었는지를 검사하려면 Win32 API 함수인 GetModuleHandle()을 쓰면 됩니다.
이 함수의 인자로 dll 이름을 넘겨주면 현재 로드된 인스턴스의 핸들을 돌려주는데, 만약 해당 dll이 로드
되지 않았다면 NULL을 리턴합니다.

이걸 이용해서 간단한 예제를 만들어봤습니다.
다음은 빌더에 포함된 패키지들 중 현재 로드된 bpl들을 알아내는 예제입니다.
먼저 빈 프로젝트의 빈 폼에 리스트박스 하나와 버튼 하나를 놓고, 버튼의 OnClick 이벤트 핸들러에서
다음과 같이 코딩하세요.

void __fastcall TForm2::Button1Click(TObject *Sender)
{
    char *Dlls[] = {"Vcl50.bpl", "Vclx50.bpl", "bcbsmp50.bpl", "Vcldb50.bpl",
                    "vclado50.bpl", "ibsmp50.bpl", "VCLBDE50.bpl", "vcldbx50.bpl",
                    "Qrpt50.bpl", "TeeUI50.bpl", "TeeDB50.bpl", "Tee50.bpl",
                    "Dss50.bpl", "TeeQR50.bpl", "VCLIB50.bpl", "Vclmid50.bpl",
                    "vclie50.bpl", "Inetdb50.bpl", "Inet50.bpl", "NMFast50.bpl",
                    "webmid50.bpl", "dclocx50.bpl", "bcb2kaxserver50.bpl",
                    "bcbie50.bpl", "Indy50"};
    for(int i=0; i<sizeof(Dlls)/sizeof(char *); i++)
    {
        HMODULE hModule = GetModuleHandle(Dlls[i]);
        ListBox1->Items->Add(AnsiString(Dlls[i]) + " : " + (hModule?"Loaded":"Not Loaded"));
    }
}

이 예제 코드를 이용하면 프로젝트에서 bpl을 빼고 빌드하셨을 경우 함께 배포해야 하는 bpl이 무엇무엇인지
알아낼 수 있습니다.

그럼 이만...


ppiri 님이 쓰신 글 :
: 프로젝트에서 메모리를 통해 dll이 실행중인지 아닌지를 확인할려구 합니다.
: 확인하는 방법을 좀 알려주세요..
: 고수님들 답변 부탁합니다.

+ -

관련 글 리스트
11286 [질문]Dll로 실행된 프로그램의 메모리를 알려면? ppiri 793 2001/09/20
11349     Re:[질문]Dll로 실행된 프로그램의 메모리를 알려면? 박지훈.임프 1343 2001/09/22
11438         Re:Re:[질문]Dll로 실행된 프로그램의 메모리를 알려면? ppiri 1446 2001/09/25
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.