[求助]ACTIVEX DLL 参数问题:调用的CALLBYNAME

landyjie 2012-09-10 03:58:19
VB建的ACTIVEX DLL工程:
Public Function my_ver()
my_ver = 1
End Function
Public Function my_callbyname(Object, ProcName, CallType, Args() As Variant)
my_callbyname = CallByName(Object, ProcName, CallType, Args())
End Function


VB建的 EXE工程:
MsgBox mydll.my_ver() '这个返回没问题
MsgBox CallByName(MYBEEP, "beep", 1, 1000, 1000) '这个也成功执行 第3个参数的1是Const VbMethod = 1
MsgBox mydll.my_callbyname(MYBEEP, "beep", 1, 1000, 1000)'这个就有问题了说什么:错误的参数号或无效的属性赋值

问什么EXE的第2条能执行第3条不能。应该怎么改?


下面是VB中CallByName函数原形:
Function CallByName(Object As Object, ProcName As String, CallType As VbCallType, Args() As Variant)
...全文
159 2 打赏 收藏 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
landyjie 2012-09-12
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 的回复:]

在dll里的自定义函数参数类型可能有误

Public Function my_callbyname(Object, ProcName, CallType, Args() as long)
[/Quote]

我的参数可不一定是long

有个关键字ParamArray 不知道有没有用,我已经从0到10个参数分别处理了
孤独剑_LPZ 2012-09-10
  • 打赏
  • 举报
回复
在dll里的自定义函数参数类型可能有误

Public Function my_callbyname(Object, ProcName, CallType, Args() as long)
下载代码方式:https://pan.quark.cn/s/c66ecb4d06ce 同源策略:从安全角度出发,浏览器会对脚本发起的跨站请求施加限制,要求JavaScript或Cookie仅能获取同源(即协议、域名和端口完全一致)下的资源。正因如此,不同项目间的调用会受到浏览器的阻碍。以常见情境为例:WebApi作为数据服务层,它是一个独立的项目,而MVC项目则承担Web的展示功能,此时MVC项目需要调用WebApi中的接口以获取数据并在页面上呈现。由于WebApi与MVC属于两个独立的项目,运行后便会产生前面提及的跨域问题。WebApi的跨域问题主要源于浏览器的同源策略,这是一种安全措施,旨在限制JavaScript或Cookie仅能访问同一源(包括协议、域名和端口)下的内容。在实际开发过程中,当WebApi作为一个独立服务,例如数据服务层,而MVC项目作为前端展示层时,两者运行在不同的项目和端口下,浏览器将阻止MVC对WebApi的跨域请求,从而影响数据的正常获取。为了应对这一问题,我们可以采用CORS(跨域资源共享)机制。CORS通过在HTTP请求与响应头中嵌入特定标识,向浏览器明确哪些跨域请求是被允许的。例如,服务器可以在响应头中添加`Access-Control-Allow-Origin:http://localhost:8081`,表示允许来自http://localhost:8081的请求访问资源。解决WebApi跨域问题的具体实施步骤如下: 1. 构建一个包含MVC项目(Web)与Web API项目(WebApiCORS)的解决方案。 2. 在MVC项目中,例如Home控制器的Index视图,通过Ajax向WebApiCORS发起跨域请求。 3...

1,453

社区成员

发帖
与我相关
我的任务
社区描述
VB 控件
社区管理员
  • 控件
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧