在VB中使用API函数(回调(CallBacks))
2008-02-23 07:04:50来源:互联网 阅读 ()
1 2 3 下一页
回调(CallBacks)所谓回调,就是你自己定义一个函数,并告诉Windows何时为何调用.你可以写一个有特定数量和类型参数的函数,然后告诉Windows何时调用,并传递给它所需的参数.Windows就会调用你定义的函数,处理参数,并给你返回值.
回调的一个典型应用是从Windows获得连续的数据流.这里是一个需要回调的函数的声明:
Declare Function EnumWindows Lib "User32"ByVal lpEnumFunc As Long, ByVal lParam As Long) As Long
第一个参数是你的回调函数的地址,第二个参数是你想传递的的任意数值.该值将被传递到你的函数,于是你就知道了它要调用什么.
VB 5.0已经提供了一个很有用的操作符 AddressOf ,可以得到一个函数的地址.当你调用一个函数时它只能用在参数的前面,下面这种用法是错误的并且会导致出错:
FuncP = AddressOf MyFunction
因此你必须这样调用EnumWindows函数:
Success& = EnumWindows(AddressOf cbFunc, 58&)
你必须也要自己写回调函数.问题是有很多不同类别的回调并且有各种各样的参数,有关这些参数的描述可以在SDK帮助或MS SDK文档中找到.这里是一个回调的声明:
Function cbFunc (ByVal Hwnd, ByVal lParam) as Long
这里是一个回调的例子:
Private Declare Function GetWindowText Lib "user32" Alias "GetWindowTextA"(ByVal hwnd As Long,ByVal lpString As String,ByVal cch As Long) As Long
Success& = EnumWindows(AddressOf cbFunc, 58&)
Function cbFunc (ByVal Hwnd, ByVal lParam) as Long
If lParam = 58 then ’enum windows
Str$ = Space(255)
Ret& = GetWindowText(Str$, Len(Str$))
Debug.Print Left(Str$, Ret&)
End If
End Function
这个例子将列出窗口的标题,(不包含子窗体)
上一篇: 用Visual Basic设计browser及ftp程序(三)
下一篇: 用Visual Basic设计browser及ftp程序(四)
1 2 3 下一页
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash