d6的dll还有点问题,也不知道是bug,还是我不会!
处理不了装载动态库和卸载动态库!
处理不了装载动态库和卸载动态库!
解决方案 »
- 双击ADOConnection控件,点build...按钮 提示“找不到指定模块”
- 票据打印问题
- 这几本书,那本最好?
- 控件高手请进:明明编译通过的控件,为什么使用的时候工程文件提示找不到DesignIntf.dcu
- 怎么使用ADO直接打开文本文件,扩展名是LOG
- 让人搞不明白?什么原因?
- ◆如何得到一个程序用到了那些DLL,并且进一步终止这些DLL(注意不是终止程序)◆
- 如何获得TClass引用的类的Create的地址
- 如何得知当前正在拖动MEMO控件的滚动条?(或当拖动MEMO的滚动条时触发什么事件消息)
- 采用TclientSocket/TserverSocket进行通信,能不能采用多线程,并且每个线程的socket端口不一样??
- 问:有没有选择目录的对话框?
- 串口通信,请大家帮忙解决,原代码如下!
在缺省的情况下,Visual Basic 以引用方式传递所有参数。这意味着并没有传递实际的参数值,Visual Basic 只传递了数据的 32 位地址。在 Declare 语句中不要求包含 ByRef 关键字,但是如果包含该关键字,就能够清楚地看出数据是以何种方式传递的。许多 DLL 过程要求参数以值方式传递。这意味着它们需要实际的数据,而不是数据的内存地址。如果过程需要一个传值参数,而传递给它的参数是一个指针,那么由于得到了错误的数据,该过程将不能正确地工作。要使参数以使用值方式传递,在 Declare 语句中需要在参数声明的前面加上 ByVal 关键字。例如,InvertRect 过程要求第一个参数使用值,而第二个使用引用:Declare Function InvertRect Lib "user32" Alias _
"InvertRectA" (ByVal hdc As Long, _
lpRect As RECT) As Long也可以在调用过程时使用 ByVal 关键字。注意 在查看使用 C 语言语法的 DLL 过程文档时,请记住 C 以传值方式传递数组以外的参数。字符串参数是一个特例。如果以使用值方式传递字符串,那么传递的将是该字符串中第一个数据字节的地址;如果以使用引用方式传递字符串,那么实际传递的将是用来保存另一个地址的内存单元的地址;后面的“地址”实际是字符串的第一个数据字节的内存地址。本章后面的帮助主题“将字符串传递到 DLL 过程”将解释如何确定字符串参数传递的正确方式。不标准的名称
有时,个别的 DLL 过程的名称不是有效的标识符。例如,它可能包含了非法的字符(如连字符),或者名称是 Visual Basic 的关键字(如 GetObject)。在这种情况下,可以使用 Alias 关键字。例如,操作环境 DLL 中的某些过程名以下划线开始。尽管在 Visual Basic 标识符中允许使用下划线,但是下划线不能作为标识符的第一个字符。为了使用这种过程,必须先声明一个名称合法的过程,然后用 Alias 子句引用过程的真实名称:Declare Function lopen Lib "kernel32" Alias "_lopen" _
(ByVal lpPathName As String, ByVal iReadWrite _
As Long) As Long在上例中,lopen 是 Visual Basic 中使用的过程名称。而 _lopen 则是 DLL 中可以识别的名称。为了使用方便,也可以使用 Alias 子句改变过程的名字。如果使用自己的名称替代了过程原来的名称(例如使用 WinDir 代替 GetWindowsDirectoryA),那么必须在文档中清楚地说明这种修改,从而便于将来对文档进行维护。