Dll을 동적 로드하기
PrinceSs
DLL을 동적으로 로드하고 싶습니다.
예를 들면 kernel32.dll의 Sleep를 동적으로 호출하고 싶은데 이런 방법을 썼습니다.
Public Function DLL(ByVal strPath As String, ByVal strType As String, ByVal strFunction As String, ByVal oParam() As Object) As String
Dim objAsm As System.Reflection.Assembly
Dim objObj As Object
Dim objType As Type
Dim objMethod As Reflection.MethodInfo
Dim objPara As Object() = oParam
Try
objAsm = System.Reflection.Assembly.LoadFrom(strPath)
objType = objAsm.GetType(strType)
objMethod = objType.GetMethod(strFunction)
objObj = Activator.CreateInstance(objType)
Return objMethod.Invoke(objObj, objPara).ToString()
Catch ex As Exception
MsgBox(ex.ToString, vbCritical, Split(ex.ToString, :)(0))
End Try
End Function
실행할때
Dim pa() As Object = {2000}
DLL(C:\windows\system32\kernel32.dll, DllMain.DllFunc, Sleep, pa)이렇게 해보니 오류만 납니다.
어떻게 해야 하나요???
VB6의 CallByName처럼 DLL을 호출하고 싶습니다.
구글링을 통해 알아냈습니다. 첨부파일 참고하세요!