我想将自己的 DLL 注入到 VB6 进程中,以覆盖按钮的默认单击行为。目标是调用我的方法,并且永远不要在 click 事件处理程序中调用原始 VB6 代码。
Microsoft Detours API 似乎可以提供帮助。这些示例向我展示了如何将我的 DLL 注入到正在运行的进程中;但我不确定我应该绕道的功能。
理想情况下,我会喜欢 Detours API 的 .Net 包装器。
任何帮助,将不胜感激。
无需为此任务使用 Detours,请查看:为您完成的子类外部程序
此 C++/ActiveX 解决方案将允许您在 VB6 中对当前进程之外的窗口进行子类化。我对 .NET 不太熟悉,但我知道用于 .NET 的商业解决方案 Desaware SpyWorks也提供此功能。首先做你的功课,那里可能有一个免费的解决方案,如果有,请回帖告诉我们。:)
如果它是一种同时影响所有按钮的方法,那么我认为这将是您要做的原始研究;我认为没有其他人觉得有必要在这种程度上规避 VB 运行时。否则,如果它只是一个特定的按钮或表单,那么子类化是一种行之有效的方法。
有关 VB6 的高级信息,请查看 Karl Peterson 的 Classic VB 站点:
托管在该站点上的是 Bruce McKinney 的优秀书籍“Hardcore Visual Basic”: