vb API的调用

来源:互联网 发布:数据库方面的书 编辑:程序博客网 时间:2024/05/13 18:57

VB 的程式设计模式是以物件为核心, 但 Windows 的程式设计模式却是以 handle 为核心。

Microsoft Windows 操作环境通过分配句柄(即 hWnd)来标识应用程序中的每个窗体和控件。hWnd 属性用于 Windows API 调用。许多 Windows 操作环境函数要求活动窗口的 hWnd 作为参数。
hWnd 属性(ActiveX 控件)返回窗体或控件的句柄。
注意   OLE 容器控件不支持该属性。
语法object.hWndobject 占位符表示一个对象表达式,该表达式将计算为“应用于”列表中的对象。
注意   因为该属性的值可以在程序运行时更改,所以从不在变量中存储 hWnd 值。
若要改变此一表单的标题, 则使用的方法是设定表单物件的 Caption 属性
Form1.Caption = "新的标题"
若以 API 来执行相同的工作, 则叙述如下:
ret = SetWindowText( Form1.hwnd, "新的标题" )
其中 Form1.hwnd (hwnd 是 handle of window 的缩写)代表的是 Form1 这个表单「视窗」的 handle 。以下是呼叫此一 API 函数的完整程式:
Private Declare Function SetWindowText Lib _
"user32" Alias "SetWindowTextA" _
(ByVal hwnd As Long, ByVal lpString As String) As Long
Private Sub Command1_Click()
ret = SetWindowText(Me.hwnd, "新的标题")
End Sub

简单地说, VB 所提供的物件并没有把 Windows 的 handle 程式设计模式丢到一边, 而是将 handle 封装起来, 使之成为物件的一个属性。
注:虽然说 Windows 的程式设计是以 handle 为核心, 但仍然有不少 API 函数是与 handle 无关的, 例如字串的复制, 这类 API 函数通常不会使用到 Windows 所配置的系统资源, 所以不需要使用 handle。
msdn 未安装:API Viewer
开始菜单-> 程序-> mircrosoft   visual   basic6.0-> microsoft   visual   basic   6.0工具-> 
你就可以看到了,然后在api viewer中的文件选项->加载文本文件->win32api.txt,就可以了
vb的函数的参数传递方式默认方式是地址传递(ByRef)
数值型别在 API 的参数定义中可能有两种形式:「参数名 As 数值型别」及「ByVal 参数名 As 数值型别」, 所代表的意义分别是数值的「传址」及「传值」呼叫,
在 API 函数中, 字串参数的宣告只有「ByVal 参数名 As String」一种形式(没有「参数名 As String」形式), 按照 VB 习惯, 这是「传值」呼叫, 但实际上, API 对于所有字串参数的处理, 却一概以「传址」视之, 所以当我们传递字串到 API 函数时, 心理上应有的准备是「这个字串的内容可能会被 API 改变掉」,
VB 字串可分成「非固定长度」及「固定长度」两种:
两者的差别除了长度是否可变之外, 非固定长度字串会在字串的最尾端补上 Chr(0) 字元, 以 "VB5" 字串为例, 在记忆体内部其实含有 "VB5"+Chr(0) 共 4 个字元, 至于固定长度的字串则会先用「空白」字元补满整个字串, 然后才补上 Chr(0) 字元
虽然 VB 会在字串的尾端补上 Chr(0) 字元, 但这个字元并不会计入字串的长度
S = "某字串" + Chr(0)