对于托管dll,我们可以通过反射的方法很容易知道其中包含的函数(GetMembers,GetMethods....)
但是对于非托管的API和com,改怎么实现呢?怎么才能知道user32.dll里面有哪些函数呢?
com似乎可以反射调用,但无法反射查询
麻烦哪位指点一下,谢谢
但是对于非托管的API和com,改怎么实现呢?怎么才能知道user32.dll里面有哪些函数呢?
com似乎可以反射调用,但无法反射查询
麻烦哪位指点一下,谢谢
解决方案 »
- C# webbrowser 这种源码怎么实现自动点击呢
- winform程序打包使用innosetup打包工具问题:怎样让打包的程序在安装前检查系统是否启动某服务,如果服务启动关闭该服务!
- SoundPlayer控件与Audio控件能否同时使用?
- 我是C#初学者,请各位C#高手帮帮忙!
- 问高手,怎么样像Delphi一样用uses调 用自定义函数
- [求助]请问怎样在WindowsForm中显示网页?
- C#中!如何用SOCKET提取客户端POST过来的文件字节?
- 关于Socket异步编程的一个问题
- 请教,如何才能设计出类似outlook这样的界面? 谢谢
- treeView的操作问题!帮帮忙!
- 正则表达式出错!
- drawimage处理大图片的问题
第一章 文件相关的API函数
Api函数名 函数说明 适用范围
W16 W95 WNT
mmioWrite 写文件 否 是 是
WriteFile 写文件 否 是 是
ExtractAssociatedIcon 从文件或相关EXE中获取图标句柄 否 是 是
ExtractIcon 从可执行文件中返回图标句柄 否 是 是
LZRead 从压缩文件中读入数据 是 是 是
GetPrivateProfileString 从私有文件中获取字符串 是 是 是
GetPrivateProfileInt 从私有文件中获取整数 是 是 是
UnlockFile 开锁文件 否 是 是
UnlockFileEx 开锁文件 否 是 是
LZOpenFile 打开文件 是 是 是
mmioOpen 打开多媒体文件 否 是 是
SetFileApisToOEM 设置文件API为OEM字符集 否 是 是
SetFileSecurity 设置文件或目录安全属性 否 是 是
FindFirstChangeNotification 设置文件或目录修改等待 否 是 是
SetFileTime 设置文件的64位时间 否 是 是
mmioSetInfo 设置文件信息 否 是 是
SetTextColor 设置文件前颜色 是 是 是
SetFilePointer 设置文件指针位置 否 是 是
SetFileAttributes 设置文件属性 否 是 是
SetFileApisToOEM 设置文件API为OEM字符集 否 是 是
SetFileSecurity 设置文件或目录安全属性 否 是 是
FindFirstChangeNotification 设置文件或目录修改等待 否 是 是
SetFileTime 设置文件的64位时间 否 是 是
mmioSetInfo 设置文件信息 否 是 是
SetTextColor 设置文件前颜色 是 是 是
SetFilePointer 设置文件指针位置 否 是 是
SetFileAttributes 设置文件属性 否 是 是
DeleteFile 删除文件 否 是 是
mmioSeek 改变当前文件位置 否 是 是
MoveFile 更名文件 否 是 是
MoveFileEx 更名文件 否 是 是
GetFileTime 返回文件64位时间 否 是 是
GetFileTitle 返回文件名 否 是 是
GetVolumeInformation 返回文件系统信息 否 是 是
GetFileVersionInfo 返回文件的版本信息 否 是 是
GetFullPathName 返回文件的路径名 否 是 是
GetFileInformationByHandle 返回文件信息 否 是 是
GetFileType 返回文件类型 否 是 是
GetFileAttributes 返回文件属性 否 是 是
GetShortPathName 返回文件短路径 否 是 是
mmioRead 读入文件 否 是 是
ReadFile 读文件 否 是 是
WriteFileEx 写文件 否 是 是
然后点开user32.dll。
在非托管的dll中有一个导出表,里面罗列了该dll导出的函数。
很多工具象DllExplorer可以查看。Visual Studio本身也有这方面的工具,比如运行
dumpbin /Exports user32.dll你就可以看到很多熟悉的APIs。com似乎可以反射调用,但无法反射查询
反射调用需要该COM接口支持(IDispatch),此接口能把函数名字解析成能调用的ID,起到了‘反射’调用的效果。这并不是真正的反射,无法得知函数的具体类型。要得到COM接口的类型,就要用到该COM的IDL或TypeLib。很多COM直接把TypeLib集成到Dll里面或exe里面,或者在在注册表中指定TypeLib的途径。在有IDL或者TypeLib的情况下,我们可以通过TlbImp工具来获得COM接口的托管表示。