找回密码
 加入
搜索
查看: 3376|回复: 4

[AU3基础] 如何利用dllcall函数调用vba6.dll中的内置函数rtcTypeName并取得返回值? 【已解决】

[复制链接]
发表于 2011-8-16 20:01:21 | 显示全部楼层 |阅读模式
本帖最后由 kevinch 于 2011-8-17 09:05 编辑

如题,在vba6.dll中有一个rtcTypeName函数(序号:591),可以返回变量的类型,想在au3中进行调用,但一直不成功,希望高手帮忙一下。
VB中的函数原型:
Public Function TypeName(ByVal VarName As Object) As String
Dll代码入口处汇编代码:
rtcTypeName    ;函数 TypeName #591

LEA EDX,DWORD PTR SS:[EBP-24]
PUSH EDX                ;参数1
CALL DWORD PTR DS:[<&MSVBVM60.#591>];MSVBVM60.rtcTypeName
                     ;结果在eax中返回
我个人写的测试程序代码:
$o_excel=ObjCreate("excel.application")
$o_excel.visible=True
$o_WB=$o_excel.workbooks.add
$T=DllCall(@ScriptDir&"\vba6.dll","str",591,这里要用什么数据类型,这里如何表示$o_WB这个变量)
ConsoleWrite($T&@tab&@error&@CRLF)
以上相同功能代码在vb中可以返回数据类型"Workbook"

各位高手拜托了,就是不想用VB写这个程序,希望能用au3实现,这个typename功能对于目标程序很重要。

附:VBA6.dll

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入

×
发表于 2011-8-16 23:06:25 | 显示全部楼层
TypeName只有一个参数。返回值是str.
该函数类似Autoit中的objname

评分

参与人数 1金钱 +40 贡献 +2 收起 理由
kevinch + 40 + 2 我竟然没注意到这个函数,多谢指教

查看全部评分

发表于 2011-8-16 23:09:06 | 显示全部楼层
如果你会用objname,那么你就会调用这个函数了
发表于 2011-8-23 10:58:43 | 显示全部楼层
学习 支持  也很希望有人能提供这方面的资料
发表于 2011-8-23 21:58:59 | 显示全部楼层
这可是个很好的学习机会,希望有高人贴出详细代码!
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-10-1 19:21 , Processed in 0.108394 second(s), 24 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表