您的位置:首页 > 其它

动态内存中加载DLL的问题

2008-02-28 11:59 281 查看
Private Sub RunMain(ByVal Dllpath As String, ByVal types As String)
Dim str(1) As String
Try
Dim asm As [Assembly]
'加载DLL
'这里要检测文件是否存在
Dim FS As New System.IO.FileStream(Dllpath, FileMode.Open) 'Application.StartupPath & "\jad.dll"

Dim ms As New MemoryStream

Dim data As Byte()

ReDim data(FS.Length)

FS.Read(data, 0, FS.Length)

FS.Close()

asm = System.Reflection.Assembly.Load(data)

Dim myType As System.Type = asm.GetType(types) '获得Class1的Type '"JcAppDll.ClassMain"
Dim obj As Object = Activator.CreateInstance(myType) '获得Class1的实例
' Application.Run(obj)
obj.Main()

Catch ex As Exception
Dim writer As IO.StreamWriter = New IO.StreamWriter(Application.StartupPath & "\UpdateMainLOG.log")
writer.WriteLine(Err.Number)
writer.WriteLine(Err.Description)
writer.Close()
End Try
Dim writerA As IO.StreamWriter = New IO.StreamWriter(Application.StartupPath & "\UpdateMainLOG.log")
writerA.WriteLine("Run Seccedd!")
writerA.Close()
End Sub

'///////////////////////////////////
以上代码加载是成功的
但无法在DLL调用HOOK一类的东西.
把DLL加载到内存中再Assembly.Load的这种方法使用不了HOOK,直接Load则可以.
不知有没朋友遇到过这种情况?
知道的帮帮忙
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: