vb6 – 全局函数是否有CallByName等价物?

vb6 – 全局函数是否有CallByName等价物?,第1张

概述我想这样做:“如果有一个模块X包含一个函数Y,那么就调用它,否则不要.” 我知道我可以使用CallByName(Object,MethodName,…)来调用对象实例的方法或属性. 是否可以调用未绑定到对象的全局子/函数? //Module1Public Sub DoSomethingEnd Sub//Module2Public Sub TriggerDoSomething On E 我想这样做:“如果有一个模块X包含一个函数Y,那么就调用它,否则不要.”

我知道我可以使用CallByname(Object,Methodname,…)来调用对象实例的方法或属性.

是否可以调用未绑定到对象的全局子/函数?

//Module1Public Sub DoSomethingEnd Sub//Module2Public Sub TriggerDoSomething  On Error Resume Next  CallByname2 "Module1","DoSomething",...End Sub

我知道,最好重构我的代码将DoSomething包装成一个类,但目前这是不可能的,因为它会以几个小时内无法修复的方式破坏我的同事的代码.

解决方法 CallByname实际上会更容易一个类 – 你不能只用一个重定向调用模块的类来包装模块吗?

可以使用FunctionDe@R_301_5480@r按名称调用模块中的例程.这在Matt Curland的优秀着作Advanced Visual Basic 6中有所解释.

谷歌搜索可能会找到一些使用CallWindowProc的黑客攻击,但是Matt Curland说这很危险.这几乎是关于此问题的最后一句话:)

编辑:RS康利的答案不使用模块,使用具有GlobalMultiUse的实例属性的类,您将能够使用CallByname.如果您的代码在DLL而不是EXE中,这将有效. RS Conley建议,在任何情况下,使用DLL中几乎所有功能的最小EXE都会更灵活:这可能是真的.

总结

以上是内存溢出为你收集整理的vb6 – 全局函数是否有CallByName等价物?全部内容,希望文章能够帮你解决vb6 – 全局函数是否有CallByName等价物?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1253258.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-07
下一篇 2022-06-07

发表评论

登录后才能评论

评论列表(0条)

保存