API, C#, GetModuleHandle, LoadLibraryEx, LOAD_LIBRARY_AS_DATAFILE, pinvoke, VB, vb.net, 모듈, 모듈핸들
선언:
C#
[DllImport("kernel32")]
public static extern IntPtr GetModuleHandle(String moduleName);
VB.NET
<DllImport("kernel32")> _
Public Shared Function GetModuleHandle(moduleName As String) As 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 String) As 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 옵션을 이용해서 불러온 모듈은 검색하지 않습니다.
출처: https://slaner.tistory.com/49 [꿈꾸는 프로그래머]
'자료' 카테고리의 다른 글
[C#/VB.NET] Dictionary Examples (0) | 2020.08.31 |
---|---|
VM웨어 가상윈도우 사용시 설정 팁 (0) | 2020.08.31 |
[C#/VB.net]네이버 지도 API를 이용한 IP로 주소 검색 (0) | 2020.08.20 |
[C#/VB.net]네이버 블로그 공감하기 (0) | 2020.08.20 |
[C#,VB.net]네이버 로그인 소스 (0) | 2020.08.20 |