kevinch 发表于 2011-8-16 20:01:21

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

本帖最后由 kevinch 于 2011-8-17 09:05 编辑

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

LEA EDX,DWORD PTR SS:
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

ceoguang 发表于 2011-8-16 23:06:25

TypeName只有一个参数。返回值是str.
该函数类似Autoit中的objname

ceoguang 发表于 2011-8-16 23:09:06

如果你会用objname,那么你就会调用这个函数了

haijie1223 发表于 2011-8-23 10:58:43

学习 支持也很希望有人能提供这方面的资料

penguinl 发表于 2011-8-23 21:58:59

这可是个很好的学习机会,希望有高人贴出详细代码!
页: [1]
查看完整版本: 如何利用dllcall函数调用vba6.dll中的内置函数rtcTypeName并取得返回值? 【已解决】