dll - 如何拦截 VB6 ActiveX DLL 中的 DLL 加载/卸载事件?

标签 dll vb6 asp-classic activex

我继承了一个传统的经典 ASP 应用程序,它使用 VB6 ActiveX DLL 来执行业务逻辑。

我想跟踪 DLL 的加载和卸载点。有什么方法可以在 VB6 DLL 中拦截这些事件吗?

与此相关的是,Class_Terminate 事件是否应该在包含 DLL 的卸载时始终运行?

最佳答案

使用 Sub Main 作为启动对象。

制作一个这样的模块

Option Explicit

Private TerminateDetect As Terminate

Public Sub Main()
    Set TerminateDetect = New Terminate
    MsgBox "Setup"
End Sub

然后你的终止类看起来像这样

Option Explicit

Private Sub Class_Terminate()
    MsgBox "I terminated"
End Sub

我做的一个测试类是这样的

Option Explicit

Public Description As String

Public Sub Test()
    MsgBox "test"
End Sub

我制作了一个没有这样的引用的表单

Option Explicit
Private O As Object

Private Sub Command1_Click()
    Set O = CreateObject("TestUnload.Dummy")
    O.Test
End Sub

Private Sub Command2_Click()
    Set O = Nothing
End Sub

当我单击 Command1 时,我收到两条消息,一条用于加载 DLL,另一条用于运行测试。然后当我单击 Command2 时。

这个例子相当粗糙,所以我希望你能明白这一点。

摘要 在您拥有的每个 ActiveX 中创建一个 TDLLManagement 类。将初始化代码放入 Class_Initialize 中,将终止代码放入 Class_Terminate 中。然后让 Sub Main 创建该类的实例并分配给私有(private)模块变量。请注意,如果您有任何 GlobalMultisuse 类并直接引用 ActiveX DLL,您希望进行简单的测试以查看 DLL 加载的位置。

关于dll - 如何拦截 VB6 ActiveX DLL 中的 DLL 加载/卸载事件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1754457/

相关文章:

windows - 使用 Makefile 创建 DLL 以在 Windows XP(32 位)和 Windows 7(64 位)上运行

c# - VB6 到 C# XML 字符串转换特殊字符

c# - 在经典 ASP 中的每个午夜更新应用程序变量

node.js - 使用经典 ASP 中的 Redis.. 无需 COM?

javascript - 使用 javascript 获取元数据

vb.net - Windows 脚本宿主对象模型的 Interop.IWshRuntimeLibrary.dll 引用与可执行文件相同的目录

python - C.dll 如何向 Python 公开变量?

c# - 安装 .NET COM+ dll

winapi - 按类名查找窗口

sql - 如何访问在存储过程中创建的临时表 [vb6]