显示并操作DLL函数的问题

nbabest23 2009-08-19 11:22:02
我现在需要在软件中实现一个这样的功能,在一个DLL中定义了许多的测试方面的功能函数,但是并不是所有的函数都是每次都要调用的,所以我需要制作一个序列,选择其中的一部分进行组合
我们老大是用C#实现的,可以在一个类似LIST的列表框中显示全部的函数,然后能进行选择添加到自己定义的序列中
现在我想是用VB制作一个

请问VB有类似的控件么?显示DLL中所有定义的函数
有谁有过类似软件的开发经验么?指点下3Q
...全文
96 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
现在还是人类 2009-08-27
  • 打赏
  • 举报
回复
API函数的话可以用读DLL文件中特定位置就可以读出函数名。
API形势的DLL都是PE格式的文件,所以,按照PE格式的规则可以
直接读出函数名来。
http://forum.eviloctal.com/thread-5016-1-1.html
nbabest23 2009-08-26
  • 打赏
  • 举报
回复
UP
东方之珠 2009-08-19
  • 打赏
  • 举报
回复
1、每个成员的名字是可以通过3楼列出来。但是你在列表框中选择了某个成员函数后,它的参数是怎么的,有几个,还是不知道吧?所以,一旦DLL升级会有些问题。
2、如果DLL中属性、方法、函数都是固定的,可用手工的方式,把所有要调用的东西都列出来,程序运行时,只需选择就可以了。
myjisgreat 2009-08-19
  • 打赏
  • 举报
回复
装vc,用dumpbin
脆皮大雪糕 2009-08-19
  • 打赏
  • 举报
回复
我下面这段代码把目标dll的所有成员名列出来。 当然这是个树状结构需要你自己再去处理了,至于每个成员函数的具体信息自己在watch里面察看 TypeInf.Interfaces(i).Members(j)的成员对象去吧,我就不罗列了

Dim TLIApp As Object
Dim TLBInfo As Object
Dim TypeInf As Object
Set TLIApp = CreateObject("TLI.TLIApplication")

Set TLBInfo = TLIApp.TypeLibInfoFromFile("C:\WINDOWS\system32\ieframe.dll")
Dim i As Integer
Dim j As Integer
For Each TypeInf In TLBInfo.CoClasses

Debug.Print TypeInf.Name
For i = 1 To TypeInf.Interfaces.Count
Debug.Print vbTab & TypeInf.Interfaces(i).Name
For j = 1 To TypeInf.Interfaces(i).Members.Count
Debug.Print vbTab & vbTab & TypeInf.Interfaces(i).Members(j).Name
Next
Next
Next
nbabest23 2009-08-19
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 machong8183 的回复:]


你在引用完DLL后不就是可以看到他的方法,属性了么?
[/Quote]

。。需要引用的话不就给用源代码么
我需要制作的是一个制作测试序列的程序
不可能给到应用单位,每次都让他修改源代码吧
水猿兵团五哥 2009-08-19
  • 打赏
  • 举报
回复
给我DLL,我来给你写好了
有C#参考还不可以做么?一个道理啊

你在引用完DLL后不就是可以看到他的方法,属性了么?
东方之珠 2009-08-19
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 caozhy 的回复:]
原生Win32程序不可能实现,只有导出函数可以读出来。

COM程序访问IUnknown接口就行了。

.NET程序用反射可以枚举方法。
[/Quote]

嗯,不错!
nbabest23 2009-08-19
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 caozhy 的回复:]
原生Win32程序不可能实现,只有导出函数可以读出来。

COM程序访问IUnknown接口就行了。

.NET程序用反射可以枚举方法。
[/Quote]
楼上的请帮忙举几个IUnknown的例子呗
threenewbee 2009-08-19
  • 打赏
  • 举报
回复
原生Win32程序不可能实现,只有导出函数可以读出来。

COM程序访问IUnknown接口就行了。

.NET程序用反射可以枚举方法。
脆皮大雪糕 2009-08-19
  • 打赏
  • 举报
回复
查看其它属性,找出区别
nbabest23 2009-08-19
  • 打赏
  • 举报
回复
楼上的大哥
使用你的方法是把DLL中的所有成员都罗列出来了,但是有好多都不是我自己定义的函数,一些系统的函数也罗列出来了
怎么能筛选出那些是自己定义的函数呢?
脆皮大雪糕 2009-08-19
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 chenjl1031 的回复:]
1、每个成员的名字是可以通过3楼列出来。但是你在列表框中选择了某个成员函数后,它的参数是怎么的,有几个,还是不知道吧?所以,一旦DLL升级会有些问题。
2、如果DLL中属性、方法、函数都是固定的,可用手工的方式,把所有要调用的东西都列出来,程序运行时,只需选择就可以了。
[/Quote]

我只是列出名字,因为赶着去吃饭没有把所有的对象列出来而已。


TypeInf.Interfaces(i).Members(j)下还有parameters集合、returntype集合等等。实际上用这些对象你可以写出自己的对象查看器

7,763

社区成员

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

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