Access爱好者--
所属分类: 实用API 作者: 共享 更新日期:2004-1-28 15:03:43 阅读次数:504

了解句柄


在调用 DLL 函数前必须理解的另外一个重要概念是句柄。句柄是一个 32 位的正整数,Microsoft® Windows® 用它来识别窗体或其他对象,例如字体或位图。

在 Windows 中,窗口可以有许多种。窗口可以是屏幕上的一块矩形封闭区域,比如您熟悉的应用程序窗口。窗体上的控件(例如列表框或滚动条)也可以是窗口,但并不是所有类型的控件都是窗口。桌面上的图标和桌面本身也是窗口。

因为所有这些类型的对象都是窗口,所以 Windows 可以用类似的方式处理它们。Windows 给每个窗口一个唯一的句柄,通过句柄操纵该窗口。许多 API 函数可返回句柄或者接受句柄作参数。

创建窗口时,Windows 给它指派一个句柄,窗口消失后句柄被释放。虽然句柄在窗口的整个生存期内保持不变,但不能保证某窗口在被损坏并重新创建后还使用原来的句柄。所以,如果在变量中存储了一个句柄,请记住窗口损坏后句柄就失效了。

例如 GetActiveWindow 函数就可以返回窗口的句柄,这里的窗口是一个当前活动的应用程序窗口。GetWindowText 函数接受窗口的句柄,如果该窗口有标题,则返回标题。下面的过程用 GetActiveWindow 返回活动窗口的句柄,用 GetWindowText 返回该窗口的标题:

Declare Function GetActiveWindow Lib "user32" () As Long
Declare Function GetWindowText Lib "user32" Alias "GetWindowTextA" _
(ByVal Hwnd As Long, ByVal lpString As String, ByVal cch As Long) As Long

Function ActiveWindowCaption() As String
Dim strCaption As String
Dim lngLen As Long

' 创建由空字符填充的字符串。
strCaption = String$(255, vbNullChar)
' 返回字符串长度。
lngLen = Len(strCaption)

' 调用 GetActiveWindow,返回活动窗口的句柄,
' 把句柄连同字符串和字符串长度一起传递给 GetWindowText。
If (GetWindowText(GetActiveWindow, strCaption, lngLen) > 0) Then
' 返回 Windows 写到字符串中的值。
ActiveWindowCaption = strCaption
End If
End Function
GetWindowText 函数有 3 个参数:窗口句柄;准备接受窗口标题的 NULL 结束字符串;以及该字符串的长度。


--------------------------------------------------------------------------------
相关文章

剖析 Declare 语句 2004-1-28 15:08:06
什么是 API? 2004-1-28 15:01:53
对注册表操作技巧-将程序在开机时运行 2003-11-18 9:24:59
officeXP下使用文件对话框的另外一种方法 2003-11-17 8:47:04
真正实现在windows2000下关机的源代码 2003-11-14 8:32:00
获取Windows用户登录名 2003-11-7 8:42:45
获取网卡物理地址 2003-11-7 8:40:48
隐藏Access主窗口之二 2003-11-7 8:34:20
如何让窗体总在最前面? 2003-11-7 8:25:19
如何关闭计算机? 2003-11-7 8:24:43
如何建立简单的超级连接?(ShellExecute) 2003-11-6 20:39:18
如何让窗体的标题条闪烁以引起用户注意? 2003-11-6 20:38:43
怎样找到鼠标指针的XY坐标? 2003-11-6 20:37:33
在程序中如何打开和关闭光驱门? 2003-11-6 20:20:00
怎样使Ctrl-Alt-Delete无效? 2003-11-6 20:19:25
如何移动没有标题栏的窗口? 2003-11-6 20:17:30
延时函数 2003-11-6 20:16:53
让控件自适应屏幕分辨率 2003-10-18 9:58:33
键盘常用代码一览表 2003-10-17 19:54:02
重新定位链接表二步走 2003-10-17 19:00:07
ADO连接数据库字符串大全 2003-10-17 18:40:47
如何确定当前屏幕分辨率 2003-10-14 8:41:00
获取windows安装路径 2003-10-14 8:39:08
将 Microsoft Access 用作 Automation 服务器 2003-10-14 8:37:19
优化Microsoft Access提高速度 2003-10-6 10:31:55


系统优化
控件使用
数据库设计
数据库连接
系统安全
OLE自动化
常见问题
实用代码
属性详解
网络相关
实用API
经验分享
精选教程
字符处理
ADP相关



文章搜索



制作维护:李寻欢     Mail:[email protected]

关于本站 -- 网站服务 -- 版权条款 -- 联系方法 -- 网站帮助
Access爱好者版权所有 Copyright 2003-2005 All Rights Reserved 未经许可不得盗链