선언:

C#

[DllImport("kernel32")]
public static extern IntPtr GetModuleHandle(String moduleName);


VB.NET

<DllImport("kernel32")> _
Public Shared Function GetModuleHandle(moduleName As StringAs IntPtr
End Function




사용 예제:

C#

using System;
using System.Runtime.InteropServices;

namespace ApiReference {
    class ApiExample {
        [DllImport("kernel32")]
        public static extern IntPtr GetModuleHandle(String moduleName);
        
        public static void Main(string[] args) {
        EnterModuleName:
            Console.Write("핸들을 가져올 모듈 이름을 입력하세요: ");
            String moduleName = Console.ReadLine().Trim();
            if ( String.IsNullOrEmpty(moduleName) ) {
                Console.WriteLine("다시 입력하세요");
                goto EnterModuleName;
            }
            
            IntPtr moduleHandle = GetModuleHandle(moduleName);
            if ( moduleHandle == IntPtr.Zero )
                Console.WriteLine("모듈 핸들 가져오기 실패!");
            else
                Console.WriteLine("가져온 모듈 핸들: 0x{0:X8}", moduleHandle.ToInt32());
                
            Console.ReadKey(true);
        }
    }
}


VB.NET

Imports System
Imports System.Runtime.InteropServices

Namespace ApiReference
    Class ApiExample
        <DllImport("kernel32")> _
        Public Shared Function GetModuleHandle(moduleName As StringAs IntPtr
        End Function

        Public Shared Sub Main(args As String())
            EnterModuleName:
            Console.Write("핸들을 가져올 모듈 이름을 입력하세요: ")
            Dim moduleName As String = Console.ReadLine().Trim()
            If String.IsNullOrEmpty(moduleName) Then
                Console.WriteLine("다시 입력하세요")
                GoTo EnterModuleName
            End If

            Dim moduleHandle As IntPtr = GetModuleHandle(moduleName)
            If moduleHandle = IntPtr.Zero Then
                Console.WriteLine("모듈 핸들 가져오기 실패!")
            Else
                Console.WriteLine("가져온 모듈 핸들: 0x{0:X8}", moduleHandle.ToInt32())
            End If

            Console.ReadKey(True)
        End Sub
    End Class
End Namespace




예제 실행 결과:



매개 변수 설명:

moduleName - 불러올 모듈의 이름을 입력합니다.




API 설명:

모듈의 핸들을 가져옵니다.




참고:

GetModuleHandle (MSDN)




비고:

moduleName 매개 변수에는 dll 또는 exe 파일이 올 수 있으며, 확장자가 생략된 경우엔 dll 파일을 검색합니다.

또한, LoadLibraryEx 로 불러온 라이브러리 중 LOAD_LIBRARY_AS_DATAFILE 옵션을 이용해서 불러온 모듈은 검색하지 않습니다.



* 이제 API 참고 문서에 예제 실행 결과도 추가하였습니다!

자주 이용 부탁드립니다! !

'API Reference' 카테고리의 다른 글

20. DebugActiveProcess  (0) 2014.10.03
19. LoadLibrary  (0) 2014.10.01
17. FormatMessage  (0) 2014.09.29
16. GetLastError  (0) 2014.09.27
15. GetAsyncKeyState  (0) 2014.09.26

+ Recent posts