说明简介

Windows API 函数 for Visual Basic

声明：

本帮助文件由陈国强个人整理后出版，内容全摘自网络。版权归实际作者所有。

为了让网友们能更好的阅读和管理Windows API 函数，于是我为大家将网上的资料整理成一个帮助文件。让查阅API 函数变的更简单，容易，也更有效。

本帮助文件中的Windows API 函数大约有774个，共分十二大类，基本上包括了大部分的常用和非常用的Windows API 函数。

作者简介：

姓名：陈国强
网名：Sealife
E-mail：Subchen@kali.com.cn
网名：Visual Basic 集锦库
主页：http://202.103.176.81/erun/sealife/ （主力站点）
http://172.28.29.121/erun/sealife/
http://home.ls.zj.cnifo.net/~sealife
域名：http://Sealife.yeah.net

Fox.gif (9455 字节) 版权所有：Copyright [C] 1999-2000 陈国强
1999-12-05


Windows消息类1

Windows消息函数，共一页。第一页
BroadcastSystemMessage | 将一条系统消息广播给系统中所有的顶级窗口
GetMessagePos | 取得消息队列中上一条消息处理完毕时的鼠标指针屏幕位置
GetMessageTime | 取得消息队列中上一条消息处理完毕时的时间
PostMessage | 将一条消息投递到指定窗口的消息队列
PostThreadMessage | 将一条消息投递给应用程序
RegisterWindowMessage | 获取分配给一个字串标识符的消息编号
ReplyMessage | 答复一个消息
SendMessage | 调用一个窗口的窗口函数，将一条消息发给那个窗口
SendMessageCallback | 将一条消息发给窗口
SendMessageTimeout | 向窗口发送一条消息
SendNotifyMessage | 向窗口发送一条消息


文件处理类1

文件处理函数，共八页。第一页，第二页 ， 第三页 ， 第四页 ， 第五页 ， 第六页 ， 第七页 ， 第八页
CloseHandle | 关闭一个内核对象。其中包括文件、文件映射、进程、线程、安全和同步对象等
CompareFileTime | 对比两个文件的时间
CopyFile | 复制文件
CreateDirectory | 创建一个新目录
CreateFile | 打开和创建文件、管道、邮槽、通信服务、设备以及控制台
CreateFileMapping | 创建一个新的文件映射对象
DeleteFile | 删除指定文件
DeviceIoControl | 对设备执行指定的操作
DosDateTimeToFileTime | 将DOS日期和时间值转换成一个 win32 FILETIME 值
FileTimeToDosDateTime | 将一个 win32 FILETIME 值转换成DOS日期和时间值
FileTimeToLocalFileTime | 将一个FILETIME结构转换成本地时间
FileTimeToSystemTime | 根据一个FILETIME结构的内容，装载一个SYSTEMTIME结构
FindClose | 关闭由FindFirstFile函数创建的一个搜索句柄
FindFirstFile | 根据文件名查找文件
FindNextFile | 根据调用FindFirstFile函数时指定的一个文件名查找下一个文件
FlushFileBuffers | 针对指定的文件句柄，刷新内部文件缓冲区


文件处理类2

文件处理函数，共八页。第一页 ，第二页， 第三页 ， 第四页 ， 第五页 ， 第六页 ， 第七页 ， 第八页
FlushViewOfFile | 将写入文件映射缓冲区的所有数据都刷新到磁盘
GetBinaryType | 判断文件是否可以执行
GetCompressedFileSize | 判断一个压缩文件在磁盘上实际占据的字节数
GetCurrentDirectory | 在一个缓冲区中装载当前目录
GetDiskFreeSpace | 获取与一个磁盘的组织有关的信息，以及了解剩余空间的容量
GetDiskFreeSpaceEx | 获取与一个磁盘的组织以及剩余空间容量有关的信息
GetDriveType | 判断一个磁盘驱动器的类型
GetExpandedName | 取得一个压缩文件的全名
GetFileAttributes | 判断指定文件的属性
GetFileInformationByHandle | 这个函数提供了获取文件信息的一种机制
GetFileSize | 判断文件长度
GetFileTime | 取得指定文件的时间信息
GetFileType | 在给出文件句柄的前提下，判断文件类型
GetFileVersionInfo | 从支持版本标记的一个模块里获取文件版本信息
GetFileVersionInfoSize | 针对包含了版本资源的一个文件，判断容纳文件版本信息需要一个多大的缓冲区
GetFullPathName | 获取指定文件的完整路径名


文件处理类3

文件处理函数，共八页。第一页 ， 第二页 ，第三页， 第四页 ， 第五页 ， 第六页 ， 第七页 ， 第八页
GetLogicalDrives | 判断系统中存在哪些逻辑驱动器字母
GetLogicalDriveStrings | 获取一个字串，其中包含了当前所有逻辑驱动器的根驱动器路径
GetOverlappedResult | 判断一个重叠操作当前的状态
GetPrivateProfileInt | 为初始化文件（.ini文件）中指定的条目获取一个整数值
GetPrivateProfileSection | 获取指定小节（在.ini文件中）所有项名和值的一个列表
GetPrivateProfileString | 为初始化文件中指定的条目取得字串
GetProfileInt | 取得win.ini初始化文件中指定条目的一个整数值
GetProfileSection | 获取指定小节（在win.ini文件中）所有项名和值的一个列表
GetProfileString | 为win.ini初始化文件中指定的条目取得字串
GetShortPathName | 获取指定文件的短路径名
GetSystemDirectory | 取得Windows系统目录（即System目录）的完整路径名
GetTempFileName | 这个函数包含了一个临时文件的名字，它可由应用程序使用
GetTempPath | 获取为临时文件指定的路径
GetVolumeInformation | 获取与一个磁盘卷有关的信息
GetWindowsDirectory | 获取Windows目录的完整路径名
hread | 参考lread


文件处理类4

文件处理函数，共八页。第一页 ， 第二页 ， 第三页 ，第四页， 第五页 ， 第六页 ， 第七页 ， 第八页
hwrite | 参考lwrite函数
lclose | 关闭指定的文件
lcreat | 创建一个文件
llseek | 设置文件中进行读写的当前位置
LockFile | 锁定文件的某一部分，使其不与其他应用程序共享
LockFileEx | 与LockFile相似，只是它提供了更多的功能
lopen | 以二进制模式打开指定的文件
lread | 将文件中的数据读入内存缓冲区
lwrite | 将数据从内存缓冲区写入一个文件
LZClose | 关闭由LZOpenFile 或 LZInit函数打开的一个文件
LZCopy | 复制一个文件
LZInit | 这个函数用于初始化内部缓冲区
LZOpenFile | 该函数能执行大量不同的文件处理，而且兼容于压缩文件
LZRead | 将数据从文件读入内存缓冲区
LZSeek | 设置一个文件中进行读写的当前位置
MapViewOfFile | 将一个文件映射对象映射到当前应用程序的地址空间


文件处理类5

文件处理函数，共八页。第一页 ， 第二页 ， 第三页 ， 第四页 ，第五页， 第六页 ， 第七页 ， 第八页
MoveFile | 移动文件
OpenFile | 这个函数能执行大量不同的文件操作
OpenFileMapping | 打开一个现成的文件映射对象
QueryDosDevice | 在Windows NT中，DOS设备名会映射成NT系统设备名。该函数可判断当前的设备映射情况
ReadFile | 从文件中读出数据
ReadFileEx | 与ReadFile相似，只是它只能用于异步读操作，并包含了一个完整的回调
RegCloseKey | 关闭系统注册表中的一个项（或键）
RegConnectRegistry | 访问远程系统的部分注册表
RegCreateKey | 在指定的项下创建或打开一个项
RegCreateKeyEx | 在指定项下创建新项的更复杂的方式。在Win32环境中建议使用这个函数
RegDeleteKey | 删除现有项下方一个指定的子项
RegDeleteValue | 删除指定项下方的一个值
RegEnumKey | 枚举指定项的子项。在Win32环境中应使用RegEnumKeyEx
RegEnumKeyEx | 枚举指定项下方的子项
RegEnumValue | 枚举指定项的值
RegFlushKey | 将对项和它的子项作出的改动实际写入磁盘


文件处理类6

文件处理函数，共八页。第一页 ， 第二页 ， 第三页 ， 第四页 ， 第五页 ，第六页， 第七页 ， 第八页
RegGetKeySecurity | 获取与一个注册表项有关的安全信息
RegLoadKey | 从以前用RegSaveKey函数创建的一个文件里装载注册表信息
RegNotifyChangeKeyValue | 注册表项或它的任何一个子项发生变化时，用这个函数提供一种通知机制
RegOpenKey | 打开一个现有的注册表项
RegOpenKeyEx | 打开一个现有的项。在win32下推荐使用这个函数
RegQueryInfoKey | 获取与一个项有关的信息
RegQueryValue | 取得指定项或子项的默认（未命名）值
RegQueryValueEx | 获取一个项的设置值
RegReplaceKey | 用一个磁盘文件保存的信息替换注册表信息；并创建一个备份，在其中包含当前注册表信息
RegRestoreKey | 从一个磁盘文件恢复注册表信息
RegSaveKey | 将一个项以及它的所有子项都保存到一个磁盘文件
RegSetKeySecurity | 设置指定项的安全特性
RegSetValue | 设置指定项或子项的默认值
RegSetValueEx | 设置指定项的值
RegUnLoadKey | 卸载指定的项以及它的所有子项
RemoveDirectory | 删除指定目录


文件处理类7

文件处理函数，共八页。第一页 ， 第二页 ， 第三页 ， 第四页 ， 第五页 ， 第六页 ，第七页， 第八页
SearchPath | 查找指定文件
SetCurrentDirectory | 设置当前目录
SetEndOfFile | 针对一个打开的文件，将当前文件位置设为文件末尾
SetFileAttributes | 设置文件属性
SetFilePointer | 在一个文件中设置当前的读写位置
SetFileTime | 设置文件的创建、访问及上次修改时间
SetHandleCount | 这个函数不必在win32下使用；即使使用，也不会有任何效果
SetVolumeLabel | 设置一个磁盘的卷标（Label）
SystemTimeToFileTime | 根据一个FILETIME结构的内容，载入一个SYSTEMTIME结构
UnlockFile | 解除对一个文件的锁定
UnlockFileEx | 解除对一个文件的锁定
UnmapViewOfFile | 在当前应用程序的内存地址空间解除对一个文件映射对象的映射
VerFindFile | 用这个函数决定一个文件应安装到哪里
VerInstallFile | 用这个函数安装一个文件
VerLanguageName | 这个函数能根据16位语言代码获取一种语言的名称
VerQueryValue | 这个函数用于从版本资源中获取信息


文件处理类8

文件处理函数，共八页。第一页 ， 第二页 ， 第三页 ， 第四页 ， 第五页 ， 第六页 ， 第七页 ，第八页
WriteFile | 将数据写入一个文件
WriteFileEx | 与WriteFile类似，只是它只能用于异步写操作，并包括了一个完整的回调
WritePrivateProfileSection | 为一个初始化文件（.ini）中指定的小节设置所有项名和值
WritePrivateProfileString | 在初始化文件指定小节内设置一个字串
WriteProfileSection | 为Win.ini初始化文件中一个指定的小节设置所有项名和值
WriteProfileString | 在Win.ini初始化文件指定小节内设置一个字串


网络类函数1

网络函数，共一页。第一页
WNetAddConnection | 创建同一个网络资源的永久性连接
WNetAddConnection2 | 创建同一个网络资源的连接
WNetAddConnection3 | 创建同一个网络资源的连接
WNetCancelConnection | 结束一个网络连接
WNetCancelConnection2 | 结束一个网络连接
WNetCloseEnum | 结束一次枚举操作
WNetConnectionDialog | 启动一个标准对话框，以便建立同网络资源的连接
WNetDisconnectDialog | 启动一个标准对话框，以便断开同网络资源的连接
WNetEnumResource | 枚举网络资源
WNetGetConnection | 获取本地或已连接的一个资源的网络名称
WNetGetLastError | 获取网络错误的扩展错误信息
WNetGetUniversalName | 获取网络中一个文件的远程名称以及/或者UNC（统一命名规范）名称
WNetGetUser | 获取一个网络资源用以连接的名字
WNetOpenEnum | 启动对网络资源进行枚举的过程


菜单类1

菜单函数：共三页。第一页，第二页 ， 第三页
AppendMenu | 在指定的菜单里添加一个菜单项
CheckMenuItem | 复选或撤消复选指定的菜单条目
CheckMenuRadioItem | 指定一个菜单条目被复选成“单选”项目
CreateMenu | 创建新菜单
CreatePopupMenu | 创建一个空的弹出式菜单
DeleteMenu | 删除指定的菜单条目
DestroyMenu | 删除指定的菜单
DrawMenuBar | 为指定的窗口重画菜单
EnableMenuItem | 允许或禁止指定的菜单条目
GetMenu | 取得窗口中一个菜单的句柄
GetMenuCheckMarkDimensions | 返回一个菜单复选符的大小
GetMenuContextHelpId | 取得一个菜单的帮助场景ID
GetMenuDefaultItem | 判断菜单中的哪个条目是默认条目
GetMenuItemCount | 返回菜单中条目（菜单项）的数量
GetMenuItemID | 返回位于菜单中指定位置处的条目的菜单ID
GetMenuItemInfo | 取得（接收）与一个菜单条目有关的特定信息


菜单类2

菜单函数：共三页。第一页 ，第二页， 第三页
GetMenuItemRect | 在一个矩形中装载指定菜单条目的屏幕坐标信息
GetMenuState | 取得与指定菜单条目状态有关的信息
GetMenuString | 取得指定菜单条目的字串
GetSubMenu | 取得一个弹出式菜单的句柄，它位于菜单中指定的位置
GetSystemMenu | 取得指定窗口的系统菜单的句柄
HiliteMenuItem | 控制顶级菜单条目的加亮显示状态
InsertMenu | 在菜单的指定位置处插入一个菜单条目，并根据需要将其他条目向下移动
InsertMenuItem | 插入一个新菜单条目
IsMenu | 判断指定的句柄是否为一个菜单的句柄
LoadMenu | 从指定的模块或应用程序实例中载入一个菜单
LoadMenuIndirect | 载入一个菜单
MenuItemFromPoint | 判断哪个菜单条目包含了屏幕上一个指定的点
ModifyMenu | 改变菜单条目
RemoveMenu | 删除指定的菜单条目
SetMenu | 设置窗口菜单
SetMenuContextHelpId | 设置一个菜单的帮助场景ID


菜单类3

菜单函数：共三页。第一页 ， 第二页 ，第三页
SetMenuDefaultItem | 将一个菜单条目设为默认条目
SetMenuItemBitmaps | 设置一幅特定位图，令其在指定的菜单条目中使用，代替标准的复选符号（√）
SetMenuItemInfo | 为一个菜单条目设置指定的信息
TrackPopupMenu | 在屏幕的任意地方显示一个弹出式菜单
TrackPopupMenuEx | 与TrackPopupMenu相似，只是它提供了额外的功能


文本和字体类1

文本和字体函数，共三页。第一页，第二页 ， 第三页
AddFontResource | 在Windows系统中添加一种字体资源
CreateFont | 用指定的属性创建一种逻辑字体
CreateFontIndirect | 用指定的属性创建一种逻辑字体
CreateScalableFontResource | 为一种TureType字体创建一个资源文件，以便能用API函数AddFontResource将其加入Windows系统
DrawText | 将文本描绘到指定的矩形中
DrawTextEx | 与DrawText相似，只是加入了更多的功能
EnumFontFamilies | 列举指定设备可用的字体
EnumFontFamiliesEx | 列举指定设备可用的字体
EnumFonts | 列举指定设备可用的字体
ExtTextOut | 经过扩展的文本描绘函数。也请参考SetTextAlign函数
GetAspectRatioFilterEx | 用SetMapperFlags要求Windows只选择与设备当前纵横比相符的光栅字体时，本函数可判断纵横比大小
GetCharABCWidths | 判断TureType字体中一个或多个字符的A-B-C大小
GetCharABCWidthsFloat | 查询一种字体中一个或多个字符的A-B-C尺寸
GetCharacterPlacement | 该函数用于了解如何用一个给定的字符显示一个字串
GetCharWidth | 调查字体中一个或多个字符的宽度
GetFontData | 接收一种可缩放字体文件的数据


文本和字体类2

文本和字体函数，共三页。第一页 ，第二页， 第三页
GetFontLanguageInfo | 返回目前选入指定设备场景中的字体的信息
GetGlyphOutline | 取得TureType字体中构成一个字符的曲线信息
GetKerningPairs | 取得指定字体的字距信息
GetOutlineTextMetrics | 接收与TureType字体内部特征有关的详细信息
GetRasterizerCaps | 了解系统是否有能力支持可缩放的字体
GetTabbedTextExtent | 判断一个字串占据的范围，同时考虑制表站扩充的因素
GetTextAlign | 接收一个设备场景当前的文本对齐标志
GetTextCharacterExtra | 判断额外字符间距的当前值
GetTextCharset | 接收当前选入指定设备场景的字体的字符集标识符
GetTextCharsetInfo | 获取与当前选定字体的字符集有关的详细信息
GetTextColor | 判断当前字体颜色。通常也称为“前景色”
GetTextExtentExPoint | 判断要填入指定区域的字符数量。也用一个数组装载每个字符的范围信息
GetTextExtentPoint | 判断一个字串的大小（范围）
GetTextFace | 获取一种字体的字样名
GetTextMetrics | 获取与选入一种设备场景的物理字体有关的信息
GrayString | 描绘一个以灰色显示的字串。通常由Windows用于标识禁止状态


文本和字体类3

文本和字体函数，共三页。第一页 ， 第二页 ，第三页
PolyTextOut | 描绘一系列字串
RemoveFontResource | 从Windows系统中删除一种字体资源
SetMapperFlags | Windows对字体进行映射时，可用该函数选择与目标设备的纵横比相符的光栅字体
SetTextAlign | 设置文本对齐方式，并指定在文本输出过程中使用设备场景的当前位置
SetTextCharacterExtra | 描绘文本的时候，指定要在字符间插入的额外间距
SetTextColor | 设置当前文本颜色。这种颜色也称为“前景色”
SetTextJustification | 通过指定一个文本行应占据的额外空间，可用这个函数对文本进行两端对齐处理
TabbedTextOut | 支持制表站的一个文本描绘函数
TextOut | 文本绘图函数


硬件与系统类函数1

硬件与系统函数：共七页。第一页，第二页 ， 第三页 ， 第四页 ， 第五页 ， 第六页 ， 第七页
ActivateKeyboardLayout | 激活一个新的键盘布局。键盘布局定义了按键在一种物理性键盘上的位置与含义
Beep | 用于生成简单的声音
CharToOem | 将一个字串从ANSI字符集转换到OEM字符集
ClipCursor | 将指针限制到指定区域
ConvertDefaultLocale | 将一个特殊的地方标识符转换成真实的地方ID
CreateCaret | 根据指定的信息创建一个插入符（光标），并将它选定为指定窗口的默认插入符
DestroyCaret | 清除（破坏）一个插入符
EnumCalendarInfo | 枚举在指定“地方”环境中可用的日历信息
EnumDateFormats | 列举指定的“当地”设置中可用的长、短日期格式
EnumSystemCodePages | 枚举系统中已安装或支持的代码页
EnumSystemLocales | 枚举系统已经安装或提供支持的“地方”设置
EnumTimeFormats | 枚举一个指定的地方适用的时间格式
ExitWindowsEx | 退出windows，并用特定的选项重新启动
ExpandEnvironmentStrings | 扩充环境字串
FreeEnvironmentStrings | 翻译指定的环境字串块
GetACP | 判断目前正在生效的ANSI代码页


硬件与系统类函数2

硬件与系统函数：共七页。第一页 ，第二页， 第三页 ， 第四页 ， 第五页 ， 第六页 ， 第七页
GetAsyncKeyState | 判断函数调用时指定虚拟键的状态
GetCaretBlinkTime | 判断插入符光标的闪烁频率
GetCaretPos | 判断插入符的当前位置
GetClipCursor | 取得一个矩形，用于描述目前为鼠标指针规定的剪切区域
GetCommandLine | 获得指向当前命令行缓冲区的一个指针
GetComputerName | 取得这台计算机的名称
GetCPInfo | 取得与指定代码页有关的信息
GetCurrencyFormat | 针对指定的“地方”设置，根据货币格式格式化一个数字
GetCursor | 获取目前选择的鼠标指针的句柄
GetCursorPos | 获取鼠标指针的当前位置
GetDateFormat | 针对指定的“当地”格式，对一个系统日期进行格式化
GetDoubleClickTime | 判断连续两次鼠标单击之间会被处理成双击事件的间隔时间
GetEnvironmentStrings | 为包含了当前环境字串设置的一个内存块分配和返回一个句柄
GetEnvironmentVariable | 取得一个环境变量的值
GetInputState | 判断是否存在任何待决（等待处理）的鼠标或键盘事件
GetKBCodePage | 由GetOEMCP取代，两者功能完全相同


硬件与系统类函数3

硬件与系统函数：共七页。第一页 ， 第二页 ，第三页， 第四页 ， 第五页 ， 第六页 ， 第七页
GetKeyboardLayout | 取得一个句柄，描述指定应用程序的键盘布局
GetKeyboardLayoutList | 获得系统适用的所有键盘布局的一个列表
GetKeyboardLayoutName | 取得当前活动键盘布局的名称
GetKeyboardState | 取得键盘上每个虚拟键当前的状态
GetKeyboardType | 了解与正在使用的键盘有关的信息
GetKeyNameText | 在给出扫描码的前提下，判断键名
GetKeyState | 针对已处理过的按键，在最近一次输入信息时，判断指定虚拟键的状态
GetLastError | 针对之前调用的api函数，用这个函数取得扩展错误信息
GetLocaleInfo | 取得与指定“地方”有关的信息
GetLocalTime | 取得本地日期和时间
GetNumberFormat | 针对指定的“地方”，按特定的格式格式化一个数字
GetOEMCP | 判断在OEM和ANSI字符集间转换的windows代码页
GetQueueStatus | 判断应用程序消息队列中待决（等待处理）的消息类型
GetSysColor | 判断指定windows显示对象的颜色
GetSystemDefaultLangID | 取得系统的默认语言ID
GetSystemDefaultLCID | 取得当前的默认系统“地方”


硬件与系统类函数4

硬件与系统函数：共七页。第一页 ， 第二页 ， 第三页 ，第四页， 第五页 ， 第六页 ， 第七页
GetSystemInfo | 取得与底层硬件平台有关的信息
GetSystemMetrics | 返回与windows环境有关的信息
GetSystemPowerStatus | 获得与当前系统电源状态有关的信息
GetSystemTime | 取得当前系统时间，这个时间采用的是“协同世界时间”（即UTC，也叫做GMT）格式
GetSystemTimeAdjustment | 使内部系统时钟与一个外部的时钟信号源同步
GetThreadLocale | 取得当前线程的地方ID
GetTickCount | 用于获取自windows启动以来经历的时间长度（毫秒）
GetTimeFormat | 针对当前指定的“地方”，按特定的格式格式化一个系统时间
GetTimeZoneInformation | 取得与系统时区设置有关的信息
GetUserDefaultLangID | 为当前用户取得默认语言ID
GetUserDefaultLCID | 取得当前用户的默认“地方”设置
GetUserName | 取得当前用户的名字
GetVersion | 判断当前运行的Windows和DOS版本
GetVersionEx | 取得与平台和操作系统有关的版本信息
HideCaret | 在指定的窗口隐藏插入符（光标）
IsValidCodePage | 判断一个代码页是否有效


硬件与系统类函数5

硬件与系统函数：共七页。第一页 ， 第二页 ， 第三页 ， 第四页 ，第五页， 第六页 ， 第七页
IsValidLocale | 判断地方标识符是否有效
keybd_event | 这个函数模拟了键盘行动
LoadKeyboardLayout | 载入一个键盘布局
MapVirtualKey | 根据指定的映射类型，执行不同的扫描码和字符转换
MapVirtualKeyEx | 根据指定的映射类型，执行不同的扫描码和字符转换
MessageBeep | 播放一个系统声音。系统声音的分配方案是在控制面板里决定的
mouse_event | 模拟一次鼠标事件
OemKeyScan | 判断OEM字符集中的一个ASCII字符的扫描码和Shift键状态
OemToChar | 将OEM字符集的一个字串转换到ANSI字符集
SetCaretBlinkTime | 指定插入符（光标）的闪烁频率
SetCaretPos | 指定插入符的位置
SetComputerName | 设置新的计算机名
SetCursor | 将指定的鼠标指针设为当前指针
SetCursorPos | 设置指针的位置
SetDoubleClickTime | 设置连续两次鼠标单击之间能使系统认为是双击事件的间隔时间
SetEnvironmentVariable | 将一个环境变量设为指定的值


硬件与系统类函数6

硬件与系统函数：共七页。第一页 ， 第二页 ， 第三页 ， 第四页 ， 第五页 ，第六页， 第七页
SetKeyboardState | 设置每个虚拟键当前在键盘上的状态
SetLocaleInfo | 改变用户“地方”设置信息
SetLocalTime | 设置当前地方时间
SetSysColors | 设置指定窗口显示对象的颜色
SetSystemCursor | 改变任何一个标准系统指针
SetSystemTime | 设置当前系统时间
SetSystemTimeAdjustment | 定时添加一个校准值使内部系统时钟与一个外部的时钟信号源同步
SetThreadLocale | 为当前线程设置地方
SetTimeZoneInformation | 设置系统时区信息
ShowCaret | 在指定的窗口里显示插入符（光标）
ShowCursor | 控制鼠标指针的可视性
SwapMouseButton | 决定是否互换鼠标左右键的功能
SystemParametersInfo | 获取和设置数量众多的windows系统参数
SystemTimeToTzSpecificLocalTime | 将系统时间转换成地方时间
ToAscii | 根据当前的扫描码和键盘信息，将一个虚拟键转换成ASCII字符
ToUnicode | 根据当前的扫描码和键盘信息，将一个虚拟键转换成Unicode字符


硬件与系统类函数7

硬件与系统函数：共七页。第一页 ， 第二页 ， 第三页 ， 第四页 ， 第五页 ， 第六页 ，第七页
UnloadKeyboardLayout | 卸载指定的键盘布局
VkKeyScan | 针对Windows字符集中一个ASCII字符，判断虚拟键码和Shift键的状态


控件和消息类1

控件与消息函数：共六页。第一页，第二页 ， 第三页 ， 第四页 ， 第五页 ， 第六页
AdjustWindowRect | 给定一种窗口样式，计算获得目标客户区矩形所需的窗口大小
AnyPopup | 判断屏幕上是否存在任何弹出式窗口
ArrangeIconicWindows | 排列一个父窗口的最小化子窗口
AttachThreadInput | 连接线程输入函数
BeginDeferWindowPos | 启动构建一系列新窗口位置的过程
BringWindowToTop | 将指定的窗口带至窗口列表顶部
CascadeWindows | 以层叠方式排列窗口
ChildWindowFromPoint | 返回父窗口中包含了指定点的第一个子窗口的句柄
ClientToScreen | 判断窗口内以客户区坐标表示的一个点的屏幕坐标
CloseWindow | 最小化指定的窗口
CopyRect | 矩形内容复制
DeferWindowPos | 该函数为特定的窗口指定一个新窗口位置
DestroyWindow | 清除指定的窗口以及它的所有子窗口
DrawAnimatedRects | 描绘一系列动态矩形
EnableWindow | 指定的窗口里允许或禁止所有鼠标及键盘输入
EndDeferWindowPos | 同时更新DeferWindowPos调用时指定的所有窗口的位置及状态


控件和消息类2

控件与消息函数：共六页。第一页 ，第二页， 第三页 ， 第四页 ， 第五页 ， 第六页
EnumChildWindows | 为指定的父窗口枚举子窗口
EnumThreadWindows | 枚举与指定任务相关的窗口
EnumWindows | 枚举窗口列表中的所有父窗口
EqualRect | 判断两个矩形结构是否相同
FindWindow | 寻找窗口列表中第一个符合指定条件的顶级窗口
FindWindowEx | 在窗口列表中寻找与指定条件相符的第一个子窗口
FlashWindow | 闪烁显示指定窗口
GetActiveWindow | 获得活动窗口的句柄
GetCapture | 获得一个窗口的句柄，这个窗口位于当前输入线程，且拥有鼠标捕获（鼠标活动由它接收）
GetClassInfo | 取得WNDCLASS结构（或WNDCLASSEX结构）的一个副本，结构中包含了与指定类有关的信息
GetClassLong | 取得窗口类的一个Long变量条目
GetClassName | 为指定的窗口取得类名
GetClassWord | 为窗口类取得一个整数变量
GetClientRect | 返回指定窗口客户区矩形的大小
GetDesktopWindow | 获得代表整个屏幕的一个窗口（桌面窗口）句柄
GetFocus | 获得拥有输入焦点的窗口的句柄


控件和消息类3

控件与消息函数：共六页。第一页 ， 第二页 ，第三页， 第四页 ， 第五页 ， 第六页
GetForegroundWindow | 获得前台窗口的句柄
GetLastActivePopup | 获得在一个给定父窗口中最近激活过的弹出式窗口的句柄
GetParent | 判断指定窗口的父窗口
GetTopWindow | 搜索内部窗口列表，寻找隶属于指定窗口的头一个窗口的句柄
GetUpdateRect | 获得一个矩形，它描叙了指定窗口中需要更新的那一部分
GetWindow | 获得一个窗口的句柄，该窗口与某源窗口有特定的关系
GetWindowContextHelpId | 取得与窗口关联在一起的帮助场景ID
GetWindowLong | 从指定窗口的结构中取得信息
GetWindowPlacement | 获得指定窗口的状态及位置信息
GetWindowRect | 获得整个窗口的范围矩形，窗口的边框、标题栏、滚动条及菜单等都在这个矩形内
GetWindowText | 取得一个窗体的标题（caption）文字，或者一个控件的内容
GetWindowTextLength | 调查窗口标题文字或控件内容的长短
GetWindowWord | 获得指定窗口结构的信息
InflateRect | 增大或减小一个矩形的大小
IntersectRect | 这个函数在lpDestRect里载入一个矩形，它是lpSrc1Rect与lpSrc2Rect两个矩形的交集
InvalidateRect | 屏蔽一个窗口客户区的全部或部分区域


控件和消息类4

控件与消息函数：共六页。第一页 ， 第二页 ， 第三页 ，第四页， 第五页 ， 第六页
IsChild | 判断一个窗口是否为另一窗口的子或隶属窗口
IsIconic | 判断窗口是否已最小化
IsRectEmpty | 判断一个矩形是否为空
IsWindow | 判断一个窗口句柄是否有效
IsWindowEnabled | 判断窗口是否处于活动状态
IsWindowUnicode | 判断一个窗口是否为Unicode窗口。这意味着窗口为所有基于文本的消息都接收Unicode文字
IsWindowVisible | 判断窗口是否可见
IsZoomed | 判断窗口是否最大化
LockWindowUpdate | 锁定指定窗口，禁止它更新
MapWindowPoints | 将一个窗口客户区坐标的点转换到另一窗口的客户区坐标系统
MoveWindow | 改变指定窗口的位置和大小
OffsetRect | 通过应用一个指定的偏移，从而让矩形移动起来
OpenIcon | 恢复一个最小化的程序，并将其激活
PtInRect | 判断指定的点是否位于矩形内部
RedrawWindow | 重画全部或部分窗口
ReleaseCapture | 为当前的应用程序释放鼠标捕获


控件和消息类5

控件与消息函数：共六页。第一页 ， 第二页 ， 第三页 ， 第四页 ，第五页， 第六页
ScreenToClient | 判断屏幕上一个指定点的客户区坐标
ScrollWindow | 滚动窗口客户区的全部或一部分
ScrollWindowEx | 根据附加的选项，滚动窗口客户区的全部或部分
SetActiveWindow | 激活指定的窗口
SetCapture | 将鼠标捕获设置到指定的窗口
SetClassLong | 为窗口类设置一个Long变量条目
SetClassWord | 为窗口类设置一个条目
SetFocusAPI | 将输入焦点设到指定的窗口。如有必要，会激活窗口
SetForegroundWindow | 将窗口设为系统的前台窗口
SetParent | 指定一个窗口的新父
SetRect | 设置指定矩形的内容
SetRectEmpty | 将矩形设为一个空矩形
SetWindowContextHelpId | 为指定的窗口设置帮助场景（上下文）ID
SetWindowLong | 在窗口结构中为指定的窗口设置信息
SetWindowPlacement | 设置窗口状态和位置信息
SetWindowPos | 为窗口指定一个新位置和状态


控件和消息类6

控件与消息函数：共六页。第一页 ， 第二页 ， 第三页 ， 第四页 ， 第五页 ，第六页
SetWindowText | 设置窗口的标题文字或控件的内容
SetWindowWord | 在窗口结构中为指定的窗口设置信息
ShowOwnedPopups | 显示或隐藏由指定窗口所有的全部弹出式窗口
ShowWindow | 控制窗口的可见性
ShowWindowAsync | 与ShowWindow相似
SubtractRect | 装载矩形lprcDst，它是在矩形lprcSrc1中减去lprcSrc2得到的结果
TileWindows | 以平铺顺序排列窗口
UnionRect | 装载一个lpDestRect目标矩形，它是lpSrc1Rect和lpSrc2Rect联合起来的结果
UpdateWindow | 强制立即更新窗口
ValidateRect | 校验窗口的全部或部分客户区
WindowFromPoint | 返回包含了指定点的窗口的句柄。忽略屏蔽、隐藏以及透明窗口


位图、图标和光栅运算类1

位图、图标和光栅运算函数，共三页。第一页，第二页 ， 第三页
BitBlt | 将一幅位图从一个设备场景复制到另一个
CopyIcon | 制作指定图标或鼠标指针的一个副本。这个副本从属于发出调用的应用程序
CopyImage | 复制位图、图标或指针，同时在复制过程中进行一些转换工作
CreateBitmap | 按照规定的格式创建一幅与设备有关位图
CreateBitmapIndirect | 创建一幅与设备有关位图
CreateCompatibleBitmap | 创建一幅与设备有关位图，它与指定的设备场景兼容
CreateCursor | 创建一个鼠标指针
CreateDIBitmap | 根据一幅与设备无关的位图创建一幅与设备有关的位图
CreateDIBSection | 创建一个DIBSection
CreateIcon | 创建一个图标
CreateIconIndirect | 创建一个图标
DestroyCursor | 清除指定的鼠标指针，并释放它占用的所有系统资源
DestroyIcon | 清除图标
DrawIcon | 在指定的位置画一个图标
DrawIconEx | 描绘一个图标或鼠标指针。与DrawIcon相比，这个函数提供了更多的功能
ExtractAssociatedIcon | 判断一个可执行程序或DLL中是否存在图标，或是否有图标与系统注册表中指定的文件存在关联并提取之


位图、图标和光栅运算类2

位图、图标和光栅运算函数，共三页。第一页 ，第二页， 第三页
ExtractIcon | 判断一个可执行文件或DLL中是否有图标存在，并将其提取出来
GetBitmapBits | 将来自位图的二进制位复制到一个缓冲区
GetBitmapDimensionEx | 取得一幅位图的宽度和高度
GetDIBColorTable | 从选入设备场景的DIBSection中取得颜色表信息
GetDIBits | 将来自一幅位图的二进制位复制到一幅与设备无关的位图里
GetIconInfo | 取得与图标有关的信息
GetStretchBltMode | 判断StretchBlt 和 StretchDIBits函数采用的伸缩模式
LoadBitmap | 从指定的模块或应用程序实例中载入一幅位图
LoadCursor | 从指定的模块或应用程序实例中载入一个鼠标指针
LoadCursorFromFile | 在一个指针文件或一个动画指针文件的基础上创建一个指针
LoadIcon | 从指定的模块或应用程序实例中载入一个图标
LoadImage | 载入一个位图、图标或指针
MaskBlt | 执行复杂的图象传输，同时进行掩模（MASK）处理
PatBlt | 在当前选定的刷子的基础上，用一个图案填充指定的设备场景
PlgBlt | 复制一幅位图，同时将其转换成一个平行四边形。利用它可对位图进行旋转处理
SetBitmapBits | 将来自缓冲区的二进制位复制到一幅位图


位图、图标和光栅运算类3

位图、图标和光栅运算函数，共三页。第一页 ， 第二页 ，第三页
SetBitmapDimensionEx | 设置一幅位图的宽度。以一毫米的十分之一为单位
SetDIBColorTable | 设置选入设备场景的一个DIBSection的颜色表信息
SetDIBits | 将来自与设备无关位图的二进制位复制到一幅与设备有关的位图里
SetDIBitsToDevice | 将一幅与设备无关位图的全部或部分数据直接复制到一个设备
SetStretchBltMode | 指定StretchBlt 和 StretchDIBits函数的伸缩模式
StretchBlt | 将一幅位图从一个设备场景复制到另一个
StretchDIBits | 将一幅与设备无关位图的全部或部分数据直接复制到指定的设备场景


绘图类函数1

绘图函数：共七页。第一页，第二页 ， 第三页 ， 第四页 ， 第五页 ， 第六页 ， 第七页
AbortPath | 抛弃选入指定设备场景中的所有路径。也取消目前正在进行的任何路径的创建工作
AngleArc | 用一个连接弧画一条线
Arc | 画一个圆弧
BeginPath | 启动一个路径分支
CancelDC | 取消另一个线程里的长时间绘图操作
Chord | 画一个弦
CloseEnhMetaFile | 关闭指定的增强型图元文件设备场景，并将新建的图元文件返回一个句柄
CloseFigure | 描绘到一个路径时，关闭当前打开的图形
CloseMetaFile | 关闭指定的图元文件设备场景，并向新建的图元文件返回一个句柄
CopyEnhMetaFile | 制作指定增强型图元文件的一个副本（拷贝）
CopyMetaFile | 制作指定（标准）图元文件的一个副本
CreateBrushIndirect | 在一个LOGBRUSH数据结构的基础上创建一个刷子
CreateDIBPatternBrush | 用一幅与设备无关的位图创建一个刷子，以便指定刷子样式（图案）
CreateEnhMetaFile | 创建一个增强型的图元文件设备场景
CreateHatchBrush | 创建带有阴影图案的一个刷子
CreateMetaFile | 创建一个图元文件设备场景


绘图类函数2

绘图函数：共七页。第一页 ，第二页， 第三页 ， 第四页 ， 第五页 ， 第六页 ， 第七页
CreatePatternBrush | 用指定了刷子图案的一幅位图创建一个刷子
CreatePen | 用指定的样式、宽度和颜色创建一个画笔
CreatePenIndirect | 根据指定的LOGPEN结构创建一个画笔
CreateSolidBrush | 用纯色创建一个刷子
DeleteEnhMetaFile | 删除指定的增强型图元文件
DeleteMetaFile | 删除指定的图元文件
DeleteObject | 删除GDI对象，对象使用的所有系统资源都会被释放
DrawEdge | 用指定的样式描绘一个矩形的边框
DrawEscape | 换码（Escape）函数将数据直接发至显示设备驱动程序
DrawFocusRect | 画一个焦点矩形
DrawFrameControl | 描绘一个标准控件
DrawState | 为一幅图象或绘图操作应用各式各样的效果
Ellipse | 描绘一个椭圆，由指定的矩形围绕
EndPath | 停止定义一个路径
EnumEnhMetaFile | 针对一个增强型图元文件，列举其中单独的图元文件记录
EnumMetaFile | 为一个标准的windows图元文件枚举单独的图元文件记录


绘图类函数3

绘图函数：共七页。第一页 ， 第二页 ，第三页， 第四页 ， 第五页 ， 第六页 ， 第七页
EnumObjects | 枚举可随同指定设备场景使用的画笔和刷子
ExtCreatePen | 创建一个扩展画笔（装饰或几何）
ExtFloodFill | 在指定的设备场景里，用当前选择的刷子填充一个区域
FillPath | 关闭路径中任何打开的图形，并用当前刷子填充
FillRect | 用指定的刷子填充一个矩形
FlattenPath | 将一个路径中的所有曲线都转换成线段
FloodFill | 用当前选定的刷子在指定的设备场景中填充一个区域
FrameRect | 用指定的刷子围绕一个矩形画一个边框
GdiComment | 为指定的增强型图元文件设备场景添加一条注释信息
GdiFlush | 执行任何未决的绘图操作
GdiGetBatchLimit | 判断有多少个GDI绘图命令位于队列中
GdiSetBatchLimit | 指定有多少个GDI绘图命令能够进入队列
GetArcDirection | 画圆弧的时候，判断当前采用的绘图方向
GetBkColor | 取得指定设备场景当前的背景颜色
GetBkMode | 针对指定的设备场景，取得当前的背景填充模式
GetBrushOrgEx | 判断指定设备场景中当前选定刷子起点


绘图类函数4

绘图函数：共七页。第一页 ， 第二页 ， 第三页 ，第四页， 第五页 ， 第六页 ， 第七页
GetCurrentObject | 获得指定类型的当前选定对象
GetCurrentPositionEx | 在指定的设备场景中取得当前的画笔位置
GetEnhMetaFile | 取得磁盘文件中包含的一个增强型图元文件的图元文件句柄
GetEnhMetaFileBits | 将指定的增强型图元文件复制到一个内存缓冲区里
GetEnhMetaFileDescription | 返回对一个增强型图元文件的说明
GetEnhMetaFileHeader | 取得增强型图元文件的图元文件头
GetEnhMetaFilePaletteEntries | 取得增强型图元文件的全部或部分调色板
GetMetaFile | 取得包含在一个磁盘文件中的图元文件的图元文件句柄
GetMetaFileBitsEx | 将指定的图元文件复制到一个内存缓冲区
GetMiterLimit | 取得设备场景的斜率限制（Miter）设置
GetNearestColor | 根据设备的显示能力，取得与指定颜色最接近的一种纯色
GetObjectAPI | 取得对指定对象进行说明的一个结构
GetObjectType | 判断由指定句柄引用的GDI对象的类型
GetPath | 取得对当前路径进行定义的一系列数据
GetPixel | 在指定的设备场景中取得一个像素的RGB值
GetPolyFillMode | 针对指定的设备场景，获得多边形填充模式


绘图类函数5

绘图函数：共七页。第一页 ， 第二页 ， 第三页 ， 第四页 ，第五页， 第六页 ， 第七页
GetROP2 | 针对指定的设备场景，取得当前的绘图模式
GetStockObject | 取得一个固有对象（Stock）
GetSysColorBrush | 为任何一种标准系统颜色取得一个刷子
GetWinMetaFileBits | 通过在一个缓冲区中填充用于标准图元文件的数据，将一个增强型图元文件转换成标准windows图元文件
InvertRect | 通过反转每个像素的值，从而反转一个设备场景中指定的矩形
LineDDA | 枚举指定线段中的所有点
LineTo | 用当前画笔画一条线，从当前位置连到一个指定的点
MoveToEx | 为指定的设备场景指定一个新的当前画笔位置
PaintDesktop | 在指定的设备场景中描绘桌面墙纸图案
PathToRegion | 将当前选定的路径转换到一个区域里
Pie | 画一个饼图
PlayEnhMetaFile | 在指定的设备场景中画一个增强型图元文件
PlayEnhMetaFileRecord | 回放单独一条增强型图元文件记录
PlayMetaFile | 在指定的设备场景中回放一个图元文件
PlayMetaFileRecord | 回放来自图元文件的单条记录
PolyBezier | 描绘一条或多条贝塞尔（Bezier）曲线


绘图类函数6

绘图函数：共七页。第一页 ， 第二页 ， 第三页 ， 第四页 ， 第五页 ，第六页， 第七页
PolyDraw | 描绘一条复杂的曲线，由线段及贝塞尔曲线组成
Polygon | 描绘一个多边形
Polyline | 用当前画笔描绘一系列线段
PolyPolygon | 用当前选定画笔描绘两个或多个多边形
PolyPolyline | 用当前选定画笔描绘两个或多个多边形
Rectangle | 用当前选定的画笔描绘矩形，并用当前选定的刷子填充
RoundRect | 用当前选定的画笔画一个圆角矩形，并用当前选定的刷子在其中填充
SelectClipPath | 将设备场景当前的路径合并到剪切区域里
SelectObject | 为当前设备场景选择图形对象
SetArcDirection | 设置圆弧的描绘方向
SetBkColor | 为指定的设备场景设置背景颜色
SetBkMode | 指定阴影刷子、虚线画笔以及字符中的空隙的填充方式
SetBrushOrgEx | 为指定的设备场景设置当前选定刷子的起点
SetEnhMetaFileBits | 用指定内存缓冲区内包含的数据创建一个增强型图元文件
SetMetaFileBitsEx | 用包含在指定内存缓冲区内的数据结构创建一个图元文件
SetMiterLimit | 设置设备场景当前的斜率限制


绘图类函数7

绘图函数：共七页。第一页 ， 第二页 ， 第三页 ， 第四页 ， 第五页 ， 第六页 ，第七页
SetPixel | 在指定的设备场景中设置一个像素的RGB值
SetPixelV | 在指定的设备场景中设置一个像素的RGB值
SetPolyFillMode | 设置多边形的填充模式
SetROP2 | 设置指定设备场景的绘图模式。与vb的DrawMode属性完全一致
SetWinMetaFileBits | 将一个标准Windows图元文件转换成增强型图元文件
StrokeAndFillPath | 针对指定的设备场景，关闭路径上打开的所有区域
StrokePath | 用当前画笔描绘一个路径的轮廓。打开的图形不会被这个函数关闭
UnrealizeObject | 将一个刷子对象选入设备场景之前，如刷子的起点准备用SetBrushOrgEx修改，则必须先调用本函数
WidenPath | 根据选定画笔的宽度，重新定义当前选定的路径


打印类1

打印函数，共五页。第一页，第二页 ， 第三页 ， 第四页 ， 第五页
AbortDoc | 取消一份文档的打印
AbortPrinter | 删除与一台打印机关联在一起的缓冲文件
AddForm | 为打印机的表单列表添加一个新表单
AddJob | 用于获取一个有效的路径名，以便用它为作业创建一个后台打印文件。它也会为作业分配一个作业编号
AddMonitor | 为系统添加一个打印机监视器
AddPort | 启动“添加端口”对话框，允许用户在系统可用端口列表中加入一个新端口
AddPrinter | 在系统中添加一台新打印机
AddPrinterConnection | 连接指定的打印机
AddPrinterDriver | 为指定的系统添加一个打印驱动程序
AddPrintProcessor | 为指定的系统添加一个打印处理器
AddPrintProvidor | 为系统添加一个打印供应商
AdvancedDocumentProperties | 启动打印机文档设置对话框
ClosePrinter | 关闭一个打开的打印机对象
ConfigurePort | 针对指定的端口，启动一个端口配置对话框
ConnectToPrinterDlg | 启动连接打印机对话框，用它同访问网络的打印机连接
DeleteForm | 从打印机可用表单列表中删除一个表单


打印类2

打印函数，共五页。第一页 ，第二页， 第三页 ， 第四页 ， 第五页
DeleteMonitor | 删除指定的打印监视器
DeletePort | 启动“删除端口”对话框，允许用户从当前系统删除一个端口
DeletePrinter | 将指定的打印机标志为从系统中删除
DeletePrinterConnection | 删除与指定打印机的连接
DeletePrinterDriver | 从系统删除一个打印机驱动程序
DeletePrintProcessor | 从指定系统删除一个打印处理器
DeletePrintProvidor | 从系统中删除一个打印供应商
DeviceCapabilities | 利用这个函数可获得与一个设备的能力有关的信息
DocumentProperties | 打印机配置控制函数
EndDocAPI | 结束一个成功的打印作业
EndDocPrinter | 在后台打印程序的级别指定一个文档的结束
EndPage | 用这个函数完成一个页面的打印，并准备设备场景，以便打印下一个页
EndPagePrinter | 指定一个页在打印作业中的结尾
EnumForms | 枚举一台打印机可用的表单
EnumJobs | 枚举打印队列中的作业
EnumMonitors | 枚举可用的打印监视器


打印类3

打印函数，共五页。第一页 ， 第二页 ，第三页， 第四页 ， 第五页
EnumPorts | 枚举一个系统可用的端口
EnumPrinterDrivers | 枚举指定系统中已安装的打印机驱动程序
EnumPrinters | 枚举系统中安装的打印机
EnumPrintProcessorDatatypes | 枚举由一个打印处理器支持的数据类型
EnumPrintProcessors | 枚举系统中可用的打印处理器
Escape | 设备控制函数
FindClosePrinterChangeNotification | 关闭用FindFirstPrinterChangeNotification函数获取的一个打印机通告对象
FindFirstPrinterChangeNotification | 创建一个新的改变通告对象，以便我们注意打印机状态的各种变化
FindNextPrinterChangeNotification | 用这个函数判断触发一次打印机改变通告信号的原因
FreePrinterNotifyInfo | 释放由FindNextPrinterChangeNotification函数分配的一个缓冲区
GetForm | 取得与指定表单有关的信息
GetJob | 获取与指定作业有关的信息
GetPrinter | 取得与指定打印机有关的信息
GetPrinterData | 为打印机设置注册表配置信息
GetPrinterDriver | 针对指定的打印机，获取与打印机驱动程序有关的信息
GetPrinterDriverDirectory | 判断指定系统中包含了打印机驱动程序的目录是什么


打印类4

打印函数，共五页。第一页 ， 第二页 ， 第三页 ，第四页， 第五页
GetPrintProcessorDirectory | 判断指定系统中包含了打印机处理器驱动程序及文件的目录
OpenPrinter | 打开指定的打印机，并获取打印机的句柄
PrinterMessageBox | 在拥有指定打印作业的系统上显示一个打印机出错消息框
PrinterProperties | 启动打印机属性对话框，以便对打印机进行配置
ReadPrinter | 从打印机读入数据
ResetDC | 重设一个设备场景
ResetPrinter | 改变指定打印机的默认数据类型及文档设置
ScheduleJob | 提交一个要打印的作业
SetAbortProc | 为Windows指定取消函数的地址
SetForm | 为指定的表单设置信息
SetJob | 对一个打印作业的状态进行控制
SetPrinter | 对一台打印机的状态进行控制
SetPrinterData | 设置打印机的注册表配置信息
StartDoc | 开始一个打印作业
StartDocPrinter | 在后台打印的级别启动一个新文档
StartPage | 打印一个新页前要先调用这个函数


打印类5

打印函数，共五页。第一页 ， 第二页 ， 第三页 ， 第四页 ，第五页
StartPagePrinter | 在打印作业中指定一个新页的开始
WritePrinter | 将发送目录中的数据写入打印机


设备场景类1

设备场景函数，共五页。第一页，第二页 ， 第三页 ， 第四页 ， 第五页
CombineRgn | 将两个区域组合为一个新区域
CombineTransform | 驱动世界转换。它相当于依顺序进行两次转换
CreateCompatibleDC | 创建一个与特定设备场景一致的内存设备场景
CreateDC | 为专门设备创建设备场景
CreateEllipticRgn | 创建一个椭圆
CreateEllipticRgnIndirect | 创建一个内切于特定矩形的椭圆区域
CreateIC | 为专用设备创建一个信息场景
CreatePolygonRgn | 创建一个由一系列点围成的区域
CreatePolyPolygonRgn | 创建由多个多边形构成的区域。每个多边形都应是封闭的
CreateRectRgn | 创建一个矩形区域
CreateRectRgnIndirect | 创建一个矩形区域
CreateRoundRectRgn | 创建一个圆角矩形
DeleteDC | 删除专用设备场景或信息场景，释放所有相关窗口资源
DPtoLP | 将点阵从设备坐标转换到专用设备场景逻辑坐标
EqualRgn | 确定两个区域是否相等
ExcludeClipRect | 从专用设备场景的剪裁区中去掉一个矩形区。矩形内不能进行绘图


设备场景类2

设备场景函数，共五页。第一页 ，第二页， 第三页 ， 第四页 ， 第五页
ExcludeUpdateRgn | 从专用设备场景剪裁区去掉指定窗口的刷新区域
ExtCreateRegion | 根据世界转换修改区域
ExtSelectClipRgn | 将指定区域组合到设备场景的当前剪裁区
FillRgn | 用指定刷子填充指定区域
FrameRgn | 用指定刷子围绕指定区域画一个外框
GetBoundsRect | 获取指定设备场景的边界矩形
GetClipBox | 获取完全包含指定设备场景剪裁区的最小矩形
GetClipRgn | 获取设备场景当前剪裁区
GetDC | 获取指定窗口的设备场景
GetDCEx | 为指定窗口获取设备场景。相比GetDC，本函数提供了更多的选项
GetDCOrgEx | 获取指定设备场景起点位置（以屏幕坐标表示）
GetDeviceCaps | 根据指定设备场景代表的设备的功能返回信息
GetGraphicsMode | 确定是否允许增强图形模式（世界转换）
GetMapMode | 为特定设备场景调入映象模式
GetRegionData | 装入描述一个区域信息的RgnData结构或缓冲区
GetRgnBox | 获取完全包含指定区域的最小矩形


设备场景类3

设备场景函数，共五页。第一页 ， 第二页 ，第三页， 第四页 ， 第五页
GetUpdateRgn | 确定指定窗口的刷新区域。该区域当前无效，需要刷新
GetViewportExtEx | 获取设备场景视口（viewport）范围
GetViewportOrgEx | 获取设备场景视口起点
GetWindowDC | 获取整个窗口（包括边框、滚动条、标题栏、菜单等）的设备场景
GetWindowExtEx | 获取指定设备场景的窗口范围
GetWindowOrgEx | 获取指定设备场景的逻辑窗口的起点
GetWindowRgn | 获取窗口区域
GetWorldTransform | 如果有世界转换，为设备场景获取当前世界转换
IntersectClipRect | 为指定设备定义一个新的剪裁区
InvalidateRgn | 使窗口指定区域不活动，并将它加入窗口刷新区，使之可随后被重画
InvertRgn | 通过颠倒每个像素值反转设备场景指定区域
LPtoDP | 将点阵从指定设备场景逻辑坐标转换为设备坐标
ModifyWorldTransform | 根据指定的模式修改世界转换
OffsetClipRgn | 按指定量平移设备场景剪裁区
OffsetRgn | 按指定偏移量平移指定区域
OffsetViewportOrgEx | 平移设备场景视口区域


设备场景类4

设备场景函数，共五页。第一页 ， 第二页 ， 第三页 ，第四页， 第五页
OffsetWindowOrgEx | 平移指定设备场景窗口起点
PaintRgn | 用当前刷子背景色填充指定区域
PtInRegion | 确定点是否在指定区域内
PtVisible | 确定指定点是否可见（即，点是否在设备场景剪裁区内）
RectInRegion | 确定矩形是否有部分在指定区域内
RectVisible | 确定指定矩形是否有部分可见（是否在设备场景剪裁区内）
ReleaseDC | 释放由调用GetDC或GetWindowDC函数获取的指定设备场景
RestoreDC | 从设备场景堆栈恢复一个原先保存的设备场景
SaveDC | 将指定设备场景状态保存到Windows设备场景堆栈
ScaleViewportExtEx | 缩放设备场景视口的范围
ScaleWindowExtEx | 缩放指定设备场景窗口范围
ScrollDC | 在窗口（由设备场景代表）中水平和（或）垂直滚动矩形
SelectClipRgn | 为指定设备场景选择新的剪裁区
SetBoundsRect | 设置指定设备场景的边界矩形
SetGraphicsMode | 允许或禁止增强图形模式，以提供某些支持（包括世界转换）
SetMapMode | 设置指定设备场景的映射模式


设备场景类5

设备场景函数，共五页。第一页 ， 第二页 ， 第三页 ， 第四页 ，第五页
SetRectRgn | 设置区域为指定的矩形
SetViewportExtEx | 设置设备场景视口范围
SetViewportOrgEx | 设置设备场景视口起点
SetWindowExtEx | 设置指定设备场景窗口范围
SetWindowOrgEx | 设置指定设备场景窗口起点
SetWindowRgn | 设置窗口区域
SetWorldTransform | 设置世界转换
ValidateRgn | 激活窗口中指定区域，把它从刷新区移走
WindowFromDC | 取回与某一设备场景相关的窗口的句柄


进程与线程类1

进程与线程函数，共五页。第一页，第二页 ， 第三页 ， 第四页 ， 第五页
CancelWaitableTimer | 这个函数用于取消一个可以等待下去的计时器操作
CallNamedPipe | 这个函数由一个希望通过管道通信的一个客户进程调用
ConnectNamedPipe | 指示一台服务器等待下去，直至客户机同一个命名管道连接
CreateEvent | 创建一个事件对象
CreateMailslot | 创建一个邮路。返回的句柄由邮路服务器使用（收件人）
CreateMutex | 创建一个互斥体（MUTEX）
CreateNamedPipe | 创建一个命名管道。返回的句柄由管道的服务器端使用
CreatePipe | 创建一个匿名管道
CreateProcess | 创建一个新进程（比如执行一个程序）
CreateSemaphore | 创建一个新的信号机
CreateWaitableTimer | 创建一个可等待的计时器对象
DisconnectNamedPipe | 断开一个客户与一个命名管道的连接
DuplicateHandle | 在指出一个现有系统对象当前句柄的情况下，为那个对象创建一个新句柄
ExitProcess | 中止一个进程
FindCloseChangeNotification | 关闭一个改动通知对象
FindExecutable | 查找与一个指定文件关联在一起的程序的文件名


进程与线程类2

进程与线程函数，共五页。第一页 ，第二页， 第三页 ， 第四页 ， 第五页
FindFirstChangeNotification | 创建一个文件通知对象。该对象用于监视文件系统发生的变化
FindNextChangeNotification | 重设一个文件改变通知对象，令其继续监视下一次变化
FreeLibrary | 释放指定的动态链接库
GetCurrentProcess | 获取当前进程的一个伪句柄
GetCurrentProcessId | 获取当前进程一个唯一的标识符
GetCurrentThread | 获取当前线程的一个伪句柄
GetCurrentThreadId | 获取当前线程一个唯一的线程标识符
GetExitCodeProces | 获取一个已中断进程的退出代码
GetExitCodeThread | 获取一个已中止线程的退出代码
GetHandleInformation | 获取与一个系统对象句柄有关的信息
GetMailslotInfo | 获取与一个邮路有关的信息
GetModuleFileName | 获取一个已装载模板的完整路径名称
GetModuleHandle | 获取一个应用程序或动态链接库的模块句柄
GetNamedPipeHandleState | 获取一个命名管道当前的状态信息
GetNamedPipeInfo | 用于获取与一个命名管道有关的信息
GetPriorityClass | 获取一个进程当前的优先级类


进程与线程类3

进程与线程函数，共五页。第一页 ， 第二页 ，第三页， 第四页 ， 第五页
GetProcessShutdownParameters | 调查系统关闭时一个指定的进程相对于其它进程的关闭早迟情况
GetProcessTimes | 获取与一个进程的经过时间有关的信息
GetProcessWorkingSetSize | 了解一个应用程序在运行过程中实际向它交付了多大容量的内存（工作环境）
GetStartupInfo | 获取一个进程的启动信息
GetThreadPriority | 获取指定线程的优先级设置
GetThreadTimes | 获取与一个线程的经过时间（存在时间）有关的信息
GetWindowThreadProcessId | 获取与指定窗口关联在一起的一个线程和进程标识符
InterlockedDecrement | 递减一个长整数变量的值
InterlockedExchange | 设置一个长整数变量的值
InterlockedIncrement | 递增一个长整数变量的值
LoadLibrary | 载入指定的动态链接库，并将它映射到当前进程使用的地址空间
LoadLibraryEx | 装载指定的动态链接库，并为当前进程把它映射到地址空间
LoadModule | 载入一个Windows应用程序，并在指定的环境中执行
MsgWaitForMultipleObjects | 等侯单个对象或所有一系列对象发出信号。如返回条件已经满足，则立即返回
OpenEvent | 为一个现有的命名事件对象创建一个新句柄
OpenMutex | 为现有的一个已命名互斥体对象创建一个新句柄


进程与线程类4

进程与线程函数，共五页。第一页 ， 第二页 ， 第三页 ，第四页， 第五页
OpenProcess | 打开一个现有进程的句柄
OpenSemaphore | 为现有的一个已命名信号机对象创建一个新句柄
OpenWaitableTimer | 为现有的一个可等待计时器对象创建一个新句柄
PeekNamedPipe | 预览一个管道中的数据，或取得与管道中的数据有关的信息
PulseEvent | 将指定的事件设为发出信号状态
ReleaseMutex | 释放由线程拥有的一个互斥体
ReleaseSemaphore | 递增一个信号机计数
ResetEvent | 将指定的事件设为未发信号状态
ResumeThread | 恢复执行用SuspendThread挂起的一个线程
SetEvent | 将一个事件设为发出信号状态
SetHandleInformation | 允许我们设置特定的系统对象
SetMailslotInfo | 允许我们针对一个邮路中的读操作改变默认超时设定
SetNamedPipeHandleState | 设置与一个命名管道的运作有关的信息
SetPriorityClass | 设置一个进程的优先级类
SetProcessShutdownParameters | 在系统关闭期间，为指定进程设置它相对于系统中其它应用程序的关闭顺序
SetProcessWorkingSetSize | 设置操作系统实际划分给进程使用的内存容量


进程与线程类5

进程与线程函数，共五页。第一页 ， 第二页 ， 第三页 ， 第四页 ，第五页
SetThreadPriority | 为指定的线程设置优先级
SetWaitableTimer | 启动一个可等待计时器。将它设为未发信号状态
ShellExecute | 查找与指定文件关联在一起的程序的文件名
Sleep | 将一个线程的运作挂起指定的时间
SuspendThread | 将指定线程的执行挂起
TerminateProcess | 结束一个进程
TransactNamedPipe | 该函数在单独一个函数中同时合并了对管道的读、写操作。客户和服务器进程都可用它
WaitForInputIdle | 等候指定的进程进入空闲状态
WaitForMultipleObjects | 等候单个对象或所有一系列对象发出信号，或等候指定的超时时间过去（溢出）
WaitForSingleObject | 等候指定的对象发出信号，或等候指定的超时时间过去（溢出）
WaitNamedPipe | 由一个客户进程调用，等候一个管道变成可用状态
WinExec | 运行指定的程序


BroadcastSystemMessage
VB声明
Declare Function BroadcastSystemMessage Lib "user32" Alias "BroadcastSystemMessage" (ByVal dw As Long, pdw As Long, ByVal un As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
说明
将一条系统消息广播给系统中所有的顶级窗口
返回值
Long，大于零表示成功；-1表示出错。如设置了BSF_QUERY，而且至少有一个消息接收者返回零，那么这个函数返回零
参数表
参数 | 类型及说明
dw | Long，下述常数的一个或多个
 | BSF_FLUSHDISK | 每次处理完一条消息后，都对磁盘进行刷新（将未存盘的数据存下来
 | BSF_FORCEIFHUNG | 如目标处于挂起状态，则在设定的超时后到期返回
 | BSF_IGNORECURRENTTASK | 发送任务不接收消息
 | BSF_LPARAMBUFFER | lParam指向一个内存缓冲区
 | BSF_NOHANG | 跳过被挂起的所有进程
 | BSF_POSTMESSAGE | 投递消息。不与BSF_LPARAMBUFFER和BSF_QUERY兼容
 | BSF_QUERY | 将消息顺序发给进程，只有前一个返回TRUE时，才进入下一个进程
pdw | Long，下述常数的一个或多个
 | BSF_ALLCOMPONENTS | 消息进入能够接收消息的每一个系统组件
 | BSF_APPLICATIONS | 消息到达应用程序
 | BSF_INSTALLABLEDRIVERS | 消息到达可安装的驱动程序
 | BSF_NETDRIVERS | 消息到达网络驱动程序
 | BSF_VXDS | 消息到达系统设备驱动程序
un | Long，消息编号
wParam | Long，由消息决定
lParam | Long，由消息决定。如指定了BSF_LPARAMBUFFER，这就是位于调用进程地址空间的一个内存缓冲区的地址，而且缓冲区的第一个16位字包含了缓冲区的长度

Top


GetMessagePos
VB声明
Declare Function GetMessagePos Lib "user32" Alias "GetMessagePos" () As Long
说明
取得消息队列中上一条消息处理完毕时的鼠标指针屏幕位置
返回值
Long，X坐标对应于结果值的低字，Y坐标对应于高字


GetMessageTime
VB声明
Declare Function GetMessageTime Lib "user32" Alias "GetMessageTime" () As Long
说明
取得消息队列中上一条消息处理完毕时的时间
返回值
Long，返回一个时间，表示为自系统启动以来经历的毫秒数
原文：The time is specified in milliseconds from the time the system was started.


PostMessage

PostMessage, PostMessageBynum, PostMessageBystring
VB声明
Declare Function PostMessage& Lib "user32" Alias "PostMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) Declare Function PostMessageByNum& Lib "user32" Alias "PostMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As Long) Declare Function PostMessageByString& Lib "user32" Alias "PostMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As String)
说明
将一条消息投递到指定窗口的消息队列。投递的消息会在Windows事件处理过程中得到处理。在那个时候，会随同投递的消息调用指定窗口的窗口函数。特别适合那些不需要立即处理的窗口消息的发送
返回值
Long，如消息投递成功，则返回TRUE（非零）。会设置GetLastError
参数表
参数 | 类型及说明
hwnd | Long，接收消息的那个窗口的句柄。如设为HWND_BROADCAST，表示投递给系统中的所有顶级窗口。如设为零，表示投递一条线程消息（参考PostThreadMessage）
wMsg | Long，消息标识符
wParam | Long，具体由消息决定
lParam | Any，具体由消息决定


PostThreadMessage
VB声明
Declare Function PostThreadMessage Lib "user32" Alias "PostThreadMessageA" (ByVal idThread As Long, ByVal msg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
说明
将一条消息投递给应用程序。这条消息由应用程序的内部GetMessage循环获得，但不会传给一个特定的窗口
返回值
Long，如消息投递成功，则返回TRUE（非零）。会设置GetLastError
参数表
参数 | 类型及说明
idThread | Long，用于接收消息的那个线程的标识符
msg | Long，消息标识符
wParam | Long，具体由消息决定
ByVal | Long，具体由消息决定


RegisterWindowMessage
VB声明
Declare Function RegisterWindowMessage Lib "user32" Alias "RegisterWindowMessageA" (ByVal lpString As String) As Long
说明
获取分配给一个字串标识符的消息编号
返回值
Long，&C000 到 &FFFF之间的一个消息编号。零意味着出错
参数表
参数 | 类型及说明
lpString | String，注册消息的名字
注解
如果没有一个子类处理程序的帮助，这个函数就没有什么用


ReplyMessage
VB声明
Declare Function ReplyMessage Lib "user32" Alias "ReplyMessage" (ByVal lReply As Long) As Long
说明
如将消息传送给位于不同进程的一个窗口，通常第一个进程会暂时挂起，直到另一个进程中的窗口函数完成操作为止。在目标进程的窗口函数完成之前，另一个进程可用这个函数向第一个进程返回一个结果，使之能继续进行
返回值
Long，如准备答复的消息是由另一个进程发来的，则返回TRUE。如果它是从同一个进程中发出来的，则返回FALSE（此时，该函数没有任何效果）
参数表
参数 | 类型及说明
lReply | Long，指定发回调用进程的一个结果


SendMessage

SendMessage, SendMessageBynum, SendMessageByString
VB声明
Declare Function SendMessage& Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) Declare Function SendMessageBynum& Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As Long) Declare Function SendMessageByString& Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As String)
说明
调用一个窗口的窗口函数，将一条消息发给那个窗口。除非消息处理完毕，否则该函数不会返回。SendMessageBynum， SendMessageByString是该函数的“类型安全”声明形式
返回值
Long，由具体的消息决定
参数表
参数 | 类型及说明
hwnd | Long，要接收消息的那个窗口的句柄
wMsg | Long，消息的标识符
wParam | Long，具体取决于消息
lParam | Any，具体取决于消息


SendMessageCallback
VB声明
Declare Function SendMessageCallback Lib "user32" Alias "SendMessageCallbackA" (ByVal hwnd As Long, ByVal msg As Long, ByVal wParam As Long, ByVal lParam As Long, ByVal lpResultCallBack As Long, ByVal dwData As Long) As Long
说明
将一条消息发给窗口。该函数最大的特定是可以立即返回。目标窗口函数执行完毕后，会用回调函数的形式将结果返回
返回值
Long，TRUE表示成功，FALSE表示失败。会设置GetLastError
参数表
参数 | 类型及说明
hwnd | Long，要接收消息的那个窗口的句柄
msg | Long，消息的标识符
wParam | Long，取决于消息
lParam | Long，取决于消息
lpResultCallBack | Long，指定函数地址。在vb5中可用AddressOf操作符获得
dwData | Long，用户自定义值
注解
回调函数声明如下： Public Function WndProc(ByVal hwnd&, ByVal msg&, ByVal wp&, ByVal lp&) As Long 其中，wp参数是作为dwData参数传递的值。lp参数包含了来自窗口函数的结果


SendMessageTimeout
VB声明
Declare Function SendMessageTimeout Lib "user32" Alias "SendMessageTimeoutA" (ByVal hwnd As Long, ByVal msg As Long, ByVal wParam As Long, ByVal lParam As Long, ByVal fuFlags As Long, ByVal uTimeout As Long, lpdwResult As Long) As Long
说明
向窗口发送一条消息。如窗口位于不同的线程中，则利用这个函数可以指定一个超时值，以便在另一个进程挂起的时候防止调用进程也永远挂起
返回值
Long，成功时返回TRUE，失败时返回FALSE。会设置GetLastError
参数表
参数 | 类型及说明
hwnd | Long，要接收消息的一个窗口的句柄
msg | Long，消息的标识符
wParam | Long，由消息决定
lParam | Long，由消息决定
fuFlags | Long，下述常数的一个或多个
 | SMTO_ABORTIFHUNG | 如目标进程挂起，则函数立即返回
 | SMTO_BLOCK | 除非函数返回，否则调用线程不能处理消息
 | SMTO_NORMAL | 允许调用线程处理消息，同时保持函数继续执行
uTimeout | Long，超时值，采用毫秒为单位
lpdwResult | Long，用于装载函数结果的一个变量

Top


SendNotifyMessage
VB声明
Declare Function SendNotifyMessage Lib "user32" Alias "SendNotifyMessageA" (ByVal hwnd As Long, ByVal msg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
说明
向窗口发送一条消息。如目标窗口位于同调用方相同的线程内，则这个函数会表现为SendMessage函数。而且除非消息得到处理，否则函数不会返回。如目标窗口从属于一个不同的线程，则函数会立即返回
返回值
Long，TRUE表示成功，FALSE表示出错。会设置GetLastError
参数表
参数 | 类型及说明
hwnd | Long，用于接收消息的一个窗口的句柄
msg | Long，消息的标识符
wParam | Long，具体由消息决定
lParam | Long，具体由消息决定


CloseHandle
VB声明
Declare Function CloseHandle Lib "kernel32" Alias "CloseHandle" (ByVal hObject As Long) As Long
说明
关闭一个内核对象。其中包括文件、文件映射、进程、线程、安全和同步对象等。涉及文件处理时，这个函数通常与vb的close命令相似。应尽可能的使用close，因为它支持vb的差错控制。注意这个函数使用的文件句柄与vb的文件编号是完全不同的
返回值
Long，非零表示成功，零表示失败。会设置GetLastError
参数表
参数 | 类型及说明
hObject | Long，欲关闭的一个对象的句柄
注解
除非对内核对象的所有引用都已关闭，否则该对象不会实际删除


CompareFileTime
VB声明
Declare Function CompareFileTime Lib "kernel32" Alias "CompareFileTime" (lpFileTime1 As FILETIME, lpFileTime2 As FILETIME) As Long
说明
根据FILETIME结构的信息，对比两个文件的时间
返回值
Long，如两个时间相等，就返回零；如lpFileTime1小于lpFileTime2，返回-1；如lpFileTime2小于lpFileTime1，返回1
参数表
参数 | 类型及说明
lpFileTime1 | FILETIME，参考FILETIME
lpFileTime2


CopyFile
VB声明
Declare Function CopyFile Lib "kernel32" Alias "CopyFileA" (ByVal lpExistingFileName As String, ByVal lpNewFileName As String, ByVal bFailIfExists As Long) As Long
说明
复制文件。与vb的filecopy命令相似
返回值
Long，非零表示成功，零表示失败。会设置GetLastError
参数表
参数 | 类型及说明
lpExistingFileName | String，源文件名
lpNewFileName | String，目标文件名
bFailIfExists | Long，如果设为TRUE（非零），那么一旦目标文件已经存在，则函数调用会失败。否则目标文件被改写


CreateDirectory

CreateDirectory, CreateDirectoryEx
VB声明
Declare Function CreateDirectory& Lib "kernel32" Alias "CreateDirectoryA" (ByVal lpNewDirectory As String, lpSecurityAttributes As SECURITY_ATTRIBUTES) Declare Function CreateDirectoryEx& Lib "kernel32" Alias "CreateDirectoryExA" (ByVal lpTemplateDirectory As String, ByVal lpNewDirectory As String, lpSecurityAttributes As SECURITY_ATTRIBUTES)
说明
创建一个新目录
返回值
Long，非零表示成功，零表示失败。会设置GetLastError
参数表
参数 | 类型及说明
lpTemplateDirectory | String，指定一个模板目录的名字，从中复制默认属性（比如目录中文件的默认压缩方式）。如设为vbNullString，则表示不使用模板
lpNewDirectory | String，新目录的名字
lpSecurityAttributes | SECURITY_ATTRIBUTES，这个结构定义了目录的安全特性——如果操作系统支持的话


CreateFile
VB声明
Declare Function CreateFile Lib "kernel32" Alias "CreateFileA" (ByVal lpFileName As String, ByVal dwDesiredAccess As Long, ByVal dwShareMode As Long, lpSecurityAttributes As SECURITY_ATTRIBUTES, ByVal dwCreationDisposition As Long, ByVal dwFlagsAndAttributes As Long, ByVal hTemplateFile As Long) As Long
说明
这是一个全功能的例程，可打开和创建文件、管道、邮槽、通信服务、设备以及控制台
返回值
Long，如执行成功，则返回文件句柄。INVALID_HANDLE_VALUE表示出错，会设置GetLastError。即使函数成功，但若文件存在，且指定了CREATE_ALWAYS 或 OPEN_ALWAYS，GetLastError也会设为ERROR_ALREADY_EXISTS
参数表
参数 | 类型及说明
lpFileName | String，要打开的文件的名字
dwDesiredAccess | Long，如果为 GENERIC_READ 表示允许对设备进行读访问；如果为 GENERIC_WRITE 表示允许对设备进行写访问（可组合使用）；如果为零，表示只允许获取与一个设备有关的信息
dwShareMode | Long，零表示不共享； FILE_SHARE_READ 和/或 FILE_SHARE_WRITE 表示允许对文件进行共享访问
lpSecurityAttributes | SECURITY_ATTRIBUTES，指向一个SECURITY_ATTRIBUTES结构的指针，定义了文件的安全特性（如果操作系统支持的话）
dwCreationDisposition | Long，下述常数之一：
 | CREATE_NEW | 创建文件；如文件存在则会出错
 | CREATE_ALWAYS | 创建文件，会改写前一个文件
 | OPEN_EXISTING | 文件必须已经存在。由设备提出要求
 | OPEN_ALWAYS | 如文件不存在则创建它
 | TRUNCATE_EXISTING | 讲现有文件缩短为零长度
dwFlagsAndAttributes | Long，一个或多个下述常数
 | FILE_ATTRIBUTE_ARCHIVE | 标记归档属性
 | FILE_ATTRIBUTE_COMPRESSED | 将文件标记为已压缩，或者标记为文件在目录中的默认压缩方式
 | FILE_ATTRIBUTE_NORMAL | 默认属性
 | FILE_ATTRIBUTE_HIDDEN | 隐藏文件或目录
 | FILE_ATTRIBUTE_READONLY | 文件为只读
 | FILE_ATTRIBUTE_SYSTEM | 文件为系统文件
 | FILE_FLAG_WRITE_THROUGH | 操作系统不得推迟对文件的写操作
 | FILE_FLAG_OVERLAPPED | 允许对文件进行重叠操作
 | FILE_FLAG_NO_BUFFERING | 禁止对文件进行缓冲处理。文件只能写入磁盘卷的扇区块
 | FILE_FLAG_RANDOM_ACCESS | 针对随机访问对文件缓冲进行优化
 | FILE_FLAG_SEQUENTIAL_SCAN | 针对连续访问对文件缓冲进行优化
 | FILE_FLAG_DELETE_ON_CLOSE | 关闭了上一次打开的句柄后，将文件删除。特别适合临时文件
 | 也可在Windows NT下组合使用下述常数标记：
 | SECURITY_ANONYMOUS， SECURITY_IDENTIFICATION， SECURITY_IMPERSONATION， SECURITY_DELEGATION， SECURITY_CONTEXT_TRACKING， SECURITY_EFFECTIVE_ONLY
hTemplateFile | Long，如果不为零，则指定一个文件句柄。新文件将从这个文件中复制扩展属性
注解
打开一个通信端口时（如COM1），无论如何都要设置成 OPEN_EXISTING 这个函数代替了lOpen 和 lCreate函数，应该是我们的首选

Top


CreateFileMapping
VB声明
Declare Function CreateFileMapping Lib "kernel32" Alias "CreateFileMappingA" (ByVal hFile As Long, lpFileMappigAttributes As SECURITY_ATTRIBUTES, ByVal flProtect As Long, ByVal dwMaximumSizeHigh As Long, ByVal dwMaximumSizeLow As Long, ByVal lpName As String) As Long
说明
创建一个新的文件映射对象
返回值
Long，新建文件映射对象的句柄；零意味着出错。会设置GetLastError。即使函数成功，但倘若返回的句柄属于一个现成的文件映射对象，那么GetLastError也会设置成ERROR_ALREADY_EXISTS。在这种情况下，文件映射的长度就是现有对象的长度，而不是这个函数指定的尺寸
参数表
参数 | 类型及说明
hFile | Long，指定欲在其中创建映射的一个文件句柄。&HFFFFFFFF&表示在内存中创建一个文件映射
lpFileMappigAttributes | SECURITY_ATTRIBUTES，指定一个安全对象，在创建文件映射时使用。如果为NULL（用ByVal As Long传递零），表示使用默认安全对象
flProtect | Long，下述常数之一：
 | PAGE_READONLY | 以只读方式打开映射
 | PAGE_READWRITE | 以可读、可写方式打开映射
 | PAGE_WRITECOPY | 为写操作留下备份
 | 可组合使用下述一个或多个常数
 | SEC_COMMIT | 为文件映射一个小节中的所有页分配内存
 | SEC_IMAGE | 文件是个可执行文件
 | SEC_RESERVE | 为没有分配实际内存的一个小节保留虚拟内存空间
dwMaximumSizeHigh | Long，文件映射的最大长度（高32位）
dwMaximumSizeLow | Long，文件映射的最小长度（低32位）。如这个参数和dwMaximumSizeHigh都是零，就用磁盘文件的实际长度
lpName | String，指定文件映射对象的名字。如存在这个名字的一个映射，函数就会打开它。用vbNullString创建一个无名的文件映射

Top


DeleteFile
VB声明
Declare Function DeleteFile Lib "kernel32" Alias "DeleteFileA" (ByVal lpFileName As String) As Long
说明
删除指定文件
返回值
Long，非零表示成功，零表示失败。会设置GetLastError
参数表
参数 | 类型及说明
lpFileName | String，欲删除文件的名字
注解
与vb的kill语句相似，在windows 95下使用这个函数要小心——即使文件当前正由一个应用程序打开，该函数也会将其删除


DeviceIoControl
VB声明
Declare Function DeviceIoControl Lib "kernel32" Alias "DeviceIoControl" (ByVal hDevice As Long, ByVal dwIoControlCode As Long, lpInBuffer As Any, ByVal nInBufferSize As Long, lpOutBuffer As Any, ByVal nOutBufferSize As Long, lpBytesReturned As Long, lpOverlapped As OVERLAPPED) As Long
说明
对设备执行指定的操作
返回值
Long，非零表示成功，零表示失败。会设置GetLastError
参数表
参数 | 类型及说明
hDevice | Long，设备句柄
dwIoControlCode | Long，带有 FSCTL_ 前缀的常数。参考设备控制选项的部分列表
lpInBuffer | Any，具体取决于dwIoControlCode参数。参考设备控制选项的部分列表
nInBufferSize | Long，输入缓冲区的长度
lpOutBuffer | Any，具体取决于dwIoControlCode参数。参考设备控制选项的部分列表
nOutBufferSize | Long，输出缓冲区的长度
lpBytesReturned | Long，实际装载到输出缓冲区的字节数量
lpOverlapped | OVERLAPPED，这个结构用于重叠操作。针对同步操作，请用ByVal As Long传递零值
注解
可用于windows 95 和 windows nt，但并非所有的操作都得到了两种操作系统的同时支持

Top


DosDateTimeToFileTime
VB声明
Declare Function DosDateTimeToFileTime Lib "kernel32" Alias "DosDateTimeToFileTime" (ByVal wFatDate As Long, ByVal wFatTime As Long, lpFileTime As FILETIME) As Long
说明
将DOS日期和时间值转换成一个 win32 FILETIME 值
返回值
Long，非零表示成功，零表示失败。会设置GetLastError
参数表
参数 | 类型及说明
wFatDate | Long，16位DOS日期值
wFatTime | Long，16位DOS时间值
lpFileTime | FILETIME，用于装载win32时间的一个结构


FileTimeToDosDateTime
VB声明
Declare Function FileTimeToDosDateTime Lib "kernel32" Alias "FileTimeToDosDateTime" (lpFileTime As FILETIME, ByVal lpFatDate As Long, ByVal lpFatTime As Long) As Long
说明
将一个 win32 FILETIME 值转换成DOS日期和时间值
返回值
Long，非零表示成功，零表示失败。会设置GetLastError
参数表
参数 | 类型及说明
lpFileTime | FILETIME，包含了欲转换时间的一个结构
lpFatDate | Long，16位DOS日期值
lpFatTime | Long，16位DOS时间值


FileTimeToLocalFileTime
VB声明
Declare Function FileTimeToLocalFileTime Lib "kernel32" Alias "FileTimeToLocalFileTime" (lpFileTime As FILETIME, lpLocalFileTime As FILETIME) As Long
说明
将一个FILETIME结构转换成本地时间
返回值
Long，非零表示成功，零表示失败。会设置GetLastError
参数表
参数 | 类型及说明
lpFileTime | FILETIME，包含了UTC时间信息的一个结构
lpLocalFileTime | FILETIME，用于装载转换过后的本地时间的结构


FileTimeToSystemTime
VB声明
Declare Function FileTimeToSystemTime Lib "kernel32" Alias "FileTimeToSystemTime" (lpFileTime As FILETIME, lpSystemTime As SYSTEMTIME) As Long
说明
根据一个FILETIME结构的内容，装载一个SYSTEMTIME结构
返回值
Long，非零表示成功，零表示失败。会设置GetLastError
参数表
参数 | 类型及说明
lpFileTime | FILETIME，包含了文件时间的一个结构
lpSystemTime | SYSTEMTIME，用于装载系统时间信息的一个结构


FindClose
VB声明
Declare Function FindClose Lib "kernel32" Alias "FindClose" (ByVal hFindFile As Long) As Long
说明
关闭由FindFirstFile函数创建的一个搜索句柄
返回值
Long，非零表示成功，零表示失败。会设置GetLastError
参数表
参数 | 类型及说明
hFindFile | Long，由FindFirstFile函数提供的搜索句柄


FindFirstFile
VB声明
Declare Function FindFirstFile Lib "kernel32" Alias "FindFirstFileA" (ByVal lpFileName As String, lpFindFileData As WIN32_FIND_DATA) As Long
说明
根据文件名查找文件
返回值
Long，如执行成功，返回一个搜索句柄。如果出错，返回一个INVALID_HANDLE_VALUE常数，一旦不再需要，应该用FindClose函数关闭这个句柄
参数表
参数 | 类型及说明
lpFileName | String，欲搜索的文件名。可包含通配符，并可包含一个路径或相对路径名
lpFindFileData | WIN32_FIND_DATA，这个结构用于装载与找到的文件有关的信息。该结构可用于后续的搜索
注解
由这个函数返回的句柄可以作为一个参数用于FindNextFile函数。这样一来，就可以方便的枚举出与lpFileName参数指定的文件名相符的所有文件


FindNextFile
VB声明
Declare Function FindNextFile Lib "kernel32" Alias "FindNextFileA" (ByVal hFindFile As Long, lpFindFileData As WIN32_FIND_DATA) As Long
说明
根据调用FindFirstFile函数时指定的一个文件名查找下一个文件
返回值
Long，非零表示成功，零表示失败。如不再有与指定条件相符的文件，会将GetLastError设置成ERROR_NO_MORE_FILES
参数表
参数 | 类型及说明
hFindFile | Long，由FindFirstFile函数返回的搜索句柄
lpFindFileData | WIN32_FIND_DATA，这个结构用于装载与找到的文件有关的信息


FlushFileBuffers
VB声明
Declare Function FlushFileBuffers Lib "kernel32" Alias "FlushFileBuffers" (ByVal hFile As Long) As Long
说明
针对指定的文件句柄，刷新内部文件缓冲区
返回值
Long，非零表示成功，零表示失败。会设置GetLastError
参数表
参数 | 类型及说明
hFile | Long，文件句柄


FlushViewOfFile
VB声明
Declare Function FlushViewOfFile Lib "kernel32" Alias "FlushViewOfFile" (lpBaseAddress As Any, ByVal dwNumberOfBytesToFlush As Long) As Long
说明
将写入文件映射缓冲区的所有数据都刷新到磁盘
返回值
Long，非零表示成功，零表示失败。会设置GetLastError
参数表
参数 | 类型及说明
lpBaseAddress | Any，包含了刷新基本地址的一个Long值（参考注解）
dwNumberOfBytesToFlush | Long，欲刷新的字节数
注解
如与远程系统建立了文件映射，那么虽然这个函数可保证数据已在当前系统写入，但不能保证数据实际写入远程系统的磁盘——除非用FILE_FLAG_WRITE_THROUGH 选项打开文件。该选项的作用是禁止写延迟，所有更新的数据都必须立即写入磁盘 这个函数的另一种声明形式：Declare Function FlushViewOfFile& Lib "kernel32" (ByVal lpBaseAddress As Long, ByVal dwNumberOfBytesToFlush As Long)


GetBinaryType
VB声明
Declare Function GetBinaryType Lib "kernel32" Alias "GetBinaryTypeA" (ByVal lpApplicationName As String, lpBinaryType As Long) As Long
说明
判断文件是否可以执行
返回值
Long，非零表示成功，零表示失败
参数表
参数 | 类型及说明
lpApplicationName | String，欲测试文件的完整路径名
lpBinaryType | Long，用于装载文件类型的一个变量。这些类型由下述任何一个常数定义：
 | SCS_32BIT_BINARY | win32执行程序
 | SCS_DOS_BINARY | DOS执行程序
 | SCS_OS216_BINARY | 16位OS/2执行程序
 | SCS_PIF_BINARY | 用于执行DOS程序的一个pif文件
 | SCS_POSIX_BINARY | 一个Posix应用
 | SCS_WOW_BINARY | 16位windows执行程序


GetCompressedFileSize
VB声明
Declare Function GetCompressedFileSize Lib "kernel32" Alias "GetCompressedFileSizeA" (ByVal lpFileName As String, lpFileSizeHigh As Long) As Long
说明
判断一个压缩文件在磁盘上实际占据的字节数
返回值
Long，返回文件长度。&HFFFFFFFF表示出错。注意如lpFileSizeHigh不为NULL，且结果为&HFFFFFFFF，那么必须调用GetLastError，判断是否实际发生了一个错误，因为这是一个有效的结果
参数表
参数 | 类型及说明
lpFileName | String，欲测试的文件名
lpFileSizeHigh | Long，指定一个Long值，用于装载一个64位文件尺寸的高32位。如长度没有超过2＾32字节，则可设为NULL（变成ByVal）
注解
如磁盘卷已被压缩，可检查这个函数的结果是否与GetFileSize函数的结果有异，从而判断文件是否也被压缩（如有异，表明文件已被压缩）


GetCurrentDirectory
VB声明
Declare Function GetCurrentDirectory Lib "kernel32" Alias "GetCurrentDirectory" (ByVal nBufferLength As Long, ByVal lpBuffer As String) As Long
说明
在一个缓冲区中装载当前目录
返回值
Long，装载到lpBuffer的字节数。如nBufferLength的长度不够，不足以容纳目录，则返回值是必要的缓冲区长度（要求至少这个长度），其中包括空中止字符。零表示失败。会设置GetLastError
参数表
参数 | 类型及说明
nBufferLength | Long，lpBuffer缓冲区的长度
lpBuffer | String，指定一个预定义字串，用于装载当前目录


GetDiskFreeSpace
VB声明
Declare Function GetDiskFreeSpace Lib "kernel32" Alias "GetDiskFreeSpaceA" (ByVal lpRootPathName As String, lpSectorsPerCluster As Long, lpBytesPerSector As Long, lpNumberOfFreeClusters As Long, lpTtoalNumberOfClusters As Long) As Long
说明
获取与一个磁盘的组织有关的信息，以及了解剩余空间的容量
返回值
Long，非零表示成功，零表示失败。会设置GetLastError
参数表
参数 | 类型及说明
lpRootPathName | String，不包括卷名的一个磁盘根路径
lpSectorsPerCluster | Long，用于装载一个簇内扇区数的变量
lpBytesPerSector | Long，用于装载一个扇区内字节数的变量
lpNumberOfFreeClusters | Long，用于装载磁盘上剩余簇数的变量
lpTtoalNumberOfClusters | Long，用于装载磁盘上总簇数的变量
注解
在采用FAT16格式的windows95系统中，如一个驱动器（分区）的容量超过了2GB，则不应使用这个函数。此时，这个函数能识别的最大分区容量只有2GB


GetDiskFreeSpaceEx
VB声明
Declare Function GetDiskFreeSpaceEx Lib "kernel32" Alias "GetDiskFreeSpaceExA" (ByVal lpRootPathName As String, lpFreeBytesAvailableToCaller As LARGE_INTEGER, lpTotalNumberOfBytes As LARGE_INTEGER, lpTotalNumberOfFreeBytes As LARGE_INTEGER) As Long
说明
获取与一个磁盘的组织以及剩余空间容量有关的信息
返回值
Long，非零表示成功，零表示失败。会设置GetLastError
参数表
参数 | 类型及说明
lpRootPathName | String，不包括卷名的磁盘根路径名
lpFreeBytesAvailableToCaller | LARGE_INTEGER，指定一个变量，用于容纳调用者可用的字节数量
lpTotalNumberOfBytes | LARGE_INTEGER，指定一个变量，用于容纳磁盘上的总字节数
lpTotalNumberOfFreeBytes | LARGE_INTEGER，指定一个变量，用于容纳磁盘上可用的字节数
适用平台
Windows 95 OSR2，Windows NT 4.0
注解
LARGE_INTEGER结构与FILETIME结构在内部完全一致。正式调用前，用GetVersionEx判断函数是否得到了支持。在Windows 95 OSR2环境中，OSVERSIONINFO结构的dwBuildNumbe字段会大于1000

Top


GetDriveType
VB声明
Declare Function GetDriveType Lib "kernel32" Alias "GetDriveTypeA" (ByVal nDrive As String) As Long
说明
判断一个磁盘驱动器的类型
返回值
Long，如驱动器不能识别，则返回零。如指定的目录不存在，则返回1。如执行成功，则用下述任何一个常数指定驱动器类型：DRIVE_REMOVABLE， DRIVE_FIXED， DRIVE_REMOTE， DRIVE_CDROM 或 DRIVE_RAMDISK
参数表
参数 | 类型及说明
nDrive | String，包含了驱动器根目录路径的一个字串


GetExpandedName
VB声明
Declare Function GetExpandedName Lib "lz32.dll" Alias "GetExpandedNameA" (ByVal lpszSource As String, ByVal lpszBuffer As String) As Long
说明
取得一个压缩文件的全名。文件必须是用 COMPRESS.EXE 程序压缩的，而且在压缩时适用/r选项
返回值
Long，1表示成功，LZERROR_BADVALUE 表示失败
参数表
参数 | 类型及说明
lpszSource | String，压缩文件的名字
lpszBuffer | String，指定一个缓冲区，用于装载文件全名
注解
注意事先将lpszBuffer字串初始化成一个合适的长度，使其足以容纳文件名


GetFileAttributes
VB声明
Declare Function GetFileAttributes Lib "kernel32" Alias "GetFileAttributesA" (ByVal lpFileName As String) As Long
说明
判断指定文件的属性
返回值
Long，-1表示出错。如返回包含了标志的一个Long值，则指定文件的属性。其中的标志对应于带有FILE_ATTRIBUTE_???前缀的常数。具体参考BY_HANDLE_FILE_INFORMATION结构的File Attribute Types table表格
参数表
参数 | 类型及说明
lpFileName | String，指定欲获取属性的一个文件的名字


GetFileInformationByHandle
VB声明
Declare Function GetFileInformationByHandle Lib "kernel32" Alias "GetFileInformationByHandle" (ByVal hFile As Long, lpFileInformation As BY_HANDLE_FILE_INFORMATION) As Long
说明
这个函数提供了获取文件信息的一种机制——在一个BY_HANDLE_FILE_INFORMATION结构中装载与文件有关的信息
返回值
Long，非零表示成功，零表示失败。会设置GetLastError
参数表
参数 | 类型及说明
hFile | Long，文件的句柄
lpFileInformation | BY_HANDLE_FILE_INFORMATION，用于容纳文件信息的结构


GetFileSize
VB声明
Declare Function GetFileSize Lib "kernel32" Alias "GetFileSize" (ByVal hFile As Long, lpFileSizeHigh As Long) As Long
说明
判断文件长度
返回值
Long，返回文件长度。&HFFFFFFFF表示出错。注意如lpFileSizeHigh不为NULL，且结果为&HFFFFFFFF，那么必须调用GetLastError，判断是否实际发生了一个错误，因为这是一个有效的结果
参数表
参数 | 类型及说明
hFile | Long，文件的句柄
lpFileSizeHigh | Long，指定一个长整数，用于装载一个64位文件长度的头32位。如这个长度没有超过2＾32字节，则该参数可以设为NULL（变成ByVal）


GetFileTime
VB声明
Declare Function GetFileTime Lib "kernel32" Alias "GetFileTime" (ByVal hFile As Long, lpCreationTime As FILETIME, lpLastAccessTime As FILETIME, lpLastWriteTime As FILETIME) As Long
说明
取得指定文件的时间信息
返回值
Long，非零表示成功，零表示失败。会设置GetLastError
参数表
参数 | 类型及说明
hFile | Long，文件的句柄
lpCreationTime | FILETIME，用于装载文件的创建时间
lpLastAccessTime | FILETIME，用于装载文件上一次访问的时间（FAT文件系统不支持这一特性）
lpLastWriteTime | FILETIME，用于装载文件上一次修改的时间
注解
如果不需要特定的信息，那么lpCreationTime，lpLastAccessTime，lpLastWriteTime都可以设置为零（用ByVal As Long）。这个函数返回的文件时间采用UTC格式


GetFileType
VB声明
Declare Function GetFileType Lib "kernel32" Alias "GetFileType" (ByVal hFile As Long) As Long
说明
在给出文件句柄的前提下，判断文件类型
返回值
Long，下述常数之一：
FILE_TYPE_UNKNOWN | 文件类型未知
FILE_TYPE_DISK | 属于磁盘文件
FILE_TYPE_CHAR | 文件是一个控制台或打印机
FILE_TYPE_PIPE | 文件是个管道
参数表
参数 | 类型及说明
hFile | Long，要检查的文件的句柄


GetFileVersionInfo
VB声明
Declare Function GetFileVersionInfo& Lib "version.dll" Alias "GetFileVersionInfoA" (ByVal lptstrFilename As String, ByVal dwHandle As Long, ByVal dwLen As Long, lpData As Byte)
说明
从支持版本标记的一个模块里获取文件版本信息
返回值
Long，非零表示成功，零表示失败。会设置GetLastError
参数表
参数 | 类型及说明
lptstrFilename | String，欲从中载入版本信息的一个文件的名字
dwHandle | Long，win32中未用
dwLen | Long，由lpData参数指定的字节数组或缓冲区的大小。用GetFileVersionInfoSize函数判断要求的缓冲区长度有多大
lpData | Byte，指定一个字节缓冲区的第一个字节。该缓冲区用于装载文件的版本信息
注解
在win32下不用dwHandle参数
其他
请看vb的api文本查看器中的声明：Declare Function GetFileVersionInfo Lib "version.dll" Alias "GetFileVersionInfoA" (ByVal lptstrFilename As String, ByVal dwHandle As Long, ByVal dwLen As Long, lpData As Any) As Long

Top


GetFileVersionInfoSize
VB声明
Declare Function GetFileVersionInfoSize Lib "version.dll" Alias "GetFileVersionInfoSizeA" (ByVal lptstrFilename As String, lpdwHandle As Long) As Long
说明
针对包含了版本资源的一个文件，判断容纳文件版本信息需要一个多大的缓冲区
返回值
Long，容纳文件的版本资源所需的缓冲区长度。如文件不包含版本信息，则返回一个0值。会设置GetLastError
参数表
参数 | 类型及说明
lptstrFilename | String，包含了版本资源的一个文件的名字
lpdwHandle | Long，在这个变量中载入0值
注解
lpdwHandle参数在win32中已经放弃


GetFullPathName
VB声明
Declare Function GetFullPathName& Lib "kernel32" Alias "GetFullPathNameA" (ByVal lpFileName As String, ByVal nBufferLength As Long, ByVal lpBuffer As String, lpFilePart As Long)
说明
获取指定文件的完整路径名
返回值
Long，装载到lpBuffer中的字符数量（排除空中止字符）。如缓冲区的长度不足以容下完整的路径，则返回值就是要求的缓冲区大小。零表示失败。会设置GetLastError
参数表
参数 | 类型及说明
lpFileName | String，指定文件名（长文件名或8.3格式的DOS文件名）
nBufferLength | Long，lpBuffer字串的长度
lpBuffer | String，指定一个预先定义好的字串，用于装载目标文件的驱动器及路径名称。如存在长文件名，那么这个参数保存的就肯定是长文件名
lpFilePart | Long，指定一个长整数变量，用于装载文件名起始的地方。参考注解
注解
lpFilePart参数在vb里很难使用。它的问题在于：尽管windows在这个Long值中装载lpBuffer字串中的地址，用它表示路径信息文件名部分的起始处。但非常不幸，由vb创建的、传递给api的ANSI字串缓冲区也会使用这个地址。等这个函数返回的时候，vb已将返回的（lpBuffer）字串复制回它的内部Unicode字串缓冲区，所以lpFilePart地址已没有任何意义。因此，我们面临两种选择。首先，可以简单的不使用lpFilePart信息（忽略windows装载在参数中的值）。其次，可以将lpBuffer参数变成一个字节数组（lpFilePart As Byte——将数组的第一个元素作为参数传递）
其他
在vb的api文本查看器中复制的声明为：Declare Function GetFullPathName Lib "kernel32" Alias "GetFullPathNameA" (ByVal lpFileName As String, ByVal nBufferLength As Long, ByVal lpBuffer As String, ByVal lpFilePart As String) As Long

Top


GetLogicalDrives
VB声明
Declare Function GetLogicalDrives Lib "kernel32" Alias "GetLogicalDrives" () As Long
说明
判断系统中存在哪些逻辑驱动器字母
返回值
Long，这个结构中的二进制位标志着存在哪些驱动器。其中，位0设为1表示驱动器A:存在于系统中；位1设为1表示存在B:驱动器；以次类推


GetLogicalDriveStrings
VB声明
Declare Function GetLogicalDriveStrings Lib "kernel32" Alias "GetLogicalDriveStringsA" (ByVal nBufferLength As Long, ByVal lpBuffer As String) As Long
说明
获取一个字串，其中包含了当前所有逻辑驱动器的根驱动器路径
返回值
Long，装载到lpBuffer的字符数量（排除空中止字符）。如缓冲区的长度不够，不能容下路径，则返回值就变成要求的缓冲区大小。零表示失败。会设置GetLastError
参数表
参数 | 类型及说明
nBufferLength | Long，lpBuffer字串的长度
lpBuffer | String，用于装载逻辑驱动器名称的字串。每个名字都用一个NULL字符分隔，在最后一个名字后面用两个NULL表示中止（空中止）


GetOverlappedResult
VB声明
Declare Function GetOverlappedResult Lib "kernel32" Alias "GetOverlappedResult" (ByVal hFile As Long, lpOverlapped As OVERLAPPED, lpNumberOfBytesTransferred As Long, ByVal bWait As Long) As Long
说明
判断一个重叠操作当前的状态
返回值
Long，非零表示成功，零表示失败。会设置GetLastError。如bWait为FALSE，而且异步操作仍在执行，则函数回返回零，而GetLastError会设置成ERROR_IO_INCOMPLETE
参数表
参数 | 类型及说明
hFile | Long，指定一个文件、管道或通信设备的句柄
lpOverlapped | OVERLAPPED，为欲检查的I/O操作指定的一个结构
lpNumberOfBytesTransferred | Long，用于容纳传输字节数量的一个变量
bWait | Long，如果为TRUE，就一直等到异步操作结束才返回。FALSE表示立即返回


GetPrivateProfileInt
VB声明
Declare Function GetPrivateProfileInt Lib "kernel32" Alias "GetPrivateProfileIntA" (ByVal lpApplicationName As String, ByVal lpKeyName As String, ByVal nDefault As Long, ByVal lpFileName As String) As Long
说明
为初始化文件中指定的条目获取一个整数值
返回值
Long，找到的条目的值；如指定的条目未找到，就返回默认值。如找到的数字不是一个合法的整数，函数会返回其中合法的一部分。如，对于“xyz=55zz”这个条目，函数返回55。这个函数也能理解采用标准C语言格式的十六进制数字：用0x作为一个十六进制数字的前缀——所以0x55ab等价于vb的&H55AB
参数表
参数 | 类型及说明
lpApplicationName | String，指定在其中查找条目的小节。注意这个字串是不区分大小写的
lpKeyName | String，欲获取的设置项或条目。这个支持不区分大小写
nDefault | Long，指定条目未找到时返回的默认值
lpFileName | String，初始化文件的名字。如果没有指定完整的路径名，windows就会在Windows目录中搜索文件
注解
在Windows NT中，有些初始化文件实际是在注册表中。可在注册表的下面这个项处找到这些文件的一个列表：HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\IniFileMapping


GetPrivateProfileSection
VB声明
Declare Function GetPrivateProfileSection Lib "kernel32" Alias "GetPrivateProfileSectionA" (ByVal lpAppName As String, ByVal lpReturnedString As String, ByVal nSize As Long, ByVal lpFileName As String) As Long
说明
获取指定小节所有项名和值的一个列表
返回值
Long，装载到lpReturnedString缓冲区的字符数量。如缓冲区的容量不够大，不能容下所有信息，就返回nSize-2
参数表
参数 | 类型及说明
lpAppName | String，欲获取的小节。注意这个字串不区分大小写
lpReturnedString | String，项和值字串的列表。每个字串都由一个NULL字符分隔，最后一个字串后面用两个NULL字符中止
nSize | Long，lpReturnedString缓冲区的大小。在windows系统中最大值为32767
lpFileName | String，初始化文件的名字。如没有指定完整路径名，windows就在Windows目录中查找文件
注解
参考对GetPrivateProfileInt函数的注解


GetPrivateProfileString
VB声明
Declare Function GetPrivateProfileString& Lib "kernel32" Alias "GetPrivateProfileStringA" (ByVal lpApplicationName As String, ByVal lpKeyName As String, ByVal lpDefault As String, ByVal lpReturnedString As String, ByVal nSize As Long, ByVal lpFileName As String)
说明
为初始化文件中指定的条目取得字串
返回值
Long，复制到lpReturnedString缓冲区的字节数量，其中不包括那些NULL中止字符。如lpReturnedString缓冲区不够大，不能容下全部信息，就返回nSize-1（若lpApplicationName或lpKeyName为NULL，则返回nSize-2）
参数表
参数 | 类型及说明
lpApplicationName | String，欲在其中查找条目的小节名称。这个字串不区分大小写。如设为vbNullString，就在lpReturnedString缓冲区内装载这个ini文件所有小节的列表
lpKeyName | String，欲获取的项名或条目名。这个字串不区分大小写。如设为vbNullString，就在lpReturnedString缓冲区内装载指定小节所有项的列表
lpDefault | String，指定的条目没有找到时返回的默认值。可设为空（""）
lpReturnedString | String，指定一个字串缓冲区，长度至少为nSize
nSize | Long，指定装载到lpReturnedString缓冲区的最大字符数量
lpFileName | String，初始化文件的名字。如没有指定一个完整路径名，windows就在Windows目录中查找文件
注解
如lpKeyName参数为vbNullString，那么lpReturnedString缓冲区会载入指定小节所有设置项的一个列表。每个项都用一个NULL字符分隔，最后一个项用两个NULL字符中止。也请参考GetPrivateProfileInt函数的注解
其他
在vb的api文本查看器中复制的声明为：Declare Function GetPrivateProfileString Lib "kernel32" Alias "GetPrivateProfileStringA" (ByVal lpApplicationName As String, ByVal lpKeyName As Any, ByVal lpDefault As String, ByVal lpReturnedString As String, ByVal nSize As Long, ByVal lpFileName As String) As Long

Top


GetProfileInt
VB声明
Declare Function GetProfileInt Lib "kernel32" Alias "GetProfileIntA" (ByVal lpAppName As String, ByVal lpKeyName As String, ByVal nDefault As Long) As Long
说明
取得win.ini初始化文件中指定条目的一个整数值
返回值
Long，找到条目的值；如指定的条目未找到，就返回默认值。如找到的数字不是一个合法的整数，函数就会返回其中合法的一部分。例如，对于“xyz=55zz”这个条目，函数会返回55。这个函数也能理解采用标准C语言格式的十六进制数字：用0x作为一个十六进制数字的前缀——所以0x55ab等价于vb的&H55AB
参数表
参数 | 类型及说明
lpAppName | String，欲在其中搜索条目的小节名。这个字串不区分大小写
lpKeyName | String，欲获取的项名或条目名。这个字串不区分大小写
nDefault | Long，指定在条目未找到时返回的默认值
注解
参考对GetPrivateProfileInt函数的注解


GetProfileSection
VB声明
Declare Function GetProfileSection Lib "kernel32" Alias "GetProfileSectionA" (ByVal lpAppName As String, ByVal lpReturnedString As String, ByVal nSize As Long) As Long
说明
获取指定小节（在win.ini文件中）所有项名和值的一个列表
返回值
Long，装载到lpReturnedString缓冲区的字符数量。如缓冲区的长度不足以容下所有信息，则返回nSize-2
参数表
参数 | 类型及说明
lpAppName | String，欲获取的小节。这个字串不区分大小写
lpReturnedString | String，用于容纳项和值字串列表的一个缓冲区。每个字串都用一个NULL分隔，最后一个字串用两个NULL字符中止
nSize | Long，lpReturnedString缓冲区的大小，在windows 95中最大为32767
注解
参考GetPrivateProfileInt函数的注解


GetProfileString
VB声明
Declare Function GetProfileString Lib "kernel32" Alias "GetProfileStringA" (ByVal lpAppName As String, ByVal lpKeyName As String, ByVal lpDefault As String, ByVal lpReturnedString As String, ByVal nSize As Long) As Long
说明
为win.ini初始化文件中指定的条目取得字串
返回值
Long，复制到lpReturnedString缓冲区的字节数量，其中不包括那些NULL中止字符。如lpReturnedString缓冲区不够大，不能容下全部信息，就返回nSize-1（若lpAppName或lpKeyName为NULL，则返回nSize-2）
参数表
参数 | 类型及说明
lpAppName | String，要在其中查找条目的小节名。这个字串不区分大小写。如果为vbNullString，则在lpReturnedString缓冲区装载这个.ini文件的所有小节的一个列表
lpKeyName | String，欲获取的项名或条目名。这个字串不区分大小写。如果为vbNullString，则在lpReturnedString缓冲区装载指定小节内所有项的一个列表
lpDefault | String，指定条目未找到时返回的默认值。可设为空（""）
lpReturnedString | String，指定一个预先初始化好的字串缓冲区，长度至少为nSize个字符
nSize | Long，装载到lpReturnedString缓冲区的最大字符数
注解
如lpKeyName参数为零，那么lpReturnedString缓冲区会载入指定小节内所有设置项的一个列表。每个项都用一个NULL字符分隔，最后那个项用两个NULL字符中止

Top


GetShortPathName
VB声明
Declare Function GetShortPathName Lib "kernel32" Alias "GetShortPathName" (ByVal lpszLongPath As String, ByVal lpszShortPath As String, ByVal cchBuffer As Long) As Long
说明
获取指定文件的短路径名
返回值
Long，装载到lpszShortPath缓冲区的字符数量。如lpszShortPath的长度不足，不能容下文件名，就返回需要的缓冲区长度
参数表
参数 | 类型及说明
lpszLongPath | String，指定欲获取短路径名的那个文件的名字。可以是个完整路径，或者由当前目录决定
lpszShortPath | String，指定一个缓冲区，用于装载文件的短路径和文件名
cchBuffer | Long，lpszShortPath缓冲区长度


GetSystemDirectory
VB声明
Declare Function GetSystemDirectory Lib "kernel32" Alias "GetSystemDirectoryA" (ByVal lpBuffer As String, ByVal nSize As Long) As Long
说明
这个函数能取得Windows系统目录（System目录）的完整路径名。在这个目录中，包含了所有必要的系统文件。根据微软的标准，其他定制控件和一些共享组件也可放到这个目录。通常应避免在这个目录里创建文件。在网络环境中，往往需要管理员权限才可对这个目录进行写操作
返回值
Long，装载到lpBuffer缓冲区的字符数量。如lpBuffer不够大，不能容下文件名，则返回要求的缓冲区长度
参数表
参数 | 类型及说明
lpBuffer | String，用于装载系统目录路径名的一个字串缓冲区。它应事先初始化成nSize+1个字符的长度。通常至少要为这个缓冲区分配MAX_PATH个字符的长度
nSize | Long，lpBuffer字串的最大长度


GetTempFileName
VB声明
Declare Function GetTempFileName Lib "kernel32" Alias "GetTempFileNameA" (ByVal lpszPath As String, ByVal lpPrefixString As String, ByVal wUnique As Long, ByVal lpTempFileName As String) As Long
说明
这个函数包含了一个临时文件的名字，它可由应用程序使用
返回值
Long，最终用于生成文件名的wUnique数字的值。如wUnique参数不为零，这就是参数的值。零表示失败。会设置GetLastError
参数表
参数 | 类型及说明
lpszPath | String，临时文件使用的目录。通常用GetTempPath函数获得
lpPrefixString | String，要使用的文件名前缀。头三个字符作为文件名前缀使用
wUnique | Long，追加到前缀字串后面的数字。如果为0，则这个函数会用一个随机数字生成文件。随后，它会检查是否存在同名的文件。如果存在，函数会增加这个数字，并继续尝试，直到生成一个独一无二的名字为止。文件在驱动器上会以长度为0字节的形式保存。如果不为零，就不会创建文件，而且函数不会核实它是否一个独一无二的文件名
lpTempFileName | String，用于装载新建临时文件名的缓冲区，这个缓冲区的长度至少应为MAX_PATH个字符
注解
函数使用的文件名肯定采用ANSI字符集。临时文件不会被windows自动删除


GetTempPath
VB声明
Declare Function GetTempPath Lib "kernel32" Alias "GetTempPathA" (ByVal nBufferLength As Long, ByVal lpBuffer As String) As Long
说明
获取为临时文件指定的路径
返回值
Long，装载到lpBuffer的字符数。如当前缓冲区的长度不够，不能容下整个路径，则返回lpBuffer需要的长度。零表示失败。会设置GetLastError
参数表
参数 | 类型及说明
nBufferLength | Long，lpBuffer字串的长度
lpBuffer | String，用于装载临时文件路径的一个预初始化字串
注解
临时路径是由TMP环境变量指定的一个路径。如TMP不存在，则是由TEMP环境变量指定的路径。如果这两个环境变量都不存在，就是当前目录


GetVolumeInformation
VB声明
Declare Function GetVolumeInformation Lib "kernel32" Alias "GetVolumeInformationA" (ByVal lpRootPathName As String, ByVal lpVolumeNameBuffer As String, ByVal nVolumeNameSize As Long, lpVolumeSerialNumber As Long, lpMaximumComponentLength As Long, lpFileSystemFlags As Long, ByVal lpFileSystemNameBuffer As String, ByVal nFileSystemNameSize As Long) As Long
说明
获取与一个磁盘卷有关的信息
返回值
Long，非零表示成功，零表示失败。会设置GetLastError
参数表
参数 | 类型及说明
lpRootPathName | String，欲获取信息的那个卷的根路径
lpVolumeNameBuffer | String，用于装载卷名（卷标）的一个字串
nVolumeNameSize | Long，lpVolumeNameBuffer字串的长度
lpVolumeSerialNumber | Long，用于装载磁盘卷序列号的变量
lpMaximumComponentLength | Long，指定一个变量，用于装载文件名每一部分的长度。例如，在“c:\component1\component2.ext”的情况下，它就代表component1或component2名称的长度
lpFileSystemFlags | Long，用于装载一个或多个二进制位标志的变量。对这些标志位的解释如下：
 | FS_CASE_IS_PRESERVED | 文件名的大小写记录于文件系统
 | FS_CASE_SENSITIVE | 文件名要区分大小写
 | FS_UNICODE_STORED_ON_DISK | 文件名保存为Unicode格式
 | FS_PERSISTANT_ACLS | 文件系统支持文件的访问控制列表（ACL）安全机制
 | FS_FILE_COMPRESSION | 文件系统支持逐文件的进行文件压缩
 | FS_VOL_IS_COMPRESSED | 整个磁盘卷都是压缩的
lpFileSystemNameBuffer | String，指定一个缓冲区，用于装载文件系统的名称（如FAT，NTFS以及其他）
nFileSystemNameSize | Long，lpFileSystemNameBuffer字串的长度

Top


GetWindowsDirectory
VB声明
Declare Function GetWindowsDirectory Lib "kernel32" Alias "GetWindowsDirectoryA" (ByVal lpBuffer As String, ByVal nSize As Long) As Long
说明
这个函数能获取Windows目录的完整路径名。在这个目录里，保存了大多数windows应用程序文件及初始化文件
返回值
Long，复制到lpBuffer的一个字串的长度。如lpBuffer不够大，不能容下整个字串，就会返回lpBuffer要求的长度。零表示失败。会设置GetLastError
参数表
参数 | 类型及说明
lpBuffer | String，指定一个字串缓冲区，用于装载Windows目录名。除非是根目录，否则目录中不会有一个中止用的“\”字符
nSize | Long，lpBuffer字串的最大长度


hread
VB声明
Declare Function hread Lib "kernel32" Alias "_hread" (ByVal hFile As Long, lpBuffer As Any, ByVal lBytes As Long) As Long
说明
参考lread
注解

这个函数在win16中用于读取大于64KB的数据块。但win32的文件I/O函数并不受这个64KB的限制


hwrite
VB声明
Declare Function hwrite Lib "kernel32" Alias "_hwrite" (ByVal hFile As Long, ByVal lpBuffer As String, ByVal lBytes As Long) As Long
说明
参考lwrite函数
注解

这个函数在win16中用于写入大于64KB的数据块。但win32的文件I/O函数并不受这个64KB的限制


lclose
VB声明
Declare Function lclose Lib "kernel32" Alias "_lclose" (ByVal hFile As Long) As Long
说明
关闭指定的文件，请参考CloseHandle函数，了解进一步的情况


lcreat
VB声明
Declare Function lcreat Lib "kernel32" Alias "_lcreat" (ByVal lpPathName As String, ByVal iAttribute As Long) As Long
说明
创建一个文件。如文件已经存在，就会将其缩短成零长度，并将其打开，以便读写
返回值
Long，如执行成功，返回打开文件的句柄。如果出错，则返回HFILE_ERROR.
参数表
参数 | 类型及说明
lpPathName | String，欲创建的文件的名字
iAttribute | Long，下述值之一 0——文件能够读写 1——创建只读文件 2——创建隐藏文件 3——创建系统文件
注解
该函数会打开已由其他应用程序打开的文件，所以使用它时要小心。win32的CreateFile函数已取代了这个函数。这个函数与vb的open语句作用相同


llseek
VB声明
Declare Function llseek Lib "kernel32" Alias "_llseek" (ByVal hFile As Long, ByVal lOffset As Long, ByVal iOrigin As Long) As Long
说明
设置文件中进行读写的当前位置。该函数与vb的seek语句类似。如果用vb的open命令打开了一个文件，那么不要再对这个文件使用llseek函数
返回值
Long，返回一个新位置，设置成从文件起始处算起的一个偏移量。HFILE_ERROR表示函数执行出错。会设置GetLastError
参数表
参数 | 类型及说明
hFile | Long，系统文件句柄
lOffset | Long，字节偏移量
iOrigin | Long，下述常数之一
 | FILE_BEGIN | lOffset将新位置指定成从文件起始处的一个偏移距离
 | FILE_CURRENT | lOffset将新位置指定成从当前位置开始的一个偏移距离
 | FILE_END | lOffset将新位置指定成从文件结尾开始的的一个偏移距离
注解
参考SetFilePointer函数，认识能对较大文件进行处理的一个近似函数.

Top


LockFile
VB声明
Declare Function LockFile Lib "kernel32" Alias "LockFile" (ByVal hFile As Long, ByVal dwFileOffsetLow As Long, ByVal dwFileOffsetHigh As Long, ByVal nNumberOfBytesToLockLow As Long, ByVal nNumberOfBytesToLockHigh As Long) As Long
说明
在windows中，文件可用共享模式打开——在这种情况下，多个进程可同时访问该文件。利用这个函数，要对文件进行读写的一个应用程序可将文件的某一部分锁定起来，使其不能由其他应用程序访问。这样便避免了同时读写时发生的冲突
返回值
Long，非零表示成功，零表示失败。会设置GetLastError
参数表
参数 | 类型及说明
hFile | Long，欲锁定文件的句柄
dwFileOffsetLow | Long，指定欲锁定区域起始处的低32位地址
dwFileOffsetHigh | Long，指定欲锁定区域起始处的高32位地址
nNumberOfBytesToLockLow | Long，锁定区域包含字符数量的低32位值
nNumberOfBytesToLockHigh | Long，锁定区域包含字符数量的高32位值
注解
锁定的区域不能进行重叠操作。由不同的操作系统决定，可能要求先运行share.exe才能保证该函数正常工作


LockFileEx
VB声明
Declare Function LockFileEx Lib "kernel32" Alias "LockFileEx" (ByVal hFile As Long, ByVal dwFlags As Long, ByVal dwReserved As Long, ByVal nNumberOfBytesToLockLow As Long, ByVal nNumberOfBytesToLockHigh As Long, lpOverlapped As OVERLAPPED) As Long
说明
与LockFile相似，只是它提供了更多的功能
返回值
Long，非零表示成功，零表示失败。会设置GetLastError
参数表
参数 | 类型及说明
hFile | Long，欲锁定文件的句柄
dwFlags | Long，指定下述一个或两个常数
 | LOCKFILE_FAIL_IMMEDIATELY | 指出如锁定失败，函数应返回一个错误。否则，应用程序线程就会暂时挂起，并一直等待，直到能进行锁定为止
 | LOCKFILE_EXCLUSIVE_LOCK | 指出锁定区域不可由另一个线程或进程读写。否则这个区域就只能防范“写”——其他进程仍然能够读取锁定区域的内容
dwReserved | Long，未使用，设为零
nNumberOfBytesToLockLow | Long，锁定区域包含字符数的低32位
nNumberOfBytesToLockHigh | Long，锁定区域包含字符数的高32位
lpOverlapped | OVERLAPPED，包含了文件中相对于锁定区域起始处的偏移量
注解
锁定区域不可重叠操作（即多个进程同时操作）

Top


lopen
VB声明
Declare Function lopen Lib "kernel32" Alias "_lopen" (ByVal lpPathName As String, ByVal iReadWrite As Long) As Long
说明
以二进制模式打开指定的文件
返回值
Long，如执行成功，返回打开文件的句柄。HFILE_ERROR表示出错。会设置GetLastError
参数表
参数 | 类型及说明
lpPathName | String，欲打开文件的名字
iReadWrite | Long，访问模式和共享模式常数的一个组合，如下所示：
 | 1、访问模式
 | READ | 打开文件，读取其中的内容
 | READ_WRITE | 打开文件，对其进行读写
 | WRITE | 打开文件，在其中写入内容
 | 2、共享模式（参考OpenFile函数的标志常数表）
 | OF_SHARE_COMPAT， OF_SHARE_DENY_NONE， OF_SHARE_DENY_READ， OF_SHARE_DENY_WRITE， OF_SHARE_EXCLUSIVE
注解
CreateFile函数在win32下提供了更多的功能

Top


lread
VB声明
Declare Function lread Lib "kernel32" Alias "_lread" (ByVal hFile As Long, lpBuffer As Any, ByVal wBytes As Long) As Long
说明
将文件中的数据读入内存缓冲区
返回值
Long，返回实际读入的字节数。HFILE_ERROR意味着函数执行出错。如这个数字小于wBytes，则表明早已抵达了文件的末尾。会设置GetLastError
参数表
参数 | 类型及说明
hFile | Long，文件句柄
lpBuffer | Any，指定一个内存块的指针，数据将读入这个内存块
wBytes | Long，要读入的字节数


lwrite
VB声明
Declare Function lwrite Lib "kernel32" Alias "_lwrite" (ByVal hFile As Long, ByVal lpBuffer As String, ByVal wBytes As Long) As Long
说明
将数据从内存缓冲区写入一个文件
返回值
Long，写入的字节数。HFILE_ERROR意味着函数执行出错。如这个数字小于wBytes，则表明早已抵达了文件的末尾。会设置GetLastError
参数表
参数 | 类型及说明
hFile | Long，文件句柄
lpBuffer | String，指定一个内存块的指针，把这个内存块的数据写入文件
wBytes | Long，要写入的字节数


LZClose
VB声明
Declare Sub LZClose Lib "lz32.dll" Alias "LZClose" (ByVal hfFile As Long)
说明
关闭由LZOpenFile 或 LZInit函数打开的一个文件
参数表
参数 | 类型及说明
hfFile | Long，欲关闭的句柄。这是由LZOpenFile 或 LZInit函数返回的一个句柄，不是普通的系统文件句柄


LZCopy
VB声明
Declare Function LZCopy Lib "lz32.dll" Alias "LZCopy" (ByVal hfSource As Long, ByVal hfDest As Long) As Long
说明
复制一个文件。如源文件已压缩，则会在复制期间解压。文件必须是用微软公司的compress.exe或等效工具压缩的
返回值
Long，如执行成功，返回目标文件的大小，以字节为单位。如执行出错，会返回小于零的一个常数，如下表
LZERROR_BADINHANDLE | 源文件无效
LZERROR_BADOUTHANDLE | 目标文件无效
LZERROR_GLOBALLOC | 内部解压缓冲区的内存容量不足
LZERROR_GLOBLOCK | 内部解压缓冲区的句柄无效
LZERROR_READ | 无效的源文件格式
LZERROR_UNKNOWNALG | 解压DLL不能识别源文件采用的压缩算法
LZERROR_WRITE | 在磁盘上写入输出文件时出错，通常是由于磁盘空间不足造成的
参数表
参数 | 类型及说明
hfSource | Long，指定源文件句柄。这是由LZOpenFile 或 LZInit函数返回的一个句柄
hfDest | Long，指定目标文件句柄。这是由LZOpenFile 或 LZInit函数返回的一个句柄


LZInit
VB声明
Declare Function LZInit Lib "lz32.dll" Alias "LZInit" (ByVal hfSrc As Long) As Long
说明
这个函数用于初始化内部缓冲区。对一个给出打开文件句柄的一个文件进行解压时，将用到这个缓冲区
返回值
Long，由lz32.dll库使用的、那个文件的一个特殊句柄。这个文件句柄兼容于LZCopy， CopyLZFiles， LZRead 和 LZSeek函数。如果出错，该函数会返回下表列出的出错代码之一。注意完成后一定用LZClose关闭这个句柄
LZERROR_BADINHANDLE | 源文件无效
LZERROR_BADOUTHANDLE | 目标文件无效
LZERROR_GLOBALLOC | 内部解压缓冲区的内存容量不足
LZERROR_GLOBLOCK | 内部解压缓冲区的句柄无效
LZERROR_READ | 无效的源文件格式
LZERROR_UNKNOWNALG | 解压DLL不能识别源文件采用的压缩算法
LZERROR_WRITE | 在磁盘上写入输出文件时出错，通常是由于磁盘空间不足造成的
参数表
参数 | 类型及说明
hfSrc | Long，文件的句柄
注解
最多只能同时打开16个压缩文件句柄

Top


LZOpenFile
VB声明
Declare Function LZOpenFile Lib "lz32.dll" Alias "LZOpenFileA" (ByVal lpszFile As String, lpOf As OFSTRUCT, ByVal style As Long) As Long
说明
该函数能执行大量不同的文件处理，而且兼容于压缩文件
返回值
Long，如函数执行成功，且样式（style）参数不为OF_READ，就返回常规的文件句柄，具体请参考OpenFile函数的说明。如样式参数为OF_READ，而且文件是压缩的，就会返回一个特殊的文件句柄，以便由LZCopy， LZRead 和 LZSeek函数使用。如出错，返回如下表所示的一个常数：
LZERROR_BADINHANDLE | 源文件无效
LZERROR_BADOUTHANDLE | 目标文件无效
LZERROR_GLOBALLOC | 内部解压缓冲区的内存容量不足
LZERROR_GLOBLOCK | 内部解压缓冲区的句柄无效
LZERROR_READ | 无效的源文件格式
LZERROR_UNKNOWNALG | 解压DLL不能识别源文件采用的压缩算法
LZERROR_WRITE | 在磁盘上写入输出文件时出错，通常是由于磁盘空间不足造成的
参数表
参数 | 类型及说明
lpszFile | String，欲打开的文件名
lpOf | OFSTRUCT，该结构填充的数据包括与本次处理的文件和结果有关的信息
style | Long，处理方式标志常数的一种组合。参考OpenFile函数的标志常数表
注解
参考OpenFile函数

Top


LZRead
VB声明
Declare Function LZRead Lib "lz32.dll" Alias "LZRead" (ByVal hfFile As Long, ByVal lpvBuf As String, ByVal cbread As Long) As Long
说明
将数据从文件读入内存缓冲区。如hfFile是一个压缩文件的句柄，同时那个压缩文件是由LZOpenFile 或 LZInit函数打开的，这个函数就会在读入数据的同时对文件进行解压处理
返回值
Long，实际读入的字节数。如这个数字小于cbread，表明早已抵达了文件的末尾。如出错，返回下表列出的常数之一
LZERROR_BADINHANDLE | 源文件无效
LZERROR_BADOUTHANDLE | 目标文件无效
LZERROR_GLOBALLOC | 内部解压缓冲区的内存容量不足
LZERROR_GLOBLOCK | 内部解压缓冲区的句柄无效
LZERROR_READ | 无效的源文件格式
LZERROR_UNKNOWNALG | 解压DLL不能识别源文件采用的压缩算法
LZERROR_WRITE | 在磁盘上写入输出文件时出错，通常是由于磁盘空间不足造成的
参数表
参数 | 类型及说明
hfFile | Long，源文件的特殊句柄。这个句柄是由LZOpenFile 或 LZInit函数提供的
lpvBuf | String，一个内存块的指针，数据将读入这个内存块
cbread | Long，指定lpvBuf缓冲区的长度

Top


LZSeek
VB声明
Declare Function LZSeek Lib "lz32.dll" Alias "LZSeek" (ByVal hfFile As Long, ByVal lOffset As Long, ByVal nOrigin As Long) As Long
说明
设置一个文件中进行读写的当前位置。如hfFile是一个压缩文件的句柄，同时那个压缩文件是由LZOpenFile 或 LZInit函数打开的，这个函数就会根据文件的解压版本进行查找
返回值
Long，返回一个新位置，采用从文件起始处计算的字节偏移量。如出错，返回下表列出的常数之一
LZERROR_BADINHANDLE | 源文件无效
LZERROR_BADOUTHANDLE | 目标文件无效
LZERROR_GLOBALLOC | 内部解压缓冲区的内存容量不足
LZERROR_GLOBLOCK | 内部解压缓冲区的句柄无效
LZERROR_READ | 无效的源文件格式
LZERROR_UNKNOWNALG | 解压DLL不能识别源文件采用的压缩算法
LZERROR_WRITE | 在磁盘上写入输出文件时出错，通常是由于磁盘空间不足造成的
参数表
参数 | 类型及说明
hfFile | Long，源文件的特殊句柄。这个句柄是由LZOpenFile 或 LZInit函数提供的
lOffset | Long，以字节数表示的偏移量
nOrigin | Long，下述值之一 0——lOffset将新位置指定成从文件的起始处计算偏移 1——lOffset将新位置指定成从当前位置开始计算偏移 2——lOffset将新位置指定成从文件的结尾处计算偏移

Top


MapViewOfFile

MapViewOfFile, MapViewOfFileEx
VB声明
Declare Function MapViewOfFile& Lib "kernel32" (ByVal hFileMappingObject As Long, ByVal dwDesiredAccess As Long, ByVal dwFileOffsetHigh As Long, ByVal dwFileOffsetLow As Long, ByVal dwNumberOfBytesToMap As Long) Declare Function MapViewOfFileEx& Lib "kernel32" (ByVal hFileMappingObject As Long, ByVal dwDesiredAccess As Long, ByVal dwFileOffsetHigh As Long, ByVal dwFileOffsetLow As Long, ByVal dwNumberOfBytesToMap As Long, lpBaseAddress As Any)
说明
将一个文件映射对象映射到当前应用程序的地址空间。MapViewOfFileEx允许我们指定一个基本地址来进行映射
返回值
Long，文件映射在内存中的起始地址。零表示出错。会设置GetLastError
参数表
参数 | 类型及说明
hFileMappingObject | Long，文件映射对象的句柄
dwDesiredAccess | Long，下述常数之一：
 | FILE_MAP_WRITE | 映射可读可写。文件映射对象必须通过PAGE_READWRITE访问创建
 | FILE_MAP_READ | 映射只读。文件映射对象必须通过PAGE_READ 或 PAGE_READWRITE访问创建
 | FILE_MAP_ALL_ACCESS | 与FILE_MAP_WRITE相同
 | FILE_MAP_COPY | 映射时保留写操作的副本。文件映射对象必须用PAGE_WRITECOPY访问在win95下创建
dwFileOffsetHigh | Long，文件中映射起点的高32位地址
dwFileOffsetLow | Long，文件中映射起点的低32位地址
dwNumberOfBytesToMap | Long，文件中要映射的字节数。用零映射整个文件映射对象
lpBaseAddress | Long，指定映射文件映射对象的地址。如这个地址处没有足够的内存空间，那么对MapViewOfFileEx的调用会失效。零表示允许windows寻找一个地址
注解
dwFileOffsetLow和dwFileOffsetHigh必须反映一个偏移距离，它由系统的内存分配精度决定。例如，假设系统的内存精度是64KB（即最小分配单位是64KB），则这些值必须是64KB的整数倍。大多数应用程序都简单的用零从文件的起始处开始映射。lpBaseAddress也必须是内存分配精度的整数倍
其他
声明中的参数类型为Any，而参数表中都是Long，我也不明白。但关于这个函数的英文资料的确是这样的。

Top


MoveFile

MoveFile, MoveFileEx
VB声明
Declare Function MoveFile& Lib "kernel32" Alias "MoveFileA" (ByVal lpExistingFileName As String, ByVal lpNewFileName As String) Declare Function MoveFileEx& Lib "kernel32" Alias "MoveFileExA" (ByVal lpExistingFileName As String, ByVal lpNewFileName As String, ByVal dwFlags As Long)
说明
移动文件。如dwFlags设为零，则MoveFile完全等价于MoveFileEx
返回值
Long，非零表示成功，零表示失败。会设置GetLastError
参数表
参数 | 类型及说明
lpExistingFileName | String，欲移动的文件名
lpNewFileName | String，新文件名
dwFlags | Long，一个或多个下述常数
 | MOVEFILE_REPLACE_EXISTING | 如目标文件存在，则将其替换
 | MOVEFILE_COPY_ALLOWED | 如移动到一个不同的卷，则复制文件并删除原来的文件
 | MOVEFILE_DELAY_UNTIL_REBOOT | 移动操作在系统下次重新启动时正式进行。这样便可在Windows NT中改换系统文件
注解
这两个函数通常不能将文件从一个卷移动到另一个卷。但如设置了MOVEFILE_COPY_ALLOWED标记，MoveFileEx可以做到这一点

Top


OpenFile
VB声明
Declare Function OpenFile Lib "kernel32" Alias "OpenFile" (ByVal lpFileName As String, lpReOpenBuff As OFSTRUCT, ByVal wStyle As Long) As Long
说明
这个函数能执行大量不同的文件操作。和这个函数相比，请优先考虑win32的CreateFile函数（它能打开命名管道和控制Unicode文件名，同时不受128个字符的路径名称的限制）
返回值
Long，如执行成功，返回文件句柄。注意文件句柄可能是无效的；例如，假设指定了OF_EXIST标志，文件在函数返回前会关闭，但它打开时的句柄却永远不会返回。如果出错，函数会返回HFILE_ERROR；此时，由lpReOpenBuff指定的OFSTRUCT结构的nErrCode会设置成发生的错误。表OpenFile-2（OFSTRUCT出错代码）对这些错误进行了总结。会设置GetLastError
参数表
参数 | 类型及说明
lpFileName | String，欲打开文件的名字
lpReOpenBuff | OFSTRUCT，该结构填充的数据包括与文件和操作结果有关的信息
wStyle | Long，参考表OpenFile-1（OpenFile函数的标志常数表）总结的标志常数的组合，它决定了要采取的操作方式
表OpenFile-1（OpenFile函数的标志常数表）
wStyle常数 | 说明
OF_CREATE | 创建指定的文件。如已经存在，则将其缩减为零长度
OF_DELETE | 删除指定的文件
OF_EXIST | 通过尝试打开文件的做法，判断一个文件是否存在。如文件存在，则将其关闭。此时，函数会返回文件打开时使用的句柄，但这个句柄是无效的。如指定的文件不存在，则返回一个负数
OF_PARSE | 填写lpReOpenBuff结构的内容，但不执行其他任何操作
OF_PROMPT | 如文件不存在，则显示一个消息框，在其中列出重试和取消按钮
OF_READ | 以只读方式打开文件
OF_READWRITE | 以可读、可写的方式打开文件
OF_REOPEN | 打开lpReOpenBuff结构内指定的文件，而不是用lpFileName参数
OF_SEARCH | 强迫windows查找文件——即使指定了特定的路径
OF_SHARE_COMPAT | 文件可由多个应用程序打开多次
OF_SHARE_DENY_NONE | 可打开文件，以便由其他程序读写
OF_SHARE_DENY_READ | 禁止其他程序读写文件内容
OF_SHARE_DENY_WRITE | 其他程序可以读文件，但不能写文件
OF_SHARE_EXCLUSIVE | 其他任何一个程序都不能再打开这个文件
OF_WRITE | 文件以只写模式打开
表OpenFile-2（OFSTRUCT出错代码）
十六进制值 | 说明 | 十六进制值 | 说明
1 | 函数无效 | 2 | 文件未找到
3 | 路径未找到 | 4 | 无可用文件句柄
5 | 拒绝访问 | 6 | 句柄无效
7 | DOS内存冲突 | 8 | 无足够内存完成操作
9 | 无效块 | A | 非法环境
B | 无效格式 | C | 无效访问
D | 无效数据 |  |
F | 无效驱动器 | 10 | 当前目录无效
11 | 设备有异 | 12 | 没有更多的文件
13 | 写保护错 | 14 | 非法单位
15 | 驱动器未准备好 | 16 | 无效命令
17 | CRC校验错 | 18 | 无效长度
19 | 搜索错误 | 1A | 磁盘不兼容MS-DOS
1B | 扇区未找到 | 1C | 缺纸
1D | 写错误 | 1E | 读错误
1F | 驱动器常规错误 | 20 | 共享违例
21 | 文件锁定违例 | 22 | 不正确的磁盘
23 | 无可用的文件控制块 | 24 | 共享缓冲区溢出
32 | 不支持的设备 | 33 | 远程设备不可用
34 | 重名错误 | 35 | 网络路径错误
36 | 网络忙 | 37 | 非法设备
38 | 命令太多 | 39 | 网卡硬件错误
3A | 网络响应错误 | 3B | 其他网络错误
3C | 远程适配器错误 | 3D | 打印队列满
3E | 后台打印缓冲区满 | 3F | 打印取消
40 | 删除的网络名 | 41 | 拒绝网络访问
42 | 无效设备类型 | 43 | 无效网络名
44 | 名字太多 | 45 | 会话太多
46 | 共享暂停 | 47 | 请求未接受
48 | 重定向暂停 | 50 | 文件退出
51 | 文件控制块重复 | 52 | 不能创建
53 | 中断24错误 | 54 | 缺少结构
55 | 已经分配 | 56 | 密码无效
57 | 参数无效 | 58 | 网络写错误

Top


OpenFileMapping
VB声明
Declare Function OpenFileMapping Lib "kernel32" Alias "OpenFileMappingA" (ByVal dwDesiredAccess As Long, ByVal bInheritHandle As Long, ByVal lpName As String) As Long
说明
打开一个现成的文件映射对象
返回值
Long，指定文件映射对象的句柄。零表示出错。会设置GetLastError
参数表
参数 | 类型及说明
dwDesiredAccess | Long，带有前缀FILE_MAP_???的一个常数。参考MapViewOfFile函数的dwDesiredAccess参数的说明
bInheritHandle | Long，如这个函数返回的句柄能由当前进程启动的新进程继承，则这个参数为TRUE
lpName | String，指定要打开的文件映射对象名称


QueryDosDevice
VB声明
Declare Function QueryDosDevice Lib "kernel32" Alias "QueryDosDeviceA" (ByVal lpDeviceName As String, ByVal lpTargetPath As String, ByVal ucchMax As Long) As Long
说明
在Windows NT中，DOS设备名会映射成NT系统设备名。该函数可判断当前的设备映射情况
返回值
Long，零表示出错。如执行成功，返回保存到lpTargetPath的字符数。会设置GetLastError
参数表
参数 | 类型及说明
lpDeviceName | String，如果是vbNullString，那么lpTargetPath会载入当前映射的MS-DOS名称的一个列表。如果是个MS-DOS名，则lpTargetPath会载入一个设备映射列表（第一个名字是活动映射，后续的名字是以前尚未删掉的映射）
lpTargetPath | String，名称列表，具体取决于lpDeviceName参数。这些名字用NULL字符分隔。列表最后用两个连续的NULL字符中止
ucchMax | Long，lpTargetPath缓冲区的大小
注解
可用DefineDosDevice函数将映射变成DOS设备名
适用平台
Windows NT

Top


ReadFile
VB声明
Declare Function ReadFile Lib "kernel32" Alias "ReadFile" (ByVal hFile As Long, lpBuffer As Any, ByVal nNumberOfBytesToRead As Long, lpNumberOfBytesRead As Long, lpOverlapped As OVERLAPPED) As Long
说明
从文件中读出数据。与lread函数相比，这个函数要明显灵活的多。该函数能够操作通信设备、管道、套接字以及邮槽
返回值
Long，非零表示成功，零表示失败。会设置GetLastError。如启动的是一次异步读操作，则函数会返回零值，并将ERROR_IO_PENDING设置成GetLastError的结果。如结果不是零值，但读入的字节数小于nNumberOfBytesToRead参数指定的值，表明早已抵达了文件的结尾
参数表
参数 | 类型及说明
hFile | Long，文件的句柄
lpBuffer | Any，用于保存读入数据的一个缓冲区
nNumberOfBytesToRead | Long，要读入的字符数
lpNumberOfBytesRead | Long，从文件中实际读入的字符数
lpOverlapped | OVERLAPPED，如文件打开时指定了FILE_FLAG_OVERLAPPED，那么必须用这个参数引用一个特殊的结构。那个结构定义了一次异步读取操作。否则，应将这个参数设为NULL（将函数声明成ByVal As Long，并传递零值）
注解
并非每种操作系统都支持对每种设备进行异步操作。Windows 95不支持对一个磁盘文件进行异步读操作（重复读）

Top


ReadFileEx
VB声明
Declare Function ReadFileEx Lib "kernel32" Alias "ReadFileEx" (ByVal hFile As Long, lpBuffer As Any, ByVal nNumberOfBytesToRead As Long, lpOverlapped As OVERLAPPED, ByVal lpCompletionRoutine As Long) As Long
说明
与ReadFile相似，只是它只能用于异步读操作，并包含了一个完整的回调
返回值
Long，非零表示成功，零表示失败。会设置GetLastError
参数表
参数 | 类型及说明
hFile | Long，文件的句柄
lpBuffer | Any，指定容纳读入数据的一个缓冲区。除非读操作执行完毕，否则不要访问这个缓冲区
nNumberOfBytesToRead | Long，要读入的字节数
lpOverlapped | OVERLAPPED，定义了一个异步操作的结构。使用这个函数时，结构中的hEvent字段会被忽略
lpCompletionRoutine | Long，回调函数的返回值


RegCloseKey
VB声明
Declare Function RegCloseKey Lib "advapi32.dll" Alias "RegCloseKey" (ByVal hKey As Long) As Long
说明
关闭系统注册表中的一个项（或键）
返回值
Long，零（ERROR_SUCCESS）表示成功。其他任何值都代表一个错误代码
参数表
参数 | 类型及说明
hKey | Long，要关闭的项


RegConnectRegistry
VB声明
Declare Function RegConnectRegistry Lib "advapi32.dll" Alias "RegConnectRegistryA" (ByVal lpMachineName As String, ByVal hKey As Long, phkResult As Long) As Long
说明
访问远程系统的部分注册表
返回值
Long，零（ERROR_SUCCESS）表示成功。其他任何值都代表一个错误代码
参数表
参数 | 类型及说明
lpMachineName | String，欲连接的系统。采用“\\计算机名”的形式
hKey | Long，HKEY_LOCAL_MACHINE 或 HKEY_USERS
phkResult | Long，用于装载指定项句柄的一个变量


RegCreateKey
VB声明
Declare Function RegCreateKey Lib "advapi32.dll" Alias "RegCreateKeyA" (ByVal hKey As Long, ByVal lpSubKey As String, phkResult As Long) As Long
说明
在指定的项下创建一个新项。如指定的项已经存在，那么函数会打开现有的项
返回值
Long，零（ERROR_SUCCESS）表示成功。其他任何值都代表一个错误代码
参数表
参数 | 类型及说明
hKey | Long，要打开项的句柄，或者一个标准项名
lpSubKey | String，欲创建的新子项。可同时创建多个项，只需用反斜杠将它们分隔开即可。例如level1\level2\newkey
phkResult | Long，指定一个变量，用于装载新子项的句柄


RegCreateKeyEx
VB声明
Declare Function RegCreateKeyEx Lib "advapi32.dll" Alias "RegCreateKeyExA" (ByVal hKey As Long, ByVal lpSubKey As String, ByVal Reserved As Long, ByVal lpClass As String, ByVal dwOptions As Long, ByVal samDesired As Long, lpSecurityAttributes As SECURITY_ATTRIBUTES, phkResult As Long, lpdwDisposition As Long) As Long
说明
在指定项下创建新项的更复杂的方式。在Win32环境中建议使用这个函数。如指定的项已经存在，则函数会打开现有的项
返回值
Long，零（ERROR_SUCCESS）表示成功。其他任何值都代表一个错误代码
参数表
参数 | 类型及说明
hKey | Long，一个打开项的句柄，或者一个标准项名
lpSubKey | String，欲创建的新子项的名字
Reserved | Long，设为零
lpClass | String，项的类名
dwOptions | Long，下述常数为零：REG_OPTION_VOLATILE——这个项不正式保存下来，系统重新启动后会消失
samDesired | Long，带有前缀KEY_??的一个或多个常数。它们组合起来描述了允许对这个项进行哪些操作
lpSecurityAttributes | SECURITY_ATTRIBUTES，对这个项的安全特性进行描述的一个结构（用ByVal As Long传递空值）。不适用于windows 95
phkResult | Long，指定用于装载新子项句柄的一个变量
lpdwDisposition | Long，用于装载下列某个常数的一个变量： REG_CREATED_NEW_KEY——新建的一个子项 REG_OPENED_EXISTING_KEY——打开一个现有的项
注解
REG_OPTION_VOLATILE不适用于windows 95

Top


RegDeleteKey
VB声明
Declare Function RegDeleteKey Lib "advapi32.dll" Alias "RegDeleteKeyA" (ByVal hKey As Long, ByVal lpSubKey As String) As Long
说明
删除现有项下方一个指定的子项
返回值
Long，零（ERROR_SUCCESS）表示成功。其他任何值都代表一个错误代码
参数表
参数 | 类型及说明
hKey | Long，一个已打开项的句柄，或者标准项名之一
lpSubKey | String，要删除项的名字。这个项的所有子项也会删除


RegDeleteValue
VB声明
Declare Function RegDeleteValue Lib "advapi32.dll" Alias "RegDeleteValueA" (ByVal hKey As Long, ByVal lpValueName As String) As Long
说明
删除指定项下方的一个值
返回值
Long，零（ERROR_SUCCESS）表示成功。其他任何值都代表一个错误代码
参数表
参数 | 类型及说明
hKey | Long，一个已打开项的句柄，或标准项名之一
lpValueName | String，要删除的值名。可设为vbNullString或一个空串，表示删除那个项的默认值


RegEnumKey
VB声明
Declare Function RegEnumKey Lib "advapi32.dll" Alias "RegEnumKeyA" (ByVal hKey As Long, ByVal dwIndex As Long, ByVal lpName As String, ByVal cbName As Long) As Long
说明
枚举指定项的子项。在Win32环境中应使用RegEnumKeyEx
返回值
Long，零（ERROR_SUCCESS）表示成功。其他任何值都代表一个错误代码
参数表
参数 | 类型及说明
hKey | Long，一个已打开项的句柄，或者指定一个标准项名
dwIndex | Long，欲获取的子项的索引。第一个子项的索引编号为零
lpName | String，用于装载指定索引处项名的一个缓冲区
cbName | Long，lpName缓冲区的长度
注解
用RegQueryInfoKey判断容纳最长那个项所需的缓冲区长度


RegEnumKeyEx
VB声明
Declare Function RegEnumKeyEx Lib "advapi32.dll" Alias "RegEnumKeyExA" (ByVal hKey As Long, ByVal dwIndex As Long, ByVal lpName As String, lpcbName As Long, lpReserved As Long, ByVal lpClass As String, lpcbClass As Long, lpftLastWriteTime As FILETIME) As Long
说明
枚举指定项下方的子项
返回值
Long，零（ERROR_SUCCESS）表示成功。其他任何值都代表一个错误代码
参数表
参数 | 类型及说明
hKey | Long，一个已打开项的句柄，或者指定一个标准项名
dwIndex | Long，欲获取的子项的索引。第一个子项的索引编号为零
lpName | String，用于装载指定索引处项名的一个缓冲区
lpcbName | Long，指定一个变量，用于装载lpName缓冲区的实际长度（包括空字符）。一旦返回，它会设为实际装载到lpName缓冲区的字符数量
lpReserved | Long，未用，设为零
lpClass | String，项使用的类名。可以为vbNullString
lpcbClass | Long，用于装载lpClass缓冲区长度的一个变量。一旦返回，它会设为实际装载到缓冲区的字符数量
lpftLastWriteTime | FILETIME，枚举子项上一次修改的时间

Top


RegEnumValue
VB声明
Declare Function RegEnumValue Lib "advapi32.dll" Alias "RegEnumValueA" (ByVal hKey As Long, ByVal dwIndex As Long, ByVal lpValueName As String, lpcbValueName As Long, lpReserved As Long, lpType As Long, lpData As Byte, lpcbData As Long) As Long
说明
枚举指定项的值
返回值
Long，零（ERROR_SUCCESS）表示成功。其他任何值都代表一个错误代码
参数表
参数 | 类型及说明
hKey | Long，一个已打开项的句柄，或者指定一个标准项名
dwIndex | Long，欲获取值的索引。注意第一个值的索引编号为零
lpValueName | String，用于装载位于指定索引处值名的一个缓冲区
lpcbValueName | Long，用于装载lpValueName缓冲区长度的一个变量。一旦返回，它会设为实际载入缓冲区的字符数量
lpReserved | Long，未用；设为零
lpType | Long，用于装载值的类型代码的变量
lpData | Byte，用于装载值数据的一个缓冲区
lpcbData | Long，用于装载lpData缓冲区长度的一个变量。一旦返回，它会设为实际载入缓冲区的字符数量

Top


RegFlushKey
VB声明
Declare Function RegFlushKey Lib "advapi32.dll" Alias "RegFlushKey" (ByVal hKey As Long) As Long
说明
将对项和它的子项作出的改动实际写入磁盘
返回值
Long，零（ERROR_SUCCESS）表示成功。其他任何值都代表一个错误代码
参数表
参数 | 类型及说明
hKey | Long，欲刷新的一个项的句柄，或指定一个标准项名
注解
有些操作系统会将对注册表的修改延迟写入磁盘，以便保持系统的高性能。这个函数的作用就是确定将数据实际写入磁盘。但通常，应尽量避免使用这个函数，因为它可能严重影响一个应用程序的性能


RegGetKeySecurity
VB声明
Declare Function RegGetKeySecurity Lib "advapi32.dll" Alias "RegGetKeySecurity" (ByVal hKey As Long, ByVal SecurityInformation As Long, pSecurityDescriptor As SECURITY_DESCRIPTOR, lpcbSecurityDescriptor As Long) As Long
说明
获取与一个注册表项有关的安全信息
返回值
Long，零（ERROR_SUCCESS）表示成功。其他任何值都代表一个错误代码
参数表
参数 | 类型及说明
hKey | Long，指定一个项的句柄，或指定一个标准项名
SecurityInformation | Long，对请求信息进行描述的一个标记
pSecurityDescriptor | SECURITY_DESCRIPTOR，这个结构用于装载目标项的安全信息
lpcbSecurityDescriptor | Long，用于装载pSecurityDescriptor缓冲区长度的一个变量。一旦返回，它会设为实际装载到缓冲区的字节数量
适用平台
Windows NT


RegLoadKey
VB声明
Declare Function RegLoadKey Lib "advapi32.dll" Alias "RegLoadKeyA" (ByVal hKey As Long, ByVal lpSubKey As String, ByVal lpFile As String) As Long
说明
从以前用RegSaveKey函数创建的一个文件里装载注册表信息
返回值
Long，零（ERROR_SUCCESS）表示成功。其他任何值都代表一个错误代码
参数表
参数 | 类型及说明
hKey | Long，HKEY_LOCAL_MACHINE、HKEY_USERS或者用RegConnectRegistry创建的一个子项
lpSubKey | String，要创建的新子项的名字
lpFile | String，包含了注册信息的那个文件的名字


RegNotifyChangeKeyValue
VB声明
Declare Function RegNotifyChangeKeyValue Lib "advapi32.dll" Alias "RegNotifyChangeKeyValue" (ByVal hKey As Long, ByVal bWatchSubtree As Long, ByVal dwNotifyFilter As Long, ByVal hEvent As Long, ByVal fAsynchronus As Long) As Long
说明
注册表项或它的任何一个子项发生变化时，用这个函数提供一种通知机制
返回值
Long，零（ERROR_SUCCESS）表示成功。其他任何值都代表一个错误代码
参数表
参数 | 类型及说明
hKey | Long，要监视的一个项的句柄，或者指定一个标准项名
bWatchSubtree | Long，TRUE（非零）表示监视子项以及指定的项
dwNotifyFilter | Long，下述常数的一个或多个
 | REG_NOTIFY_CHANGE_NAME | 侦测注册表项名称的变化，以及侦测注册表的创建和删除事件
 | REG_NOTIFY_CHANGE_ATTRIBUTES | 侦测属性的变化
 | REG_NOTIFY_CHANGE_LAST_SET | 侦测上一次修改时间的变化
 | REG_NOTIFY_CHANGE_SECURITY | 侦测对安全特性的改动
hEvent | Long，一个事件的句柄。如fAsynchronus为False，则这里的设置会被忽略
fAsynchronus | Long，如果为零，那么除非侦测到一个变化，否则函数不会返回。否则这个函数会立即返回，而且在发生变化时触发由hEvent参数指定的一个事件
适用平台
Windows NT

Top


RegOpenKey
VB声明
Declare Function RegOpenKey Lib "advapi32.dll" Alias "RegOpenKeyA" (ByVal hKey As Long, ByVal lpSubKey As String, phkResult As Long) As Long
说明
打开一个现有的注册表项
返回值
Long，零（ERROR_SUCCESS）表示成功。其他任何值都代表一个错误代码
参数表
参数 | 类型及说明
hKey | Long，一个已打开项的句柄，或指定一个标准项名
lpSubKey | String，要打开的项名
phkResult | Long，指定一个变量，用于装载（保存）打开注册表项的一个句柄
注解
在NT环境下，这个函数会使用默认的安全参数


RegOpenKeyEx
VB声明
Declare Function RegOpenKeyEx Lib "advapi32.dll" Alias "RegOpenKeyExA" (ByVal hKey As Long, ByVal lpSubKey As String, ByVal ulOptions As Long, ByVal samDesired As Long, phkResult As Long) As Long
说明
打开一个现有的项。在win32下推荐使用这个函数
返回值
Long，零（ERROR_SUCCESS）表示成功。其他任何值都代表一个错误代码
参数表
参数 | 类型及说明
hKey | Long，一个已打开项的句柄，或指定一个标准项名
lpSubKey | String，欲打开注册表项的名字
ulOptions | Long，未用，设为零
samDesired | Long，带有前缀KEY_??的一个或多个常数。它们的组合描述了允许对这个项进行哪些操作
phkResult | Long，用于装载打开项的名字的一个变量


RegQueryInfoKey
VB声明
Declare Function RegQueryInfoKey Lib "advapi32.dll" Alias "RegQueryInfoKeyA" (ByVal hKey As Long, ByVal lpClass As String, lpcbClass As Long, lpReserved As Long, lpcSubKeys As Long, lpcbMaxSubKeyLen As Long, lpcbMaxClassLen As Long, lpcValues As Long, lpcbMaxValueNameLen As Long, lpcbMaxValueLen As Long, lpcbSecurityDescriptor As Long, lpftLastWriteTime As FILETIME) As Long
说明
获取与一个项有关的信息
返回值
Long，零（ERROR_SUCCESS）表示成功。其他任何值都代表一个错误代码。如一个缓冲区的长度不够，不能容下返回的数据，则函数会返回ERROR_MORE_DATA
参数表
参数 | 类型及说明
hKey | Long，一个已打开项的句柄，或指定一个标准项名
lpClass | String，指定一个字串，用于装载这个注册表项的类名
lpcbClass | Long，指定一个变量，用于装载lpClass缓冲区的长度。一旦返回，它会设为实际装载到缓冲区的字节数量
lpReserved | Long，未用，设为零
lpcSubKeys | Long，用于装载（保存）这个项的子项数量的一个变量
lpcbMaxSubKeyLen | Long，指定一个变量，用于装载这个项最长一个子项的长度。注意这个长度不包括空中止字符
lpcbMaxClassLen | Long，指定一个变量，用于装载这个项之子项的最长一个类名的长度。注意这个长度不包括空中止字符
lpcValues | Long，用于装载这个项的设置值数量的一个变量
lpcbMaxValueNameLen | Long，指定一个变量，用于装载这个项之子项的最长一个值名的长度。注意这个长度不包括空中止字符
lpcbMaxValueLen | Long，指定一个变量，用于装载容下这个项最长一个值数据所需的缓冲区长度
lpcbSecurityDescriptor | Long，装载值安全描述符长度的一个变量
lpftLastWriteTime | FILETIME，指定一个结构，用于容纳该项的上一次修改时间

Top


RegQueryValue
VB声明
Declare Function RegQueryValue Lib "advapi32.dll" Alias "RegQueryValueA" (ByVal hKey As Long, ByVal lpSubKey As String, ByVal lpValue As String, lpcbValue As Long) As Long
说明
取得指定项或子项的默认（未命名）值
返回值
Long，零（ERROR_SUCCESS）表示成功。其他任何值都代表一个错误代码
参数表
参数 | 类型及说明
hKey | Long，一个已打开项的句柄，或者指定一个标准项名
lpSubKey | String，要获取一个值的子项。可设为vbNullString，表示获取hKey的值
lpValue | String，用于容纳指定项值的一个字串
lpcbValue | Long，指定一个变量，用于装载lpValue缓冲区的长度。一旦返回，它会设为实际载入缓冲区的字节数量
注解
win32应用程序应该使用RegQueryValueEx。lpValue被定义成一个字串，以维持同win16的兼容性（在win16中，值全都是字串）


RegQueryValueEx
VB声明
Declare Function RegQueryValueEx Lib "advapi32.dll" Alias "RegQueryValueExA" (ByVal hKey As Long, ByVal lpValueName As String, ByVal lpReserved As Long, lpType As Long, lpData As Any, lpcbData As Long) As Long
说明
获取一个项的设置值
返回值
Long，零（ERROR_SUCCESS）表示成功。其他任何值都代表一个错误代码
参数表
参数 | 类型及说明
hKey | Long，一个已打开项的句柄，或者指定一个标准项名
lpValueName | String，要获取值的名字
lpReserved | Long，未用，设为零
lpType | Long，用于装载取回数据类型的一个变量
lpData | Any，用于装载指定值的一个缓冲区
lpcbData | Long，用于装载lpData缓冲区长度的一个变量。一旦返回，它会设为实际装载到缓冲区的字节数


RegReplaceKey
VB声明
Declare Function RegReplaceKey Lib "advapi32.dll" Alias "RegReplaceKeyA" (ByVal hKey As Long, ByVal lpSubKey As String, ByVal lpNewFile As String, ByVal lpOldFile As String) As Long
说明
用一个磁盘文件保存的信息替换注册表信息；并创建一个备份，在其中包含当前注册表信息
返回值
Long，零（ERROR_SUCCESS）表示成功。其他任何值都代表一个错误代码
参数表
参数 | 类型及说明
hKey | Long，一个已打开项的句柄，或指定一个标准项名
lpSubKey | String，要替换的子项名称。它必须直接位于HKEY_LOCAL_MACHINE 或 HKEY_USERS控制项的下方
lpNewFile | String，包含了注册表信息的一个文件的名字。这个文件是用RegSaveKey函数创建的
lpOldFile | String，对当前注册表信息进行备份的一个文件的名字


RegRestoreKey
VB声明
Declare Function RegRestoreKey Lib "advapi32.dll" Alias "RegRestoreKeyA" (ByVal hKey As Long, ByVal lpFile As String, ByVal dwFlags As Long) As Long
说明
从一个磁盘文件恢复注册表信息
返回值
Long，零（ERROR_SUCCESS）表示成功。其他任何值都代表一个错误代码
参数表
参数 | 类型及说明
hKey | Long，一个已打开项的句柄，或者指定一个标准项名
lpFile | String，要从中恢复注册表信息的一个文件的名字
dwFlags | Long，0表示进行常规恢复。REG_WHOLE_HIVE_VOLATILE表示临时恢复信息（系统重新启动时不保存下来）。在这种情况下，hKey必须引用HKEY_LOCAL_MACHINE 或 HKEY_USERS


RegSaveKey
VB声明
Declare Function RegSaveKey Lib "advapi32.dll" Alias "RegSaveKeyA" (ByVal hKey As Long, ByVal lpFile As String, lpSecurityAttributes As SECURITY_ATTRIBUTES) As Long
说明
将一个项以及它的所有子项都保存到一个磁盘文件
返回值
Long，零（ERROR_SUCCESS）表示成功。其他任何值都代表一个错误代码
参数表
参数 | 类型及说明
hKey | Long，一个已打开项的句柄，或指定一个标准项名
lpFile | String，要在其中保存注册表信息的一个磁盘文件的名字
lpSecurityAttributes | SECURITY_ATTRIBUTES，为保存的信息提供的安全信息。可设为NULL，表示采用默认的安全信息（变成ByVal As Long，并传递零值）


RegSetKeySecurity
VB声明
Declare Function RegSetKeySecurity Lib "advapi32.dll" Alias "RegSetKeySecurity" (ByVal hKey As Long, ByVal SecurityInformation As Long, pSecurityDescriptor As SECURITY_DESCRIPTOR) As Long
说明
设置指定项的安全特性
返回值
Long，零（ERROR_SUCCESS）表示成功。其他任何值都代表一个错误代码
参数表
参数 | 类型及说明
hKey | Long，指定一个项的句柄，或指定一个标准项名
SecurityInformation | Long，对要保存的信息进行描述的标志
pSecurityDescriptor | SECURITY_DESCRIPTOR，这个结构包含了注册表项新的安全特性设置
适用平台
Windows NT


RegSetValue
VB声明
Declare Function RegSetValue Lib "advapi32.dll" Alias "RegSetValueA" (ByVal hKey As Long, ByVal lpSubKey As String, ByVal dwType As Long, ByVal lpData As String, ByVal cbData As Long) As Long
说明
设置指定项或子项的默认值
返回值
Long，零（ERROR_SUCCESS）表示成功。其他任何值都代表一个错误代码
参数表
参数 | 类型及说明
hKey | Long，一个已打开项的句柄，或指定一个标准项名
lpSubKey | String，欲对它的值进行设置的一个子项的名字。如指定vbNullString，表示设置hKey的默认值。如指定的子项不存在，则会创建它
dwType | Long，必须是REG_SZ
lpData | String，新值
cbData | Long，指定lpData的长度，不包括空中止字符


RegSetValueEx
VB声明
Declare Function RegSetValueEx Lib "advapi32.dll" Alias "RegSetValueExA" (ByVal hKey As Long, ByVal lpValueName As String, ByVal Reserved As Long, ByVal dwType As Long, lpData As Any, ByVal cbData As Long) As Long
说明
设置指定项的值
返回值
Long，零（ERROR_SUCCESS）表示成功。其他任何值都代表一个错误代码
参数表
参数 | 类型及说明
hKey | Long，一个已打开项的句柄，或指定一个标准项名
lpValueName | String，要设置值的名字
Reserved | Long，未用，设为零
dwType | Long，要设置的数量类型
lpData | Any，包含数据的缓冲区中的第一个字节
cbData | Long，lpData缓冲区的长度


RegUnLoadKey
VB声明
Declare Function RegUnLoadKey Lib "advapi32.dll" Alias "RegUnLoadKeyA" (ByVal hKey As Long, ByVal lpSubKey As String) As Long
说明
卸载指定的项以及它的所有子项
返回值
Long，零（ERROR_SUCCESS）表示成功。其他任何值都代表一个错误代码
参数表
参数 | 类型及说明
hKey | Long，HKEY_LOCAL_MACHINE、HKEY_USERS或者用RegConnectRegistry打开的一个子项
lpSubKey | String，要卸载的子项的名字。必须是早先用RegLoadKey函数载入的


RemoveDirectory
VB声明
Declare Function RemoveDirectory Lib "kernel32" Alias "RemoveDirectoryA" (ByVal lpPathName As String) As Long
说明
删除指定目录
返回值
Long，非零表示成功，零表示失败。会设置GetLastError
参数表
参数 | 类型及说明
lpPathName | String，要删除的那个目录的名字
注解
在调用这个函数前，目录必须为空


SearchPath
VB声明
Declare Function SearchPath Lib "kernel32" Alias "SearchPathA" (ByVal lpPath As String, ByVal lpFileName As String, ByVal lpExtension As String, ByVal nBufferLength As Long, ByVal lpBuffer As String, ByVal lpFilePart As String) As Long
说明
查找指定文件
返回值
Long，装载到lpBuffer缓冲区的字符数。如缓冲区长度不足，则返回缓冲区必要的长度。零表示失败。会设置GetLastError
参数表
参数 | 类型及说明
lpPath | String，欲搜索的路径。如果为vbNullString，则采用windows搜索路径。参考OpenFile函数的OFSTRUCT结构中对OF_SEARCH标志搜索顺序的介绍
lpFileName | String，要查找的文件名
lpExtension | String，文件扩展名。必须用一个句点符号起头。如文件没有扩展名，或者lpFileName包括了扩展名，则设为vbNullString
nBufferLength | Long，lpBuffer字串的长度
lpBuffer | String，用于装载文件名的一个字串
lpFilePart | String，指定一个长整数变量，用于装载缓冲文件名部分的地址。在vb中不是特别有用
注解
参考GetFullPathName函数

Top


SetCurrentDirectory
VB声明
Declare Function SetCurrentDirectory Lib "kernel32" Alias "SetCurrentDirectoryA" (ByVal lpPathName As String) As Long
说明
设置当前目录
返回值
Long，非零表示成功，零表示失败。会设置GetLastError
参数表
参数 | 类型及说明
lpPathName | String，新当前目录的路径


SetEndOfFile
VB声明
Declare Function SetEndOfFile Lib "kernel32" Alias "SetEndOfFile" (ByVal hFile As Long) As Long
说明
针对一个打开的文件，将当前文件位置设为文件末尾
返回值
Long，非零表示成功，零表示失败。会设置GetLastError
参数表
参数 | 类型及说明
hFile | Long，指定一个文件句柄。文件的当前位置设为文件尾，文件会根据需要缩短
注解
如一个文件正作为打开文件映射对象的基准使用，则不要对其应用这个函数


SetFileAttributes
VB声明
Declare Function SetFileAttributes Lib "kernel32" Alias "SetFileAttributesA" (ByVal lpFileName As String, ByVal dwFileAttributes As Long) As Long
说明
设置文件属性
返回值
Long，非零表示成功，零表示失败。会设置GetLastError
参数表
参数 | 类型及说明
lpFileName | String，要设置其属性的文件名
dwFileAttributes | Long，带有FILE_ATTRIBUTE_??前缀的一个或多个常数


SetFilePointer
VB声明
Declare Function SetFilePointer Lib "kernel32" Alias "SetFilePointer" (ByVal hFile As Long, ByVal lDistanceToMove As Long, lpDistanceToMoveHigh As Long, ByVal dwMoveMethod As Long) As Long
说明
在一个文件中设置当前的读写位置
返回值
Long，返回一个新位置，它采用从文件起始处开始算起的一个字节偏移量。HFILE_ERROR意味着出错。会设置GetLastError
参数表
参数 | 类型及说明
hFile | Long，系统文件句柄
lDistanceToMove | Long，字节偏移量
lpDistanceToMoveHigh | Long，指定一个长整数变量，其中包含了要使用的一个高双字偏移。可设为零（将声明变为ByVal），表示只使用lDistanceToMove 原文：A long variable containing a high double word offset to use. May be zero (change declaration to ByVal) to use only lDistanceToMove.
dwMoveMethod | Long，下述常数之一
 | FILE_BEGIN | lOffset将新位置设为从文件起始处开始算的起的一个偏移
 | FILE_CURRENT | lOffset将新位置设为从当前位置开始计算的一个偏移
 | FILE_END | lOffset将新位置设为从文件尾开始计算的一个偏移
注解
这个函数与vb的seek语句类似。不要将函数用于通过vb的open命令打开的文件。利用这个函数，可以处理那些长度大于2＾64字节的大型文件

Top


SetFileTime
VB声明
Declare Function SetFileTime Lib "kernel32" Alias "SetFileTime" (ByVal hFile As Long, lpCreationTime As FILETIME, lpLastAccessTime As FILETIME, lpLastWriteTime As FILETIME) As Long
说明
设置文件的创建、访问及上次修改时间
返回值
Long，非零表示成功，零表示失败。会设置GetLastError
参数表
参数 | 类型及说明
hFile | Long，系统文件句柄
lpCreationTime | FILETIME，文件的创建时间
lpLastAccessTime | FILETIME，文件上一次访问的时间
lpLastWriteTime | FILETIME，文件最近一次修改的时间


SetHandleCount
VB声明
Declare Function SetHandleCount Lib "kernel32" Alias "SetHandleCount" (ByVal wNumber As Long) As Long
说明
这个函数不必在win32下使用；即使使用，也不会有任何效果
This function is not necessary under Win32 and has no effect.


SetVolumeLabel
VB声明
Declare Function SetVolumeLabel Lib "kernel32" Alias "SetVolumeLabelA" (ByVal lpRootPathName As String, ByVal lpVolumeName As String) As Long
说明
设置一个磁盘的卷标（Label）
返回值
Long，TRUE（非零）表示成功，否则返回零。会设置GetLastError
参数表
参数 | 类型及说明
lpRootPathName | String，磁盘卷的根路径
lpVolumeName | String，指定新卷标。用vbNullString指示删除当前卷名


SystemTimeToFileTime
VB声明
Declare Function SystemTimeToFileTime Lib "kernel32" Alias "SystemTimeToFileTime" (lpSystemTime As SYSTEMTIME, lpFileTime As FILETIME) As Long
说明
根据一个FILETIME结构的内容，载入一个SYSTEMTIME结构
返回值
Long，非零表示成功，零表示失败。会设置GetLastError
参数表
参数 | 类型及说明
lpSystemTime | SYSTEMTIME，包含了系统时间信息的一个结构
lpFileTime | FILETIME，用于装载文件时间的一个结构


UnlockFile
VB声明
Declare Function UnlockFile Lib "kernel32" Alias "UnlockFile" (ByVal hFile As Long, ByVal dwFileOffsetLow As Long, ByVal dwFileOffsetHigh As Long, ByVal nNumberOfBytesToUnlockLow As Long, ByVal nNumberOfBytesToUnlockHigh As Long) As Long
说明
解除对一个文件的锁定
返回值
Long，非零表示成功，零表示失败。会设置GetLastError
参数表
参数 | 类型及说明
hFile | Long，要解锁的文件的句柄
dwFileOffsetLow | Long，要解锁文件区域起始位置的低32位地址
dwFileOffsetHigh | Long，要解锁文件区域起始位置的高32位地址
nNumberOfBytesToUnlockLow | Long，锁定区域中字符数量的低32位值
nNumberOfBytesToUnlockHigh | Long，锁定区域中字符数量的高32位值
注解
解锁的文件区域必须与以前锁定时设置的区域完全相符。文件关闭前，应用程序应确定已解除了对任何区域的锁定。参考LockFile了解进一步的情况


UnlockFileEx
VB声明
Declare Function UnlockFileEx Lib "kernel32" Alias "UnlockFileEx" (ByVal hFile As Long, ByVal dwReserved As Long, ByVal nNumberOfBytesToUnlockLow As Long, ByVal nNumberOfBytesToUnlockHigh As Long, lpOverlapped As OVERLAPPED) As Long
说明
解除对一个文件的锁定
返回值
Long，非零表示成功，零表示失败。会设置GetLastError
参数表
参数 | 类型及说明
hFile | Long，要解锁的文件的句柄
dwReserved | Long，未用；设为零
nNumberOfBytesToUnlockLow | Long，锁定区域中字符数量的低32位值
nNumberOfBytesToUnlockHigh | Long，锁定区域中字符数量的高32位值
lpOverlapped | OVERLAPPED，包含了文件中相对于解锁区域起始处的偏移量
注解
解锁的文件区域必须与以前锁定时设置的区域完全相符。文件关闭前，应用程序应确定已解除了对任何区域的锁定。参考LockFileEx了解进一步的情况


UnmapViewOfFile
VB声明
Declare Function UnmapViewOfFile& Lib "kernel32" (ByVal lpBaseAddress As Long)
说明
在当前应用程序的内存地址空间解除对一个文件映射对象的映射
返回值
Long，非零表示成功，零表示失败。会设置GetLastError
参数表
参数 | 类型及说明
lpBaseAddress | Long，指定要解除映射的一个文件映射的基准地址。这个地址是早先用MapViewOfFile函数获得的
注解
在vb的api文本查看器里复制的声明如下，请注意参数类型不同 Declare Function UnmapViewOfFile Lib "kernel32" Alias "UnmapViewOfFile" (lpBaseAddress As Any) As Long


VerFindFile
VB声明
Declare Function VerFindFile Lib "version.dll" Alias "VerFindFileA" (ByVal uFlags As Long, ByVal szFileName As String, ByVal szWinDir As String, ByVal szAppDir As String, ByVal szCurDir As String, lpuCurDirLen As Long, ByVal szDestDir As String, lpuDestDirLen As Long) As Long
说明
用这个函数决定一个文件应安装到哪里
返回值
Long，下述值之一：
VFF_CURNEDEST | 指出文件现有版本不应在由szDestDir参数指定的目录中，那个目录是由函数建议安装新版本的地方
VFF_FILEINUSE | 指出现有文件当时正在使用，而且不要在此时删除
VFF_BUFFTOOSMALL | 指出szDestDir或szCurDir缓冲区的一个或两个都太小，不足以容下目录名
参数表
参数 | 类型及说明
uFlags | Long，目前只定义了VFFF_ISSHAREDFILE，它指出文件可由多个应用程序共享。如指定了这个标志，该函数会建议将文件安装到windows或系统目录。如这个参数为零，则函数会建议将文件安装到应用程序目录
szFileName | String，要安装的文件名。注意这个字串不应包括文件的路径
szWinDir | String，设为windows目录。目录名称是用GetWindowsDirectory函数取得的
szAppDir | String，应用程序以及所有相关文件的安装目录的完整路径名称
szCurDir | String，指定一个字串缓冲区，用于容纳包含了文件现有版本的目录。如文件版本不存在，则在缓冲区中载入源文件的目录。注意必须为这个缓冲区至少分配MAX_PATH个字符的空间
lpuCurDirLen | Long，szCurDir缓冲区的长度。这个函数会设为实际装载到缓冲区的字符数量
szDestDir | String，指定一个缓冲区，用于装载应在其中安装新文件的一个目录名。注意至少要为这个缓冲区分配MAX_PATH个字符的空间
lpuDestDirLen | Long，szDestDir缓冲区的长度。这个变量会设为实际装载到缓冲区的字符数量

Top


VerInstallFile
VB声明
Declare Function VerInstallFile Lib "version.dll" Alias " VerInstallFileA" (ByVal uFlags As Long, ByVal szSrcFileName As String, ByVal szDestFileName As String, ByVal szSrcDir As String, ByVal szDestDir As String, ByVal szCurDir As String, ByVal szTmpFile As String, lpuTmpFileLen As Long) As Long
说明
用这个函数安装一个文件。它利用由VerFindFile函数提供的信息决定将文件安装到哪里。这个函数首先会比较两个文件的版本标记。如源文件是最新和兼容的版本，则将源文件复制成目标目录的一个临时文件——如文件处于压缩状态，则同时将其解压。随后，将文件的现有版本删除掉，再对临时文件进行重名处理，使符合目标文件名
返回值
Long，返回一个整数，其中包含了VerInstallFile结果常数表里列出的一个或多个常数的组合
参数表
参数 | 类型及说明
uFlags | Long，下述常数值的一个组合：
 | VIFF_FORCEINSTALL | 在不进行版本检查的情况下强制安装源文件
 | VIFF_DONTDELETEOLD | 如文件的现有版本不在目标目录，则不将其删除；如果它在目标目录，就用新文件将其改写（覆盖）
szSrcFileName | String，指定要安装文件的名字。注意其中不应包含文件的路径名
szDestFileName | String，指定文件安装好后应得到的一个正式名称。这个名称与szSrcFileName通常都是相同的
szSrcDir | String，指定源目录。新版文件将从这里复制到目标目录
szDestDir | String，指定目标目录。新版文件将从源目录复制到这里。通常为这个参数使用由VerFindFile函数返回的szDestDir缓冲区
szCurDir | String，包含了文件当前版本的一个目录。通常将由VerFindFile函数返回的szCurDir缓冲区用于这个参数。如字串为空，则表明系统中不存在文件文件的早期版本
szTmpFile | String，用于装载源文件一个临时副本名称的缓冲区。注意必须至少为其分配MAX_PATH个字符的空间
lpuTmpFileLen | Long，szTmpFile缓冲区的长度。这个变量会设为装载到缓冲区的实际字符数，其中包括中止用的NULL字符。如指定了VIFF_FORCEINSTALL，且szTmpFile不为零，则临时文件会被更名为由szSrcFileName参数指定的名字

Top


VerLanguageName
VB声明
Declare Function VerLanguageName Lib "kernel32" Alias "VerLanguageNameA" (ByVal wLang As Long, ByVal szLang As String, ByVal nSize As Long) As Long
说明
这个函数能根据16位语言代码获取一种语言的名称。利用版本资源中的语言代码，可以判断出一个文件编写时采用的语言格式。表格“win32支持的语言代码”对win32支持的各种语言代码进行了总结
返回值
Long，装载到szLang缓冲区的字符数量。如缓冲区的容量不够，不能容下完整的名称，则函数返回需要的缓冲区大小。零表示出错
参数表
参数 | 类型及说明
wLang | Long，语言ID
szLang | String，用于装载指定语言文本名称的一个缓冲区。这个缓冲区至少应预初始化成nSize+1个字节的长度
nSize | Long，szLang缓冲区的大小


VerQueryValue
VB声明
Declare Function VerQueryValue& Lib "version.dll" Alias "VerQueryValueA" (pBlock As Byte, ByVal lpSubBlock As String, lplpBuffer As Long, puLen As Long)
说明
这个函数用于从版本资源中获取信息。调用这个函数前，必须先用GetFileVersionInfo函数获取版本资源信息。这个函数会检查资源信息，并将需要的数据复制到一个缓冲区里
返回值
Long，TRUE（非零）表示成功，如请求的信息不存在，或pBlock不属于有效版本信息，那就返回一个零
参数表
参数 | 类型及说明
pBlock | Byte，指定一个内存块第一个字节的地址。这个内存块包含了由GetFileVersionInfo函数取回的版本数据信息
lpSubBlock | String，下述值之一：
 | "\" | 获取文件的VS_FIXEDFILEINFO结构
 | "\VarFileInfo\Translation" | 获取文件的翻译表
 | "\StringFileInfo\...." | 获取文件的字串信息。参考注解
lplpBuffer | Long，指定一个Long变量的地址，该变量用于装载一个缓冲区的地址。请求的版本信息最终会装载到那个缓冲区里
puLen | Long，指定由lplpBuffer参数引用的数据值的长度，以字节为单位
注解
如lplpBuffer参数为"\StringFileInfo\...."，缓冲区里就会载入一个整数数组。每一对整数都代表一种语言和代码页，它们描绘了可用的字串信息。通过用下面这三个部分指定一个字串，从而获得StringFileInfo字串数据："\StringFileInfo\languagecodepage\stringname"，其中languagecodepage（语言代码页）是采用字串形式的一个8字符十六进制数字。如翻译表中的语言代码页条目是&H04090000，那么这个字串就应该是"04090000"。stringname（字串名）指定的是一个字串名。这个参数的一个例子如下： "\StringFileInfo\04090000\CompanyName"
其他
从vb的api文本查看器复制的声明如下： Declare Function VerQueryValue Lib "version.dll" Alias "VerQueryValue" (pBlock As Any, ByVal lpSubBlock As String, ByVal lplpBuffer As Long, puLen As Long) As Long

Top


WriteFile
VB声明
Declare Function WriteFile Lib "kernel32" Alias "WriteFile" (ByVal hFile As Long, lpBuffer As Any, ByVal nNumberOfBytesToWrite As Long, lpNumberOfBytesWritten As Long, lpOverlapped As OVERLAPPED) As Long
说明
将数据写入一个文件。该函数比lwrite函数要灵活的多。也可将这个函数应用于对通信设备、管道、套接字以及邮槽的处理
返回值
Long，TRUE（非零）表示成功，否则返回零。会设置GetLastError
参数表
参数 | 类型及说明
hFile | Long，一个文件的句柄
lpBuffer | Any，要写入的一个数据缓冲区
nNumberOfBytesToWrite | Long，要写入数据的字节数量。如写入零字节，表示什么都不写入，但会更新文件的“上一次修改时间”。针对位于远程系统的命名管道，限制在65535个字节以内
lpNumberOfBytesWritten | Long，实际写入文件的字节数量
lpOverlapped | OVERLAPPED，倘若在指定FILE_FLAG_OVERLAPPED的前提下打开文件，这个参数就必须引用一个特殊的结构。那个结构定义了一次异步写操作。否则，该参数应置为空（将声明变为ByVal As Long，并传递零值）
注解
并不是每种操作系统都支持在任何类型的设备上进行异步操作。windows 95不支持对磁盘文件的重叠读取操作


WriteFileEx
VB声明
Declare Function WriteFileEx Lib "kernel32" Alias "WriteFileEx" (ByVal hFile As Long, lpBuffer As Any, ByVal nNumberOfBytesToWrite As Long, lpOverlapped As OVERLAPPED, ByVal lpCompletionRoutine As Long) As Long
说明
与WriteFile类似，只是它只能用于异步写操作，并包括了一个完整的回调
返回值
Long，非零表示成功，否则返回零。会设置GetLastError
参数表
参数 | 类型及说明
hFile | Long，文件的句柄
lpBuffer | Any，指定一个缓冲区，其中包含了要写入的数据。除非写操作完成，否则不要访问这个缓冲区
nNumberOfBytesToWrite | Long，要写入数据的字节量
lpOverlapped | OVERLAPPED，定义了一次异步写操作的结构。使用这个函数时，结构中的hEvent字段会被忽略
lpCompletionRoutine | Long，回调函数的值
注解
并不是每种操作系统都支持在任何类型的设备上进行异步操作。windows 95不支持对磁盘文件的重叠读取操作


WritePrivateProfileSection
VB声明
Declare Function WritePrivateProfileSection Lib "kernel32" Alias "WritePrivateProfileSectionA" (ByVal lpAppName As String, ByVal lpString As String, ByVal lpFileName As String) As Long
说明
为一个初始化文件（.ini）中指定的小节设置所有项名和值
返回值
Long，非零表示成功，零表示失败。会设置GetLastError
参数表
参数 | 类型及说明
lpAppName | String，要设置的小节。这个字串不区分大小写
lpString | String，项和值字串的一个列表。每个字串都用一个NULL字符分隔，最后一个字串后面用两个NULL表示中止。如lpAppName指定的小节不存在，则用那个名字新建一个小节，并将其追加到初始化文件的最后。如果存在，则当前的所有项名和值都会被这个缓冲区中指定的数据取代
lpFileName | String，初始化文件的名字。如指定了一个完整路径，而且文件不存在，就会产生错误。如只指定了文件名，而且文件不存在，就在当前的windows目录中创建它


WritePrivateProfileString
VB声明
Declare Function WritePrivateProfileString& Lib "kernel32" Alias "WritePrivateProfileStringA" (ByVal lpApplicationName As String, ByVal lpKeyName As Any, ByVal lpString As String, ByVal lpFileName As String)
说明
在初始化文件指定小节内设置一个字串
返回值
Long，非零表示成功，零表示失败。会设置GetLastError
参数表
参数 | 类型及说明
lpApplicationName | String，要在其中写入新字串的小节名称。这个字串不区分大小写
lpKeyName | Any，要设置的项名或条目名。这个字串不区分大小写。用vbNullString可删除这个小节的所有设置项
lpString | String，指定为这个项写入的字串值。用vbNullString表示删除这个项现有的字串
lpFileName | String，初始化文件的名字。如果没有指定完整路径名，则windows会在windows目录查找文件。如果文件没有找到，则函数会创建它
其他
在vb的api文本查看器里复制的声明如下： Declare Function WritePrivateProfileString Lib "kernel32" Alias "WritePrivateProfileStringA" (ByVal lpApplicationName As String, ByVal lpKeyName As Any, ByVal lpString As Any, ByVal lpFileName As String) As Long


WriteProfileSection
VB声明
Declare Function WriteProfileSection Lib "kernel32" Alias "WriteProfileSectionA" (ByVal lpAppName As String, ByVal lpString As String) As Long
说明
为Win.ini初始化文件中一个指定的小节设置所有项名和值
返回值
Long，非零表示成功，零表示失败。会设置GetLastError
参数表
参数 | 类型及说明
lpAppName | String，要设置的小节。这个字串不区分大小写
lpString | String，项和值字串的一个列表。每个字串都用一个NULL字符分隔，最后一个字串后面用两个NULL表示中止。如lpAppName指定的小节不存在，则用那个名字新建一个小节，并将其追加到初始化文件的最后。如果存在，则当前的所有项名和值都会被这个缓冲区中指定的数据取代
注解
注意对Win.ini文件的改动可能影响其他应用程序。如修改了正由其他应用程序使用的小节，一定要向所有窗口都发送一条WM_WININICHANGE消息


WriteProfileString
VB声明
Declare Function WriteProfileString Lib "kernel32" Alias "WriteProfileStringA" (ByVal lpszSection As String, ByVal lpszKeyName As String, ByVal lpszString As String) As Long
说明
在Win.ini初始化文件指定小节内设置一个字串
返回值
Long，非零表示成功，零表示失败。会设置GetLastError
参数表
参数 | 类型及说明
lpszSection | String，指定要在其中写入新串的小节。如尚不存在，会创建这个小节。这个字串不区分大小写
lpszKeyName | String，要设置的项名或条目名。这个字串不区分大小写。用vbNullString可删除这个小节的所有设置项
lpszString | String，指定为这个项写入的字串值。用vbNullString表示删除这个项现有的字串
注解
注意对Win.ini文件的改动可能影响其他应用程序。如修改了正由其他应用程序使用的小节，一定要向所有窗口都发送一条WM_WININICHANGE消息


WNetAddConnection
VB声明
Declare Function WNetAddConnection Lib "mpr.dll" Alias "WNetAddConnectionA" (ByVal lpszNetPath As String, ByVal lpszPassword As String, ByVal lpszLocalName As String) As Long
说明
创建同一个网络资源的永久性连接
返回值
Long，零表示成功。会设置GetLastError。如GetLastError是ERROR_EXTENDED_ERROR，则可用WNetGetLastError取得额外的错误信息
参数表
参数 | 类型及说明
lpszNetPath | String，要连接的网络名
lpszPassword | String，可选的一个密码。如为vbNullString，表示采用当前用户的默认密码。如为一个空字串，则不用任何密码
lpszLocalName | String，资源的本地名称。（例如，F: 和 LPT1:）


WNetAddConnection2
VB声明
Declare Function WNetAddConnection2 Lib "mpr.dll" Alias "WNetAddConnection2A" (lpNetResource As NETRESOURCE, ByVal lpPassword As String, ByVal lpUserName As String, ByVal dwFlags As Long) As Long
说明
创建同一个网络资源的连接
返回值
Long，零表示成功。会设置GetLastError。如GetLastError是ERROR_EXTENDED_ERROR，则可用WNetGetLastError取得额外的错误信息
参数表
参数 | 类型及说明
lpNetResource | NETRESOURCE，在这个结构中设置了下述字段，对要连接的网络资源进行了定义：dwType， lpLocalName （可为 vbNullString）， lpRemoteName， lpProvider （设为 vbNullString 表示用默认提供者）。该结构的其他所有变量都会被忽略
lpPassword | String，可选的一个密码。如为vbNullString，表示采用当前用户的默认密码。如为一个空字串，则不用任何密码
lpUserName | String，用于连接的用户名。如为vbNullString，表示使用当前用户
dwFlags | Long，设为零；或指定常数CONNECT_UPDATE_PROFILE，表示创建永久性连接


WNetAddConnection3
VB声明
Declare Function WNetAddConnection3& Lib "mpr.dll" Alias "WNetAddConnection3A" (ByVal hwnd As Long, lpNetResource As NETRESOURCE, ByVal lpPassword As String, ByVal lpUserName As String, ByVal dwFlags As Long)
说明
创建同一个网络资源的连接。这个函数与WNetAddConnection2类似，只是它允许我们为这个函数显示的对话框指定一个物主窗口
返回值
Long，
参数表
参数 | 类型及说明
hwnd | Long，指定一个窗口句柄，用作本函数创建的对话框的父窗口
lpNetResource | NETRESOURCE，在这个结构中设置了下述字段，对要连接的网络资源进行了定义：dwType， lpLocalName （可为 vbNullString）， lpRemoteName， lpProvider （设为 vbNullString 表示用默认提供者）。该结构的其他所有变量都会被忽略
lpPassword | String，可选的一个密码。如为vbNullString，表示采用当前用户的默认密码。如为一个空字串，则不用任何密码
lpUserName | String，用于连接的用户名。如为vbNullString，表示使用当前用户
dwFlags | Long，设为零；或指定常数CONNECT_UPDATE_PROFILE，表示创建永久性连接


WNetCancelConnection
VB声明
Declare Function WNetCancelConnection Lib "mpr.dll" Alias "WNetCancelConnectionA" (ByVal lpszName As String, ByVal bForce As Long) As Long
说明
结束一个网络连接
返回值
Long，零表示成功。会设置GetLastError。如GetLastError是ERROR_EXTENDED_ERROR，则可用WNetGetLastError取得额外的错误信息
参数表
参数 | 类型及说明
lpszName | String，已连接资源的远程名称或本地名称
bForce | Long，如为TRUE，表示断开连接（即使连接的资源上正有打开的文件或作业）


WNetCancelConnection2
VB声明
Declare Function WNetCancelConnection2 Lib "mpr.dll" Alias "WNetCancelConnection2A" (ByVal lpName As String, ByVal dwFlags As Long, ByVal fForce As Long) As Long
说明
结束一个网络连接
返回值
Long，零表示成功。会设置GetLastError。如GetLastError是ERROR_EXTENDED_ERROR，则可用WNetGetLastError取得额外的错误信息
参数表
参数 | 类型及说明
lpszName | String，已连接资源的远程名称或本地名称
dwFlags | Long，设为零或CONNECT_UPDATE_PROFILE。如为零，而且建立的是永久性连接，则在windows下次重新启动时仍会重新连接
fForce | Long，如为TRUE，表示强制断开连接（即使连接的资源上正有打开的文件或作业）


WNetCloseEnum
VB声明
Declare Function WNetCloseEnum Lib "mpr.dll" Alias "WNetCloseEnum" (ByVal hEnum As Long) As Long
说明
结束一次枚举操作
返回值
Long，零表示成功。会设置GetLastError。如GetLastError是ERROR_EXTENDED_ERROR，则可用WNetGetLastError取得额外的错误信息
参数表
参数 | 类型及说明
hEnum | Long，由 WNetOpenEnum函数返回的一个枚举句柄


WNetConnectionDialog
VB声明
Declare Function WNetConnectionDialog Lib "mpr.dll" Alias "WNetConnectionDialog" (ByVal hwnd As Long, ByVal dwType As Long) As Long
说明
启动一个标准对话框，以便建立同网络资源的连接
返回值
Long，零表示成功。如用户取消了操作，则返回-1。会设置GetLastError。如GetLastError是ERROR_EXTENDED_ERROR，则可用WNetGetLastError取得额外的错误信息
参数表
参数 | 类型及说明
hwnd | Long，指定要成为对话框父窗口的一个窗口的句柄
dwType | Long，设成RESOURCETYPE_DISK，浏览磁盘资源


WNetDisconnectDialog
VB声明
Declare Function WNetDisconnectDialog Lib "mpr.dll" Alias "WNetDisconnectDialog" (ByVal hwnd As Long, ByVal dwType As Long) As Long
说明
启动一个标准对话框，以便断开同网络资源的连接
返回值
Long，零表示成功。如用户取消了操作，则返回-1。会设置GetLastError。如GetLastError是ERROR_EXTENDED_ERROR，则可用WNetGetLastError取得额外的错误信息
参数表
参数 | 类型及说明
hwnd | Long，指定要成为对话框父窗口的一个窗口的句柄
dwType | Long，设成RESOURCETYPE_DISK 或 RESOURCETYPE_PRINT，决定要断开的是磁盘还是打印机资源


WNetEnumResource
VB声明
Declare Function WNetEnumResource Lib "mpr.dll" Alias "WNetEnumResourceA" (ByVal hEnum As Long, lpcCount As Long, lpBuffer As Any, lpBufferSize As Long) As Long
说明
枚举网络资源
返回值
Long，零表示成功。ERROR_NO_MORE_ITEMS表示不剩下可以枚举的条目。ERROR_MORE_DATA表示条目不能装入lpBuffer。会设置GetLastError。如GetLastError是ERROR_EXTENDED_ERROR，则可用WNetGetLastError取得额外的错误信息
参数表
参数 | 类型及说明
hEnum | Long，从WNetOpenEnum函数返回的一个句柄
lpcCount | Long，最初设为要枚举的最大资源数量；或设为-1，表示枚举尽可能多的资源。一旦返回，就会设为实际枚举的资源数量
lpBuffer | Any，通常是一个字节缓冲区的首字节。该缓冲区装载了枚举信息（可按引用声明为Byte）
lpBufferSize | Long，以字节为单位指定lpBuffer数组的长度。如缓冲区不够大，则设为需要的缓冲区长度
注解
枚举网络条目时，最好用vb一次枚举一个资源。尽量不要使用这个函数同时枚举许多网络资源的功能


WNetGetConnection
VB声明
Declare Function WNetGetConnection Lib "mpr.dll" Alias "WNetGetConnectionA" (ByVal lpszLocalName As String, ByVal lpszRemoteName As String, cbRemoteName As Long) As Long
说明
获取本地或已连接的一个资源的网络名称
返回值
Long，零表示成功。会设置GetLastError。如GetLastError是ERROR_EXTENDED_ERROR，则可用WNetGetLastError取得额外的错误信息
参数表
参数 | 类型及说明
lpszLocalName | String，本地设备的名字
lpszRemoteName | String，指定一个字串缓冲区，用于装载设备的资源名称
cbRemoteName | Long，lpszRemoteName缓冲区的字符数量。如缓冲区不够大，则设为需要的缓冲区长度


WNetGetLastError
VB声明
Declare Function WNetGetLastError Lib "mpr.dll" Alias "WNetGetLastErrorA" (lpError As Long, ByVal lpErrorBuf As String, ByVal nErrorBufSize As Long, ByVal lpNameBuf As String, ByVal nNameBufSize As Long) As Long
说明
获取网络错误的扩展错误信息
返回值
Long，零表示成功。ERROR_INVALID_ADDRESS表示缓冲区无效
参数表
参数 | 类型及说明
lpError | Long，指定一个变量，用于装载网络错误代码。具体的代码由网络供应商决定
lpErrorBuf | String，指定一个字串缓冲区，用于装载网络错误的说明
nErrorBufSize | Long，lpErrorBuf缓冲区包含的字符数量
lpNameBuf | String，用于装载网络供应商名字的字串缓冲区
nNameBufSize | Long，lpNameBuf缓冲区的字符数量


WNetGetUniversalName
VB声明
Declare Function WNetGetUniversalName Lib "mpr" Alias "WNetGetUniversalNameA" (ByVal lpLocalPath As String, ByVal dwInfoLevel As Long, lpBuffer As Any, lpBufferSize As Long) As Long
说明
获取网络中一个文件的远程名称以及/或者UNC（统一命名规范）名称。例如，假设一个已连接的远程驱动器是\\othersystem\CDrive，它对应的本地驱动器是F:，而且在它的子目录temp中包含了文件xyz.doc。那么运算结果如下：LocalPath xyz.doc 或 f:\temp\xyz.doc（或者文件的任何相对路径名） UNC 名称： \\othersystem\CDrive\temp\xyz.doc 连接名称： \\othersystem\CDrive 剩余名称： \temp\xyz.doc 它们分别对应于由这个函数装载的REMOTE_NAME_INFO结构的字段，对该结构的定义如下： Type REMOTE_NAME_INFO pUniversalName As Long pConnectionName As Long pRemainingPath As Long End Type
返回值
Long，零表示成功。会设置GetLastError。如GetLastError是ERROR_EXTENDED_ERROR，则可用WNetGetLastError取得额外的错误信息
参数表
参数 | 类型及说明
lpLocalPath | String，磁盘文件的名字
dwInfoLevel | Long，下述常数之一：
 | UNIVERSAL_NAME_INFO_LEVEL | 只设置pUniversalName字段
 | REMOTE_NAME_INFO_LEVEL | 设置REMOTE_NAME_INFO结构中的所有三个字段
lpBuffer | Any，指定用于装载UNC信息的一个缓冲区。缓冲区起点与一个REMOTE_NAME_INFO结构对应
lpBufferSize | Long，以字节为单位指定lpBuffer缓冲区的长度。如缓冲区不够大，则设为需要的缓冲区长度

Top


WNetGetUser
VB声明
Declare Function WNetGetUser Lib "mpr.dll" Alias "WNetGetUserA" (ByVal lpName As String, ByVal lpUserName As String, lpnLength As Long) As Long
说明
获取一个网络资源用以连接的名字
返回值
Long，零表示成功。会设置GetLastError。如GetLastError是ERROR_EXTENDED_ERROR，则可用WNetGetLastError取得额外的错误信息
参数表
参数 | 类型及说明
lpName | String，指定已连接资源的远程名称或本地名称。用vbNullString获取当前用户的名字
lpUserName | String，用于装载用户名的一个字串缓冲区
lpnLength | Long，lpUserName缓冲区的长度。如缓冲区不够大，则自动设为需要的缓冲区长度


WNetOpenEnum
VB声明
Declare Function WNetOpenEnum Lib "mpr.dll" Alias "WNetOpenEnumA" (ByVal dwScope As Long, ByVal dwType As Long, ByVal dwUsage As Long, lpNetResource As NETRESOURCE, lphEnum As Long) As Long
说明
启动对网络资源进行枚举的过程。这个函数会返回由WNetEnumResource函数用于枚举资源所用的一个句柄
返回值
Long，零表示成功。会设置GetLastError。如GetLastError是ERROR_EXTENDED_ERROR，则可用WNetGetLastError取得额外的错误信息
参数表
参数 | 类型及说明
dwScope | Long，指定要枚举的资源范围。可设为下述常数之一：
 | RESOURCE_CONNECTED | 枚举已连接的资源（忽略dwUsage）
 | RESOURCE_GLOBALNET | 枚举所有资源
 | RESOURCE_REMEMBERED | 只枚举永久性连接
dwType | Long，下述常数之一
 | RESOURCE_ANY | 枚举所有类型的网络资源
 | RESOURCE_DISK | 枚举磁盘资源
 | RESOURCE_PRINT | 枚举打印资源
dwUsage | Long，可设为零，表示枚举所有资源；或设为下述常数的一个或两个：
 | RESOURCEUSAGE_CONNECTABLE | 只枚举那些能够连接的资源
 | RESOURCEUSAGE_CONTAINER | 只枚举包含了其他资源的资源
lpNetResource | NETRESOURCE，这个结构指定了一个容器资源。该函数会枚举包含于这里指定的某个指定资源内的资源。如设为NULL（把声明变成ByVal As Long），那么函数会枚举顶级网络资源。倘若在dwScope参数里没有指定RESOURCE_GLOBALNET，那么必须为NULL
lphEnum | Long，指定一个变量，用于装载一个枚举句柄。该句柄由WNetEnumResource函数使用。必须用WNetCloseEnum函数将其清除

Top


AppendMenu
VB声明
Declare Function AppendMenu Lib "user32" Alias "AppendMenuA" (ByVal hMenu As Long, ByVal wFlags As Long, ByVal wIDNewItem As Long, ByVal lpNewItem As Any) As Long
说明
在指定的菜单里添加一个菜单项
返回值
Long，非零表示成功，零表示失败。会设置GetLastError
参数表
参数 | 类型及说明
hMenu | Long，菜单句柄
wFlags | Long，参考ModifyMenu函数中的菜单常数标志定义表，其中列出了允许使用的所有常数
wIDNewItem | Long，指定菜单条目的新命令ID。如果在wFlags参数中指定了MF_POPUP字段，那么这应该是指向一个弹出式菜单的句柄
lpNewItem | String（相应的vb声明见注解），如果在wFlags参数中指定了MF_STRING标志，这就代表在菜单中设置的字串。如设置了MF_BITMAP标志，这就代表一个Long型变量，其中包含了一个位图句柄。如设置了MF_OWNERDRAW，这个值就会包括在DRAWITEMSTRUCT和MEASUREITEMSTRUCT结构中，在条目需要重画的时候由windows发送出去
注解
Declare Function AppendMenu& Lib "user32" Alias "AppendMenuA" (ByVal hMenu As Long, ByVal wFlags As Long, ByVal wIDNewItem As Long, ByVal lpNewItem As String)

Top


CheckMenuItem
VB声明
Declare Function CheckMenuItem Lib "user32" Alias "CheckMenuItem" (ByVal hMenu As Long, ByVal wIDCheckItem As Long, ByVal wCheck As Long) As Long
说明
复选或撤消复选指定的菜单条目
返回值
Long，如条目的前一个状态是“复选”，就返回MF_CHECKED，如果是“未复选”，就返回MF_UNCHECKED。如指定的菜单条目不存在就返回-1
参数表
参数 | 类型及说明
hMenu | Long，菜单句柄
wIDCheckItem | Long，欲复选或撤消复选的菜单条目的标识符。如果在wCheck中指定了MF_BYCOMMAND标志，这个参数就用于指定要改变的菜单条目的命令ID。如果设置了MF_BYPOSITION标志，这个参数就用于指定条目在菜单中的位置（第一个条目的位置是0）
wCheck | Long，参考ModifyMenu函数中的菜单常数标志定义表，其中列出了允许使用的所有常数。针对这个函数，只能指定下述常数：MF_BYCOMMAND，MF_BYPOSITION，MF_CHECKED以及MF_UNCHECKED
注解
在vb里使用：由这个函数做出的改动可以正常发挥作用，但不会由vb菜单的checked属性反映出来

Top


CheckMenuRadioItem
VB声明
Declare Function CheckMenuRadioItem Lib "user32" Alias "CheckMenuRadioItem" (ByVal hMenu As Long, ByVal un1 As Long, ByVal un2 As Long, ByVal un3 As Long, ByVal un4 As Long) As Long
说明
指定一个菜单条目被复选成“单选”项目。与单选钮相似，一个特定的组中只能有一个项目被选中。这个组别既可按位置定义，也可按菜单ID定义。复选的项目会显示一个圆形的样式复选符号（●），而不是一个标准的复选符号（√）
返回值
Long，非零表示成功，零表示失败。会设置GetLastError
参数表
参数 | 类型及说明
hMenu | Long，菜单句柄
un1 | Long，组内第一个位置或菜单ID
un2 | Long，组内最后一个位置或菜单ID
un3 | Long，欲复选的位置或菜单ID
un4 | Long，下述标志之一 ：如un1，un2，un3引用菜单条目的位置（第一个肯定在位置0处），就设为MF_BYPOSITION；如它们引用的是菜单ID，则设为MF_BYCOMMAND
注解
在vb里使用：由这个函数做出的改动可以正常发挥作用，但不会由vb菜单的checked属性反映出来


CreateMenu
VB声明
Declare Function CreateMenu Lib "user32" Alias "CreateMenu" () As Long
说明
创建新菜单
返回值
Long，如成功则返回新的顶级菜单的句柄；零意味着错误
注解

最开始创建时，菜单是空的。可用菜单api函数插入菜单条目。一旦菜单不再需要，记住用DestroyMenu将其删除

Top


CreatePopupMenu
VB声明
Declare Function CreatePopupMenu Lib "user32" Alias "CreatePopupMenu" () As Long
说明
创建一个空的弹出式菜单。可用AppendMenu或InsertMenu函数在窗口中添加条目，或者为一个现成的菜单添加弹出式菜单，并在新建的菜单中添加条目
返回值
Long，如成功，返回一个菜单句柄；零意味着错误
注解

并不推荐用这个函数来创建备用的vb菜单，除非是为TrackPopupMenu函数生成菜单。这个窗口中使用的命令ID必须与现有vb菜单控件的ID相符。或者用一个子类处理控件进行管理

Top


DeleteMenu
VB声明
Declare Function DeleteMenu Lib "user32" Alias "DeleteMenu" (ByVal hMenu As Long, ByVal nPosition As Long, ByVal wFlags As Long) As Long
说明
删除指定的菜单条目（在vb里使用：强烈建议用vb菜单的visible属性从菜单中删除条目。如使用这个函数，会造成指定菜单其他菜单条目的visible属性错误的影响菜单条目）
返回值
Long，非零表示成功，零表示失败。会设置GetLastError
参数表
参数 | 类型及说明
hMenu | Long，菜单句柄
nPosition | Long，欲删除菜单条目的标识符。如在wFlags中设置了MF_BYCOMMAND标志，这个参数就代表要改变的菜单条目的命令ID。如设置了MF_BYPOSITION标志，这个参数就代表条目在菜单中的位置（头一个条目肯定是零）
wFlags | Long，MF_BYPOSITION或MF_BYCOMMAND，具体由nPosition参数决定
注解
如条目连接了一个弹出式菜单，就会清除弹出式菜单。用RemoveMenu函数清除一个弹出式菜单条目，同时不影响整个弹出式菜单

Top


DestroyMenu
VB声明
Declare Function DestroyMenu Lib "user32" Alias "DestroyMenu" (ByVal hMenu As Long) As Long
说明
删除指定的菜单。如菜单属于另一个菜单的一部分，或直接分配给一个窗口，那么菜单会在窗口清除后被自动删除
返回值
Long，非零表示成功，零表示失败。会设置GetLastError
参数表
参数 | 类型及说明
hMenu | Long，欲删除菜单的句柄
注解
这个函数通常用于CreateMenu和CreatePopupMenu函数创建的菜单

Top


DrawMenuBar
VB声明
Declare Function DrawMenuBar Lib "user32" Alias "DrawMenuBar" (ByVal hwnd As Long) As Long
说明
为指定的窗口重画菜单。用api函数改变一个窗口菜单的内容时，就要用到这个函数
返回值
Long，非零表示成功，零表示失败。会设置GetLastError
参数表
参数 | 类型及说明
hwnd | Long，要重画菜单栏的窗口的句柄
注解
在vb里很少有必要用到这个函数，因为不应该用api函数来改变一个窗口的顶级菜单栏

Top


EnableMenuItem
VB声明
Declare Function EnableMenuItem Lib "user32" Alias "EnableMenuItem" (ByVal hMenu As Long, ByVal wIDEnableItem As Long, ByVal wEnable As Long) As Long
说明
允许或禁止指定的菜单条目（在vb里使用：由这个函数做出的改动可以正常发挥作用，但不会由vb菜单的enabled属性反映出来）
返回值
Long，
参数表
参数 | 类型及说明
hMenu | Long，菜单句柄
wIDEnableItem | Long，欲允许或禁止的一个菜单条目的标识符。如果在wEnable参数中设置了MF_BYCOMMAND标志，这个参数就代表欲改变菜单条目的命令ID。如设置的是MF_BYPOSITION，则这个参数代表菜单条目在菜单中的位置（第一个条目肯定是零）
wEnable | Long，参考ModifyMenu函数中的菜单常数标志定义表，其中列出了允许使用的所有常数。对于这个函数，只能指定下述常数：MF_BYCOMMAND，MF_BYPOSITION，MF_ENABLED，MF_DISABLED以及MF_GRAYED
注解
如指定的菜单条目依附了一个弹出式菜单，那么整个弹出式菜单都会受到影响

Top


GetMenu
VB声明
Declare Function GetMenu Lib "user32" Alias "GetMenu" (ByVal hwnd As Long) As Long
说明
取得窗口中一个菜单的句柄
返回值
Long，依附于指定窗口的一个菜单的句柄（如果有菜单）；否则返回零
参数表
参数 | 类型及说明
hwnd | Long，窗口句柄。对于vb，这应该是一个窗体句柄。注意可能不是子窗口的句柄

Top


GetMenuCheckMarkDimensions
VB声明
Declare Function GetMenuCheckMarkDimensions Lib "user32" Alias "GetMenuCheckMarkDimensions" () As Long
说明
返回一个菜单复选符的大小。参考SetMenuItemBitmaps以进一步了解如何使用这个函数
返回值
Long，高字（高16位）指定菜单复选符的高度，以像素为单位表示；低字代表宽度

Top


GetMenuContextHelpId
VB声明
Declare Function GetMenuContextHelpId Lib "user32" Alias "GetMenuContextHelpId" (ByVal hMenu As Long) As Long
说明
取得用SetMenuContextHelpId函数分配给一个菜单的帮助场景ID
返回值
Long，如果存在，就返回帮助场景ID；否则返回零
参数表
参数 | 类型及说明
hMenu | Long，菜单句柄

Top


GetMenuDefaultItem
VB声明
Declare Function GetMenuDefaultItem Lib "user32" Alias "GetMenuDefaultItem" (ByVal hMenu As Long, ByVal fByPos As Long, ByVal gmdiFlags As Long) As Long
说明
允许我们判断菜单中的哪个条目是默认条目。这个条目相应的转换成双击菜单时执行的操作
返回值
Long，默认菜单条目的位置或标识符。如未发现默认条目，就返回-1
参数表
参数 | 类型及说明
hMenu | Long，菜单的句柄
fByPos | Long，如果为TRUE，表示接收条目在菜单中的位置；FALSE表示接收它的菜单ID
gmdiFlags | Long，下述标志之一：
 | GMDI_GOINTOPOPUPS | 如默认条目是弹出菜单，这个函数就会在其中搜索一个默认的菜单条目
 | GMDI_USEDISABLED | 指明自己在搜索过程中不想跳过被禁止的菜单条目

Top


GetMenuItemCount
VB声明
Declare Function GetMenuItemCount Lib "user32" Alias "GetMenuItemCount" (ByVal hMenu As Long) As Long
说明
返回菜单中条目（菜单项）的数量
返回值
Long，菜单中的条目数量；-1意味着出错。会设置GetLastError
参数表
参数 | 类型及说明
hMenu | Long，目标菜单的句柄


GetMenuItemID
VB声明
Declare Function GetMenuItemID Lib "user32" Alias "GetMenuItemID" (ByVal hMenu As Long, ByVal nPos As Long) As Long
说明
返回位于菜单中指定位置处的条目的菜单ID
返回值
Long，指定条目的菜单ID。如条目属于一个弹出式菜单，就返回-1；如指定的条目属于一个分隔符（比如一条分隔线）则返回0
参数表
参数 | 类型及说明
hMenu | Long，菜单的句柄
nPos | Long，条目在菜单中的位置。第一个条目的编号是0


GetMenuItemInfo
VB声明
Declare Function GetMenuItemInfo Lib "user32" Alias "GetMenuItemInfoA" (ByVal hMenu As Long, ByVal un As Long, ByVal b As Boolean, lpMenuItemInfo As MENUITEMINFO) As Long
说明
用一个MENUITEMINFO结构取得（接收）与一个菜单条目有关的特定信息
返回值
Long，TRUE（非零）表示成功，否则返回零。会设置GetLastError
参数表
参数 | 类型及说明
hMenu | Long，菜单的句柄
un | Long，菜单条目的菜单ID或位置
b | Boolean，如un指定的是条目位置，就为TRUE；如指定的是一个菜单ID，则为FALSE
lpMenuItemInfo | MENUITEMINFO，这个结构用于装载请求的信息


GetMenuItemRect
VB声明
Declare Function GetMenuItemRect Lib "user32" Alias "GetMenuItemRect" (ByVal hWnd As Long, ByVal hMenu As Long, ByVal uItem As Long, lprcItem As RECT) As Long
说明
在一个矩形中装载指定菜单条目的屏幕坐标信息
返回值
Long，TRUE（非零）表示成功，否则返回零。会设置GetLastError
参数表
参数 | 类型及说明
hWnd | Long，包含指定菜单或弹出式菜单的一个窗口的句柄
hMenu | Long，菜单的句柄
uItem | Long，欲检查的菜单条目的位置或菜单ID
lprcItem | RECT，在这个结构中装载菜单条目的位置及大小（采用屏幕坐标表示）


GetMenuState
VB声明
Declare Function GetMenuState Lib "user32" Alias "GetMenuState" (ByVal hMenu As Long, ByVal wID As Long, ByVal wFlags As Long) As Long
说明
取得与指定菜单条目状态有关的信息
返回值
Long，在api32.txt文件的常数定义的一系列标志的组合，请看下表。如条目是个弹出式菜单，那么结构的最低字节就包含了状态标志，而第二个字节包含条目在弹出式菜单中的数量
MF_HILITE | 菜单条目加亮显示（处于选定状态）
MF_CHECKED | 菜单条目处于复选状态
MF_DISABLED | 菜单条目处于禁止状态
MF_GRAYED | 菜单条目以灰色显示，处于禁用状态
MF_MENUBARBREAK | 为这个条目指定一条分隔线。参考ModifyMenu函数
MF_MENUBREAK | 为这个条目指定一个菜单分隔标志。参考ModifyMenu函数
MF_SEPARATOR | 菜单条目是一个分隔符
参数表
参数 | 类型及说明
hMenu | 菜单句柄
wID | 欲检查的菜单条目的标识符。如果在wFlags参数中设置了MF_BYCOMMAND标志，这个参数就用于指定要改变的菜单条目的命令ID。如果设置的是MF_BYPOSITION标志，这个参数就用于指定条目在菜单中的位置（第一个条目的位置为0）
wFlags | 常数MF_BYCOMMAND或MF_BYPOSITION，取决于wID参数的设置

Top


GetMenuString
VB声明
Declare Function GetMenuString Lib "user32" Alias "GetMenuStringA" (ByVal hMenu As Long, ByVal wIDItem As Long, ByVal lpString As String, ByVal nMaxCount As Long, ByVal wFlag As Long) As Long
说明
取得指定菜单条目的字串
返回值
Long，在lpString中返回的字串的长度（不包括空中止字符）。零意味着出错
参数表
参数 | 类型及说明
hMenu | Long，菜单句柄
wIDItem | Long，欲接收的菜单条目的标识符。如果在wFlags参数中设置了MF_BYCOMMAND标志，这个参数就用于指定要改变的菜单条目的命令ID。如果设置的是MF_BYPOSITION标志，这个参数就用于指定条目在菜单中的位置（第一个条目的位置为0）
lpString | String，指定一个预先定义好的字串缓冲区，以便为菜单条目装载字串
nMaxCount | Long，载入lpString缓冲区中的最大字符数量+1
wFlag | Long，常数MF_BYCOMMAND或MF_BYPOSITION，取决于wID参数的设置


GetSubMenu
VB声明
Declare Function GetSubMenu Lib "user32" Alias "GetSubMenu" (ByVal hMenu As Long, ByVal nPos As Long) As Long
说明
取得一个弹出式菜单的句柄，它位于菜单中指定的位置
返回值
Long，位于指定位置的弹出式菜单的句柄（如果有的话）；否则返回零
参数表
参数 | 类型及说明
hMenu | Long，菜单的句柄
nPos | Long，条目在菜单中的位置。第一个条目的编号为0


GetSystemMenu
VB声明
Declare Function GetSystemMenu Lib "user32" Alias "GetSystemMenu" (ByVal hwnd As Long, ByVal bRevert As Long) As Long
说明
取得指定窗口的系统菜单的句柄。在vb环境，“系统菜单”的正式名称为“控制菜单”，即单击窗口左上角的控制框时出现的菜单
返回值
Long，如执行成功，返回系统菜单的句柄；零意味着出错。如bRevert设为TRUE，也会返回零（简单的恢复原始的系统菜单）
参数表
参数 | 类型及说明
hwnd | Long，窗口的句柄
bRevert | Long，如设为TRUE，表示接收原始的系统菜单
注解
在vb里使用：系统菜单会向窗口发送一条WM_SYSCOMMAND消息，而不是WM_COMMAND消息


HiliteMenuItem
VB声明
Declare Function HiliteMenuItem Lib "user32" Alias "HiliteMenuItem" (ByVal hwnd As Long, ByVal hMenu As Long, ByVal wIDHiliteItem As Long, ByVal wHilite As Long) As Long
说明
控制顶级菜单条目的加亮显示状态
返回值
Long，非零表示成功，零表示失败
参数表
参数 | 类型及说明
hwnd | Long，拥有顶级菜单的一个窗口的句柄
hMenu | Long，hwnd窗口的顶级菜单的句柄
wIDHiliteItem | Long，欲加亮或撤消加亮的菜单条目的标识符。倘若在wHilite参数中设置了MF_BYCOMMAND标志，这个参数就用于指定要改变的菜单条目的命令ID。如果设置的是MF_BYPOSITION标志，这个参数就用于指定条目在菜单中的位置（第一个条目的位置为0）
wHilite | Long，一系列常数标志的组合。其中包括MF_BYCOMMAND或MF_BYPOSITION，指出要改变的条目。也包括MF_HILITE，用于设置加亮状态；或者MF_UNHILITE，用于撤消加亮状态


InsertMenu
VB声明
Declare Function InsertMenu Lib "user32" Alias "InsertMenuA" (ByVal hMenu As Long, ByVal nPosition As Long, ByVal wFlags As Long, ByVal wIDNewItem As Long, ByVal lpNewItem As Any) As Long
说明
在菜单的指定位置处插入一个菜单条目，并根据需要将其他条目向下移动
返回值
Long，非零表示成功，零表示失败。会设置GetLastError
参数表
参数 | 类型及说明
hMenu | Long，菜单的句柄
nPosition | Long，定义了新条目插入点的一个现有菜单条目的标志符。如果在wFlags中指定了MF_BYCOMMAND标志，这个参数就代表欲改变的菜单条目的命令ID。如设置的是MF_BYPOSITION标志，这个参数就代表菜单条目在菜单中的位置，第一个条目的位置为零
wFlags | Long，一系列常数标志的组合。参考ModifyMenu
wIDNewItem | Long，指定菜单条目的新菜单ID。如果在wFlags中指定了MF_POPUP标志，就应该指定弹出式菜单的一个句柄
lpNewItem | 如果在wFlags参数中设置了MF_STRING标志，就代表要设置到菜单中的字串（String）。如设置的是MF_BITMAP标志，就代表一个Long型变量，其中包含了一个位图句柄
注解
在vb里使用：这个函数做出的许多改变都可以正常发挥作用，但却不能由vb菜单对象反映出来。添加的命令ID必须能由vb菜单系统识别

Top


InsertMenuItem
VB声明
Declare Function InsertMenuItem Lib "user32" Alias "InsertMenuItemA" (ByVal hMenu As Long, ByVal un As Long, ByVal bool As Boolean, ByVal lpcMenuItemInfo As MENUITEMINFO) As Long
说明
用一个MENUITEMINFO结构指定的特征插入一个新菜单条目
返回值
Long，TRUE（非零）表示成功，否则返回零。会设置GetLastError
参数表
参数 | 类型及说明
hMenu | Long，菜单的句柄
un | Long，菜单条目的菜单ID。新条目会插入由这个参数指定的项目之前
bool | Boolean，如un指定的是条目的位置，就为TRUE，如指定的是菜单ID，就为FALSE
lpcMenuItemInfo | MENUITEMINFO，用于设置指定菜单条目的特征
注解


IsMenu
VB声明
Declare Function IsMenu Lib "user32" Alias "IsMenu" (ByVal hMenu As Long) As Long
说明
判断指定的句柄是否为一个菜单的句柄
返回值
Long，如句柄是菜单句柄，就返回TRUE；否则返回零
参数表
参数 | 类型及说明
hMenu | Long，欲测试的菜单的句柄


LoadMenu
VB声明
Declare Function LoadMenu Lib "user32" Alias "LoadMenuA" (ByVal hInstance As Long, ByVal lpString As String) As Long
说明
从指定的模块或应用程序实例中载入一个菜单
返回值
Long，已装载的菜单的句柄；零意味着出错。会设置GetLastError
参数表
参数 | 类型及说明
hInstance | Long，一个动态链接库的模块句柄。或指定了特定可执行文件的一个实例句柄，那个可执行文件中包含了菜单资源
lpString | String，作为字串使用时，指定欲载入的菜单资源的名字；作为Long值使用时，指定欲载入的菜单ID。
注解
在vb里使用：由于vb不能控制那些不与现有vb菜单兼容的菜单，所以不建议使用这个函数


LoadMenuIndirect
VB声明
Declare Function LoadMenuIndirect Lib "user32" Alias "LoadMenuIndirectA" (ByVal lpMenuTemplate As Long) As Long
说明
在包含了MENUITEMTEMPLATE数据结构的一个内存块的基础上，载入一个菜单
返回值
Long，已载入的菜单句柄，零意味着出错。会设置GetLastError
参数表
参数 | 类型及说明
lpMenuTemplate | Long，指向一个MENUITEMTEMPLATEHEADER结构的指针。在内存中，该结构的后面跟随有一个或多个MENUITEMTEMPLATE数据结构。在windows 95及windows nt 4.0中，可能是指向一个MENUEX_HEADER_TEMPLATE结构的指针；在那个结构后跟随有一个或多个MENUEX_HEADER_ITEM结构，用于指定扩展菜单


MenuItemFromPoint
VB声明
Declare Function MenuItemFromPoint Lib "user32" Alias "MenuItemFromPoint" (ByVal hWnd As Long, ByVal hMenu As Long, ByVal ptScreen As POINTAPI) As Long
说明
判断哪个菜单条目包含了屏幕上一个指定的点
返回值
Long，包含了指定点的条目的位置。如果没有菜单条目包含了指定的点，就返回-1
参数表
参数 | 类型及说明
hWnd | Long，包含了指定菜单的那个窗口的句柄
hMenu | Long，菜单句柄
ptScreen | POINTAPI，点的位置。如hMenu是一个顶级菜单条，这个点就用hWnd窗口的窗口坐标表示。否则，它采用窗口的客户区坐标表示


ModifyMenu

ModifyMenu,ModifyMenuBynum
VB声明
Declare Function ModifyMenu& Lib "user32" Alias "ModifyMenuA" (ByVal hMenu As Long, ByVal nPosition As Long, ByVal wFlags As Long, ByVal wIDNewItem As Long, ByVal lpString As String) Declare Function ModifyMenuBynum& Lib "user32" Alias "ModifyMenuA" (ByVal hMenu As Long, ByVal nPosition As Long, ByVal wFlags As Long, ByVal wIDNewItem As Long, ByVal lpString As Long)
说明
改变菜单条目。在vb里这个函数做出的许多改变都会有效的执行，但不能由vb菜单对象反映出来
返回值
Long，非零表示成功，零表示失败。会设置GetLastError
参数表
参数 | 类型及说明
hMenu | Long，菜单句柄
nPosition | Long，欲改变的菜单条目的标识符。如在wFlags参数中指定了MF_BYCOMMAND，这个参数就代表欲改变的菜单条目的命令ID。如设置的是MF_BYPOSITION，这个参数就代表菜单条目在菜单中的位置（第一个条目的位置为零）
wFlags | Long，一系列常数标志的组合。详见菜单常数标志表
wIDNewItem | Long，指定菜单条目的新命令ID。如在wFlags参数中指定了MF_POPUP标志，就应是一个弹出式菜单的句柄
lpString | String或Long，如在wFlags参数中指定了MF_STRING标志，就代表欲设置到菜单的字串。如设置的是MF_BITMAP，就代表一个Long变量，其中包含了一个位图句柄。如设置的是MF_OWNERDRAW，那么这个值就会包括到DRAWITEMSTRUCT和MEASUREITEMSTRUCT结构中，并由windows在条目需要重画的时候发出
注解
标志的下述组合形式是不允许的：MF_BYCOMMAND和MF_BYPOSITION；MF_CHECKED和MF_UNCHECKED；MF_MENUBARBREAK和MF_MENUBREAK；MF_DISABLED，MF_ENABLED和MF_GRAYED；MF_BITMAP，MF_STRING，MF_OWNERDRAW和MF_SEPARATOR
菜单常数标志表
MF_BITMAP | 菜单条目是一幅位图。一旦设入菜单，这幅位图就绝对不能删除。所以不应该使用由vb的image属性返回的值
MF_BYCOMMAND | 菜单条目由菜单的命令ID指定
MF_BYPOSITION | 菜单条目由条目在菜单中的位置决定。零代表菜单中的第一个条目
MF_CHECKED | 检查指定的菜单条目。不能与vb的checked属性兼容
MF_DISABLED | 禁止指定的菜单条目。不与vb的enabled属性兼容
MF_ENABLED | 允许指定的菜单条目。不与vb的enabled属性兼容
MF_GRAYED | 禁止指定的菜单条目，并用浅灰色描述它。不与vb的enabled属性兼容
MF_MENUBARBREAK | 在弹出式菜单中，将指定的条目放置于一个新列，并用一条垂直线分隔不同的列
MF_MENUBREAK | 在弹出式菜单中，将指定的条目放置于一个新列。在顶级菜单中，将条目放置到一个新行
MF_OWNERDRAW | 创建一个物主绘图菜单（由您设计的程序负责描绘每个菜单条目）
MF_POPUP | 将一个弹出式菜单置于指定的条目。可用于创建子菜单及弹出式菜单
MF_SEPARATOR | 在指定的条目处显示一条分隔线
MF_STRING | 在指定的条目处放置一个字串。不与vb的caption属性兼容
MF_UNCHECKED | 检查指定的条目。不能与vb的checked属性兼容

Top


RemoveMenu
VB声明
Declare Function RemoveMenu Lib "user32" Alias "RemoveMenu" (ByVal hMenu As Long, ByVal nPosition As Long, ByVal wFlags As Long) As Long
说明
删除指定的菜单条目。如删除的条目属于一个弹出式菜单，那么这个函数不会同时删除弹出式菜单。首先应该用GetSubMenu函数取得弹出式菜单的句柄，再在以后将其删除
返回值
Long，非零表示成功，零表示失败。会设置GetLastError
参数表
参数 | 类型及说明
hMenu | Long，菜单的句柄
nPosition | Long，欲改变的菜单条目的标识符。如在wFlags参数中指定了MF_BYCOMMAND，这个参数就代表欲改变的菜单条目的命令ID。如设置的是MF_BYPOSITION，这个参数就代表菜单条目在菜单中的位置（第一个条目的位置为零）
wFlags | Long，常数MF_BYCOMMAND或MF_BYPOSITION，取决于nPosition参数
注解
强烈建议大家使用vb菜单的visible属性从菜单中删除条目，而不要用这个函数，否则会造成指定菜单中其他菜单条目的visible属性对错误的菜单条目产生影响


SetMenu
VB声明
Declare Function SetMenu Lib "user32" Alias "SetMenu" (ByVal hwnd As Long, ByVal hMenu As Long) As Long
说明
设置窗口菜单
返回值
Long，非零表示成功，零表示失败。会设置GetLastError
参数表
参数 | 类型及说明
hwnd | Long，窗口的句柄
hMenu | Long，窗口的新菜单的句柄
注解
不建议在vb里使用这个函数。如坚持使用，务必留意新菜单中的命令ID并不兼容于原始的vb窗口。只有窗体窗口才应通过这个函数指定。窗口的前一个菜单不会由这个函数删除


SetMenuContextHelpId
VB声明
Declare Function SetMenuContextHelpId Lib "user32" Alias "SetMenuContextHelpId" (ByVal hMenu As Long, ByVal dw As Long) As Long
说明
设置用SetMenuContextHelpId函数分配给一个菜单的帮助场景ID
返回值
Long，TRUE（非零）表示成功，否则返回零
参数表
参数 | 类型及说明
hMenu | Long，菜单的句柄
dw | Long，要设置的帮助场景ID
注解
用这个函数设置的场景ID并不对应于用vb菜单栏设计程序分配的场景ID。vb在内部保存有它自己的帮助场景ID。vb的帮助场景ID应是我们优先考虑的方案。尽可能不要用这个函数


SetMenuDefaultItem
VB声明
Declare Function SetMenuDefaultItem Lib "user32" Alias "SetMenuDefaultItem" (ByVal hMenu As Long, ByVal uItem As Long, ByVal fByPos As Long) As Long
说明
将一个菜单条目设为默认条目。这个条目会转换成双击菜单时执行的操作
返回值
Long，TRUE（非零）表示成功，否则返回零。会设置GetLastError
参数表
参数 | 类型及说明
hMenu | Long，菜单句柄
uItem | Long，欲设为默认菜单条目的一个条目的位置或菜单ID。如果为-1，表示清除当前的默认条目
fByPos | Long，如uItem是条目的位置，就为TRUE；如果是菜单ID，就为FALSE


SetMenuItemBitmaps
VB声明
Declare Function SetMenuItemBitmaps Lib "user32" Alias "SetMenuItemBitmaps" (ByVal hMenu As Long, ByVal nPosition As Long, ByVal wFlags As Long, ByVal hBitmapUnchecked As Long, ByVal hBitmapChecked As Long) As Long
说明
设置一幅特定位图，令其在指定的菜单条目中使用，代替标准的复选符号（√）。位图的大小必须与菜单复选符号的正确大小相符，这个正确大小可以由GetMenuCheckMarkDimensions函数获得
返回值
Long，非零表示成功，零表示失败。会设置GetLastError
参数表
参数 | 类型及说明
hMenu | Long，菜单句柄
nPosition | Long，欲设置位图的一个菜单条目的标识符。如在wFlags参数中指定了MF_BYCOMMAND，这个参数就代表欲改变的菜单条目的命令ID。如设置的是MF_BYPOSITION，这个参数就代表菜单条目在菜单中的位置（第一个条目的位置为零）
wFlags | Long，常数MF_BYCOMMAND或MF_BYPOSITION，取决于nPosition参数
hBitmapUnchecked | Long，撤消复选时为菜单条目显示的一幅位图的句柄。如果为零，表示不在未复选状态下显示任何标志
hBitmapChecked | Long，复选时为菜单条目显示的一幅位图的句柄。可设为零，表示复选时不显示任何标志。如两个位图句柄的值都是零，则为这个条目恢复使用默认复选位图
注解
使用的位图可能由多个条目共享。一旦不再需要，位图必须由应用程序清除，因为windows不能自动对它进行清除

Top


SetMenuItemInfo
VB声明
Declare Function SetMenuItemInfo Lib "user32" Alias "SetMenuItemInfoA" (ByVal hMenu As Long, ByVal un As Long, ByVal bool As Boolean, lpcMenuItemInfo As MENUITEMINFO) As Long
说明
为一个菜单条目设置指定的信息，具体信息保存于MENUITEMINFO结构中
返回值
Long，TRUE（非零）表示成功，否则返回零。会设置GetLastError
参数表
参数 | 类型及说明
hMenu | Long，菜单句柄
un | Long，菜单条目的菜单ID或位置
bool | Boolean，如un指定了条目的位置，就为TRUE；如指定的是菜单ID，就为FALSE
lpcMenuItemInfo | MENUITEMINFO，用于设置目标菜单条目的特征


TrackPopupMenu

TrackPopupMenu, TrackPopupMenuBynum
VB声明
Declare Function TrackPopupMenu& Lib "user32" (ByVal hMenu As Long, ByVal wFlags As Long, ByVal x As Long, ByVal y As Long, ByVal nReserved As Long, ByVal hwnd As Long, lprc As Rect) Declare Function TrackPopupMenuBynum& Lib "user32" Alias "TrackPopupMenu" (ByVal hMenu As Long, ByVal wFlags As Long, ByVal x As Long, ByVal y As Long, ByVal nReserved As Long, ByVal hwnd As Long, ByVal lprc As Long)
说明
在屏幕的任意地方显示一个弹出式菜单
返回值
Long，非零表示成功，零表示失败。会设置GetLastError
参数表
参数 | 类型及说明
hMenu | Long，弹出式菜单的句柄
wFlags | Long，位置标志和鼠标追踪标志的组合，见下表
 | 位置标志 | 说明
 | TPM_CENTERALIGN | 菜单在指定位置水平居中
 | TPM_LEFTALIGN | 菜单的左侧置于水平x坐标处
 | TPM_RIGHTALIGN | 菜单的右侧置于水平x坐标处
 | TPM_LEFTBUTTON | 鼠标左键标准运作方式
 | TPM_RIGHTBUTTON | 用鼠标右键进行菜单追踪
x,y | Long，这个点指定了弹出式菜单在屏幕坐标系统中的位置
nReserved | Long，未使用，设为零
hwnd | Long，用于接收弹出式菜单命令的窗口的句柄。应该使用窗体的窗口句柄——窗体中有一个菜单能象弹出式菜单那样接收相同的命令ID集
lprc | Rect，用屏幕坐标定义的一个矩形，如用户在这个矩形的范围内单击，则弹出式菜单不会关闭。如单击弹出式菜单之外的任何一个地方，则会关闭菜单。可以设为NULL
注解
用这个函数创建的菜单，菜单中的命令ID并不与vb期望的那些相符

Top


TrackPopupMenuEx
VB声明
Declare Function TrackPopupMenuEx Lib "user32" Alias "TrackPopupMenuEx" (ByVal hMenu As Long, ByVal un As Long, ByVal n1 As Long, ByVal n2 As Long, ByVal hWnd As Long, lpTPMParams As TPMPARAMS) As Long
说明
与TrackPopupMenu相似，只是它提供了额外的功能
返回值
Long，非零表示成功，零表示失败。会设置GetLastError
参数表
参数 | 类型及说明
hMenu | Long，弹出式菜单的句柄
un | Long，定位标志和鼠标追踪标志的组合。参考TrackPopupMenu，另外还包括两个标志：TPM_HORIZONTAL或TPM_VERTICAL。参考lpTPMParams参数的说明
n1,n2 | Long，定义了弹出式菜单位置的一个x,y点（n1,n2），用屏幕坐标表示
hWnd | Long，用于接收弹出式菜单命令的窗口的句柄。应该使用特定窗体的窗口句柄，该窗体有一个菜单能够与弹出式菜单一样接收相同的命令ID集
lpTPMParams | TPMPARAMS，指向一个TPMPARAMS结构的指针。这个结构包含了一个矩形，规定了不能由这个弹出式菜单覆盖的区域。如果在un参数中指定了TPM_HORIZONTAL标志，windows就会试着设置水平位置，将弹出式菜单垂直移到这个矩形的外部。如指定了TPM_VERTICAL，那么windows会试着水平移动弹出式菜单的位置


EnumFonts
VB声明
Declare Function EnumFonts Lib "gdi32" Alias "EnumFontsA" (ByVal hDC As Long, ByVal lpsz As String, ByVal lpFontEnumProc As Long, ByVal lParam As Long) As Long
说明
列举指定设备可用的字体
注解

该函数使用的参数与EnumFontFamilies函数是一样的，工作原理也大致相同。只是EnumFontFamilies会利用ENUMLOGFONT 和 NEWTEXTMETRIC结构向回调函数传递附加的信息，而不是使用LOGFONT 和 TEXTMETRIC结构。请参考EnumFontFamilies函数，那里有更详细的解释


ExtTextOut
VB声明
Declare Function ExtTextOut Lib "gdi32" Alias "ExtTextOutA" (ByVal hdc As Long, ByVal x As Long, ByVal y As Long, ByVal wOptions As Long, lpRect As Rect, ByVal lpString As String, ByVal nCount As Long, lpDx As Long) As Long
说明
经过扩展的文本描绘函数。也请参考SetTextAlign函数
返回值
Long，非零表示成功，零表示失败。会设置GetLastError
参数表
参数 | 类型及说明
hdc | Long，设备场景的句柄
x,y | Long，以逻辑坐标表示的一个点，指定了绘图起点
wOptions | Long，下述标志常数的任意组合
 | ETO_CLIPPED | 将文本剪切出指定的矩形
 | ETO_GLPYH_INDEX | lpString是一个字样索引表。参考对GetCharacterPlacement函数的说明。只适用于Win95
 | ETO_OPAQUE | 在正式描绘文本前，用当前的背景色填充矩形
lpRect | Rect，指定一个矩形，用于对文本进行格式化处理。可指定长整数0，在不用矩形区域的前提下描绘文本
lpString | String，欲描绘的字串
nCount | Long，字串中要显示出来的字符数
lpDx | Long，如果不是零，这个参数就代表指向一个Long值数组的指针。该数组对每一对字符的间距进行了说明（采用逻辑单位）。其中第一个条目是第一和第二个字符的间距；第二个条目是第二和第三个字符的间距；以此类推。如果为零，函数就使用字体的默认间距设置

Top


GetAspectRatioFilterEx
VB声明
Declare Function GetAspectRatioFilterEx Lib "gdi32" Alias "GetAspectRatioFilterEx" (ByVal hdc As Long, lpAspectRatio As SIZE) As Long
说明
我们可用SetMapperFlags函数要求Windows只选择与设备当前纵横比相符的光栅字体。这个函数可判断那种特殊选择过程中使用的纵横比是多大
返回值
Long，非零表示成功，零表示失败。会设置GetLastError
参数表
参数 | 类型及说明
hdc | Long，一个设备场景的句柄
lpAspectRatio | SIZE，用于装载纵横比的一个结构


GetCharABCWidths
VB声明
Declare Function GetCharABCWidths Lib "gdi32" Alias "GetCharABCWidthsA" (ByVal hdc As Long, ByVal uFirstChar As Long, ByVal uLastChar As Long, lpabc As ABC) As Long
说明
判断TureType字体中一个或多个字符的A-B-C大小
返回值
Long，非零表示成功，零表示失败。会设置GetLastError
参数表
参数 | 类型及说明
hdc | Long，设备场景的句柄
uFirstChar | Long，欲调查A-B-C尺寸的第一个字符的ASCII值
uLastChar | Long，欲调查A-B-C尺寸的最后一个字符的ASCII值
lpabc | ABC，在ABC结构数组中的第一个条目。这个数组填充了指定的字符大小设置。该数组的长度必须足够大，足以容下要求的所有字符
注解
对于非TureType字体用GetCharWidth函数


GetCharABCWidthsFloat
VB声明
Declare Function GetCharABCWidthsFloat Lib "gdi32" Alias "GetCharABCWidthsFloatA" (ByVal hdc As Long, ByVal iFirstChar As Long, ByVal iLastChar As Long, lpABCF As ABCFLOAT) As Long
说明
查询一种字体中一个或多个字符的A-B-C尺寸
返回值
Long，非零表示成功，零表示失败。会设置GetLastError
参数表
参数 | 类型及说明
hdc | Long，设备场景的句柄
iFirstChar | Long，欲调查A-B-C尺寸的第一个字符的ASCII值
iLastChar | Long，欲调查A-B-C尺寸的最后一个字符的ASCII值
lpABCF | ABCFLOAT，在ABCFLOAT结构数组中的第一个条目。这个数组填充了指定的字符大小设置。该数组的长度必须足够大，足以容下要求的所有字符
注解
和GetCharABCWidths不同，这个函数适用于任何字符。ABC值是以浮点数的形式返回的，而且可能不是整数——具体取决于用这个函数处理非TureType字体时采用的转换方式
适用平台
Windows NT


GetCharacterPlacement
VB声明
Declare Function GetCharacterPlacement Lib "gdi32" Alias " GetCharacterPlacementA" (ByVal hdc As Long, ByVal lpsz As String, ByVal n1 As Long, ByVal n2 As Long, lpGcpResults As GCP_RESULTS, ByVal dw As Long) As Long
说明
该函数用于了解如何用一个给定的字符显示一个字串
返回值
Long，非零表示成功，零表示失败。会设置GetLastError
参数表
参数 | 类型及说明
hdc | Long，设备场景的句柄
lpsz | String，欲分析的字串
n1 | Long，字串的长度
n2 | Long，若在dw参数中指定了GCP_MAXEXTENT常数，那么一旦显示的字串超出了由该参数指定的宽度（用逻辑单位），函数就会停止处理字串
lpGcpResults | GCP_RESULTS，在这个结构中装载为这个字串计算出来的信息
dw | Long，下述常数的一个或多个：
 | GCP_CLASSIN | lpGcpResults结构中的lpClass数组包含了字串中各字符的分类信息
 | GCP_DIACRITIC | 在计算时将发音符和“废”字符考虑在内
 | GCP_DISPLAYZWG | 显示某些字符集中使用的不可见字符，根据它们在一个词中的位置修改字符
 | GCP_GLPYPHSHAPE | 允许对字样（字面）进行特殊处理。根据GetFontLanguageInfo函数的结果使用
 | GCP_JUSTIFY | 调整字样位置，对字串进行对齐处理，使其与n2参数指定的范围相符
 | GCP_JUSTIFYIN | lpGcpResults结构中的lpDX参数包含了计算过程中使用的对齐粗细设置
 | GCP_LIGATE | 如当前字体支持，就用连字技术将字符合并成单独一个字符
 | GCP_MAXEXTENT | 请参考对n2参数的说明
 | GCP_USERKERNING | 计算字符位置时，使用字距表（如果有的话）可用其他标志对希伯来和阿拉伯字体进行特殊处理。这类语言按照从右到左的顺序显示文字，而且具体显示的字样由字符在一个词中的位置决定

Top


GetCharWidth

GetCharWidth, GetCharWidth32, GetCharWidthFloat
VB声明
Declare Function GetCharWidth& Lib "gdi32" Alias "GetCharWidthA" (ByVal hDC As Long, ByVal iFirstChar As Long, ByVal iLastChar As Long, lpBuffer As Long) Declare Function GetCharWidth32& Lib "gdi32" Alias "GetCharWidth32A" (ByVal hdc As Long, ByVal iFirstChar As Long, ByVal iLastChar As Long, lpBuffer As Long) Declare Function GetCharWidthFloat& Lib "gdi32" Alias "GetCharWidthFloatA" (ByVal hdc As Long, ByVal iFirstChar As Long, ByVal iLastChar As Long, pxBuffer As Single)
说明
调查字体中一个或多个字符的宽度。在Win32环境中，请使用GetCharWidth32函数。用GetCharWidthFloat则可获得小数宽度
返回值
Long，非零表示成功，零表示失败。会设置GetLastError
参数表
参数 | 类型及说明
hDC | Long，设备场景的句柄
iFirstChar | Long，要调查宽度的第一个字符的ASCII值
iLastChar | Long，要调查宽度的最后一个字符的ASCII值
lpBuffer | Long，指定Long值数组的第一个条目。该数组容纳了字体的字符宽度设置
pxBuffer | Single，指定Single值数组的第一个条目。该数组容纳了字体的字符宽度设置
注解
对于TureType字体，GetCharABCWidths可获得更详细的信息


GetFontData
VB声明
Declare Function GetFontData Lib "gdi32" Alias "GetFontDataA" (ByVal hdc As Long, ByVal dwTable As Long, ByVal dwOffset As Long, lpvBuffer As Any, ByVal cbData As Long) As Long
说明
接收一种可缩放字体文件的数据。随后，可用这些数据将字体信息嵌入一个文档。如果需要在文档使用一种特殊字体，同时这种字体在大多数系统中都不常见，而且程序员希望文档无论如何都要显示这种字体，那么这种技术就相当有用了
在VB里使用
未经测试
Use with VB:Untested


GetFontLanguageInfo
VB声明
Declare Function GetFontLanguageInfo Lib "gdi32" Alias "GetFontLanguageInfo" (ByVal hdc As Long) As Long
说明
返回目前选入指定设备场景中的字体的信息
返回值
Long，如返回零，表示是简单字体；GCP_ERROR表示出错。否则，返回下述一个或多个标志：
GCP_DBCS | 双字节字符集
GCP_DIACRITIC | 字体包含了发音字符
FLI_GLYPHS | 字体包含了通常不会显示出来的字样
GCP_GLYPHSHAPE | 字体包含了特殊字符，用于字样显示由除字符值以外的其他因素决定的场合。例如显示字样由一个字符在单词中位置决定，或者显示单个“连字”，指出这是两个字符值的组合
GCP_KASHIDA | 在阿拉伯字体中使用
GCP_LIGATE | 字体包含了连字字样
GCP_USERKERNING | 字体包含了字距表
GCP_REORDER | 字体必须记录下来，以便正确显示。随同希伯来和阿拉伯字体使用
参数表
参数 | 类型及说明
hdc | Long，设备场景的句柄
注解
从这个函数返回的值可用于设置GetCharacterPlacement函数的标志

Top


GetGlyphOutline
VB声明
Declare Function GetGlyphOutline Lib "gdi32" Alias "GetGlyphOutlineA" (ByVal hdc As Long, ByVal uChar As Long, ByVal fuFormat As Long, lpgm As GLYPHMETRICS, ByVal cbBuffer As Long, lpBuffer As Any, lpmat2 As MAT2) As Long
说明
取得TureType字体中构成一个字符的曲线信息。主要用于将文本转换成曲线，以及用于字体的特殊处理（比如造字程序。无论如何，都要求程序员掌握高深的字体技术）。请参考由微软发布的TureType字体规格书，其中对这个字体进行了更详细的解释


GetKerningPairs
VB声明
Declare Function GetKerningPairs Lib "gdi32" Alias "GetKerningPairsA" (ByVal hdc As Long, ByVal cPairs As Long, lpkrnpair As KERNINGPAIR) As Long
说明
取得指定字体的字距信息
返回值
Long，返回的字距对数量，零表示失败。会设置GetLastError
参数表
参数 | 类型及说明
hdc | Long，设备场景的句柄
cPairs | Long，KERNINGPAIR结构在数组中的数量，由lpkrnpair参数指定。如果将这个参数与lpkrnpair设置成零，可判断出字距表的大小
lpkrnpair | KERNINGPAIR，指定KERNINGPAIR结构数组中的第一个条目
注解
参考KERNINGPAIR 返回以后，结构会针对数组中的每个条目象下面这样设置字段： wFirst指定一个双字符序列的第一个字符；wSecond指定第二个字符。iKernAmount字段指定指定这两个字符的字间距。 例如，假设第一个字符是"f"，第二个是"i"。那么在这两个字符一个紧接一个显示出来时，字间距就是添加到默认字符间距上的一个逻辑距离。这个值通常为负，因为系统通常会令两个字符靠得更近


GetOutlineTextMetrics
VB声明
Declare Function GetOutlineTextMetrics Lib "gdi32" Alias "GetOutlineTextMetricsA" (ByVal hdc As Long, ByVal cbData As Long, lpotm As OUTLINETEXTMETRIC) As Long
说明
接收与TureType字体内部特征有关的详细信息。请参考微软公司发布的TureType字体规格文件，它提供了这个函数的进一步信息


GetRasterizerCaps
VB声明
Declare Function GetRasterizerCaps Lib "gdi32" Alias "GetRasterizerCaps" (lpraststat As RASTERIZER_STATUS, ByVal cb As Long) As Long
说明
了解系统是否有能力支持可缩放的字体。利用得到的结果，可判断那种系统中是否允许使用TureType字体
返回值
Long，非零表示成功，零表示失败。会设置GetLastError
参数表
参数 | 类型及说明
lpraststat | RASTERIZER_STATUS，这个结构用于装载光栅信息
cb | Long，欲复制到结构中的字符数
注解
结构目前的大小是6个字符，并包含在RASTERIZER_STATUS结构的第一个整数中


GetTabbedTextExtent
VB声明
Declare Function GetTabbedTextExtent Lib "user32" Alias "GetTabbedTextExtentA" (ByVal hdc As Long, ByVal lpString As String, ByVal nCount As Long, ByVal nTabPositions As Long, lpnTabStopPositions As Long) As Long
说明
判断一个字串占据的范围，同时考虑制表站扩充的因素。也请参考TabbedTextOut函数
返回值
Long，低16位包含了文本宽度，采用设备场景的逻辑坐标表示。高16位则包含了文本高度。零意味着出错
参数表
参数 | 类型及说明
hdc | Long，设备场景的句柄
lpString | String，欲计算的字串
nCount | Long，字串中的字符数
nTabPositions | Long，lpnTabStopPositions数组中的制表站数量。如果是零，则lpnTabStopPositions也应是NULL（需另行创建一个函数声明，将这个参数声明成ByVal nTabPositions&）。在这种情况下，制表站会根据当前字体的平均字符宽度，设置成默认的8字符间距。如nTabPositions是1，那么制表站间距就会以lpnTabStopPositions数组的第一个条目为准
lpnTabStopPositions | Long，指定制表站位置数组的第一个条目。这种位置是按升序用设备坐标指定的
注解
进行这种计算的时候，剪切区不会考虑在内


GetTextAlign
VB声明
Declare Function GetTextAlign Lib "gdi32" Alias "GetTextAlign" (ByVal hdc As Long) As Long
说明
接收一个设备场景当前的文本对齐标志
返回值
Long，当前的文本对齐标志。GDI_ERROR表示失败。会设置GetLastError。文本的对齐方法由几个常数的组合决定。其中每个常数都来自下述不同的组别。参考下面总结的文本对齐标志
水平对齐标志 | TA_CENTER | 文本在约束矩形内居中显示
 | TA_LEFT | 文本在约束矩形内左对齐（默认设置）
 | TA_RIGHT | 文本在约束矩形内右对齐
垂直对齐标志 | 定义文本输出函数的Y参数的含义
 | TA_BASELINE | Y参数指定字体基线的位置
 | TA_BOTTOM | Y参数指定约束矩形底边的位置
 | TA_TOP | Y参数指定约束矩形顶边的位置（默认设置）
当前位置 | TA_NOUPDATECP | 文本输出函数不使用设备场景当前的绘图位置
 | TA_UPDATECP | 文本输出函数使用设备场景当前的绘图位置。完成绘图后，输出函数会对当前位置进行更新。文本输出函数的X和Y参数会被忽略——绘图会以当前位置为起点
其他 | TA_RTLREADING | 文本输出从右到左进行。仅在Windows95下适用于希伯来和阿拉伯字体
参数表
参数 | 类型及说明
hdc | Long，设备场景的句柄
注解
参考对SetTextAlign函数的说明，进一步了解文本对齐标志的情况

Top


GetTextCharacterExtra
VB声明
Declare Function GetTextCharacterExtra Lib "gdi32" Alias "GetTextCharacterExtraA" (ByVal hdc As Long) As Long
说明
判断额外字符间距的当前值。请参考SetTextCharacterExtra函数，了解进一步的情况
返回值
Long，返回Windows描绘文本时于字符间添加的额外空间大小
参数表
参数 | 类型及说明
hdc | Long，设备场景的句柄


GetTextCharset
VB声明
Declare Function GetTextCharset Lib "gdi32" Alias "GetTextCharset" (ByVal hdc As Long) As Long
说明
接收当前选入指定设备场景的字体的字符集标识符
返回值
Long，字符集标识符。DEFAULT_CHARSET代表默认字符集；-1表示出错
参数表
参数 | 类型及说明
hdc | Long，设备场景的句柄


GetTextCharsetInfo
VB声明
Declare Function GetTextCharsetInfo Lib "gdi32" Alias "GetTextCharsetInfo" (ByVal hdc As Long, lpSig As FONTSIGNATURE, ByVal dwFlags As Long) As Long
说明
获取与当前选定字体的字符集有关的详细信息
返回值
Long，字符集标识符。DEFAULT_CHARSET代表默认字符集；-1表示出错
参数表
参数 | 类型及说明
hdc | Long，设备场景的句柄
lpSig | FONTSIGNATURE，用于装载字符集信息的结构。有关Unicode字体签名（signature）的资料可在Unicode规格文件中找到
dwFlags | Long，已保留，设为零


GetTextColor
VB声明
Declare Function GetTextColor Lib "gdi32" Alias "GetTextColor" (ByVal hdc As Long) As Long
说明
判断当前字体颜色。通常也称为“前景色”
返回值
Long，文字的当前RGB颜色设置。如果出错，会返回CLR_INVALID。会设置GetLastError
参数表
参数 | 类型及说明
hdc | Long，设备场景的句柄
注解
在VB里用ForeColor属性设置图片控件和窗体


GetTextExtentExPoint
VB声明
Declare Function GetTextExtentExPoint Lib "gdi32" Alias "GetTextExtentExPointA" (ByVal hdc As Long, ByVal lpszStr As String, ByVal cchString As Long, ByVal nMaxExtent As Long, lpnFit As Long, alpDx As Long, lpSize As SIZE) As Long
说明
判断要填入指定区域的字符数量。也用一个数组装载每个字符的范围信息
返回值
Long，非零表示成功，零表示失败。会设置GetLastError
参数表
参数 | 类型及说明
hdc | Long，设备场景的句柄
lpszStr | String，准备量度其范围的字串
cchString | Long，lpszStr字串的长度
nMaxExtent | Long，采用逻辑单位表示的水平范围
lpnFit | Long，在其中保存欲填充到指定区域的字符数量。可以为NULL（用一个别名化的声明来设置ByVal As Long）——此时会忽略nMaxExtent设置
As | Long，cchString数组的第一个条目。每个条目都要保存从字串起点到这个字符的距离（采用逻辑单位）。如果不需要这方面的信息，也可设为NULL（用别名声明设置 ByVal As Long）
lpSize | SIZE，这个结构用于装载字串范围的高度和宽度信息
注解
可用这个函数计算自动换行输出时的字符位置


GetTextExtentPoint

GetTextExtentPoint, GetTextExtentPoint32
VB声明
Declare Function GetTextExtentPoint& Lib "gdi32" Alias "GetTextExtentPointA" (ByVal hdc As Long, ByVal lpszString As String, ByVal cbString As Long, lpSize As SIZE) Declare Function GetTextExtentPoint32& Lib "gdi32" Alias "GetTextExtentPoint32A" (ByVal hdc As Long, ByVal lpsz As String, ByVal cbString As Long, lpSize As SIZE)
说明
判断一个字串的大小（范围）。在Win32环境中，最好使用GetTextExtentPoint32，它提供了更精确的计算结果
返回值
Long，非零表示成功，零表示失败。会设置GetLastError
参数表
参数 | 类型及说明
hdc | Long，设备场景的句柄
lpszString | String，欲度量其范围（extent）的一个字串
cbString | Long，lpszString字串的长度
lpSize | SIZE，这个结构用于装载字串范围的高度和宽度信息
注解
这个函数不会将剪切区考虑在内，但却考虑到了由SetTextCharacterExtra函数设置的任何额外空间（间距）


GetTextFace
VB声明
Declare Function GetTextFace Lib "gdi32" Alias "GetTextFaceA" (ByVal hdc As Long, ByVal nCount As Long, ByVal lpFacename As String) As Long
说明
获取一种字体的字样名
返回值
Long，缓冲区中载入的字节数量。零表示失败。会设置GetLastError
参数表
参数 | 类型及说明
hdc | Long，设备场景的句柄
nCount | Long，lpFacename字串的大小
lpFacename | String，指定一个字串缓冲区，用于装载当前选定字体的字样名称。这个缓冲区事先必须初始化成至少nCount+1个字符的长度
注解
类似于读取VB的FontName属性


GetTextMetrics
VB声明
Declare Function GetTextMetrics Lib "gdi32" Alias "GetTextMetricsA" (ByVal hdc As Long, lpMetrics As TEXTMETRIC) As Long
说明
获取与选入一种设备场景的物理字体有关的信息
返回值
Long，非零表示成功，零表示失败。会设置GetLastError
参数表
参数 | 类型及说明
hdc | Long，设备场景的句柄
lpMetrics | TEXTMETRIC，用于填充物理字体属性信息的一个结构


GrayString

GrayString, GrayStringByString
VB声明
Declare Function GrayString& Lib "user32" Alias "GrayStringA" (ByVal hDC As Long, ByVal hBrush As Long, ByVal lpOutputFunc As Long, ByVal lpData As Long, ByVal nCount As Long, ByVal X As Long, ByVal Y As Long, ByVal nWidth As Long, ByVal nHeight As Long) Declare Function GrayStringByString& Lib "user32" Alias "GrayStringA" (ByVal hDC As Long, ByVal hBrush As Long, ByVal lpOutputFunc As Long, ByVal lpData As String, ByVal nCount As Long, ByVal X As Long, ByVal Y As Long, ByVal nWidth As Long, ByVal nHeight As Long)
说明
描绘一个以灰色显示的字串。通常由Windows用于标识禁止状态。这个函数使用的是当前字体，但会忽略背景及文本颜色
返回值
Long，非零表示成功。如果TextOut函数或回调控件绘图事件返回零，那么该函数也会返回零
参数表
参数 | 类型及说明
hDC | Long，设备场景的句柄
hBrush | Long，用于填充灰色的一个刷子。如果为零就用当前刷子
lpOutputFunc | Long，指向一个函数的指针，该函数用于输出文本。通常设为零，表示使用TextOut函数。否则可将该参数设成一个进程地址。具体地址可用一个标准函数的AddressOf运算符返回，或者用一个回调控件的相关属性返回
lpData | Long，如果是一个字串（将lpOutputFunc设为NULL），这就表示要以灰色显示的一个字串。否则就指定一个Long型变量，将其传递给回调函数
nCount | Long，欲显示的字符数量。如果设为零，而且lpData是个字串，那么就用于计算字串的长度
X,Y | Long，将字串封闭（约束）起来的一个矩形的X，Y坐标
nWidth | Long，将字串封闭起来的一个矩形的宽度，采用设备坐标表示。如设为零，就根据字串计算出具体的值
nHeight | Long，将字串封闭起来的一个矩形的高度，采用设备坐标表示。如设为零，就根据字串计算出具体的值

Top


PolyTextOut
VB声明
Declare Function PolyTextOut Lib "gdi32" Alias "PolyTextOutA" (ByVal hdc As Long, pptxt As POLYTEXT, cStrings As Long) As Long
说明
描绘一系列字串
返回值
Long，非零表示成功，零表示失败。会设置GetLastError
参数表
参数 | 类型及说明
hdc | Long，欲在其中绘图的设备场景
pptxt | POLYTEXT，指定POLYTEXT结构数组中的第一个条目。该结构对要描绘字串的位置及内容进行了说明
cStrings | Long，pptxt数组中的条目数量


RemoveFontResource
VB声明
Declare Function RemoveFontResource Lib "gdi32" Alias "RemoveFontResourceA" (ByVal lpFileName As String) As Long
说明
从Windows系统中删除一种字体资源。如删除的字体目前正由其他应用程序使用，则并不将其立即删除
返回值
Long，非零表示成功，零表示失败。会设置GetLastError
参数表
参数 | 类型及说明
lpFileName | String，一个字体资源文件的文件名
注解
删除一种字体资源后，注意必须调用一下API函数： di% = SendMessageBynum(HWND_BROADCAST, WM_FONTCHANGE, X, Y) 其中，HWND_BROADCAST和WM_FONTCHANGE都是来自API32.TXT文件的常数。它的作用是通知所有Windows应用程序字体列表已发生了变化。 注意磁盘上的字体文件本身并不会由这个函数删除


SetMapperFlags
VB声明
Declare Function SetMapperFlags Lib "gdi32" Alias "SetMapperFlags" (ByVal hdc As Long, ByVal dwFlag As Long) As Long
说明
Windows对字体进行映射时，可用该函数选择与目标设备的纵横比相符的光栅字体。请参考对GetAspectRatioFilterEx函数的解释，了解进一步的情况
返回值
Long，字体映射标志的前一个值。GDI_ERROR表示失败。会设置GetLastError
参数表
参数 | 类型及说明
hdc | Long，设备场景的句柄
dwFlag | Long，用ASPECT_FILTERING常数请求GDI选择与设备纵横比相符的字体


SetTextAlign
VB声明
Declare Function SetTextAlign Lib "gdi32" Alias "SetTextAlign" (ByVal hdc As Long, ByVal wFlags As Long) As Long
说明
设置文本对齐方式，并指定在文本输出过程中使用设备场景的当前位置
返回值
Long，前一个文本对齐标志，GDI_ERROR表示失败。会设置GetLastError
参数表
参数 | 类型及说明
hdc | Long，设备场景的句柄
wFlags | Long，参考GetTextAlign函数的返回值列表
在VB里使用
针对自己修改的任何VB窗体或控件，注意确定恢复其原始的对齐排列状态。可用GetTextAlign函数了解目前的对齐方式是什么


SetTextCharacterExtra
VB声明
Declare Function SetTextCharacterExtra Lib "gdi32" Alias "SetTextCharacterExtraA" (ByVal hdc As Long, ByVal nCharExtra As Long) As Long
说明
描绘文本的时候，指定要在字符间插入的额外间距
返回值
Long，这个设备场景的前一个额外间距设置
参数表
参数 | 类型及说明
hdc | Long，设备场景的句柄
nCharExtra | Long，要在字符间插入的额外空间，采用设备场景的逻辑坐标系统
在VB里使用
如改变了这个设置，注意恢复VB窗体或控件原来的字符间距设置


SetTextColor
VB声明
Declare Function SetTextColor Lib "gdi32" Alias "SetTextColor" (ByVal hdc As Long, ByVal crColor As Long) As Long
说明
设置当前文本颜色。这种颜色也称为“前景色”
返回值
Long，文本色的前一个RGB颜色设定。CLR_INVALID表示失败。会设置GetLastError
参数表
参数 | 类型及说明
hdc | Long，设备场景的句柄
crColor | Long，新的文本色
在VB里使用
如改变了这个设置，注意恢复VB窗体或控件原始的文本颜色


SetTextJustification
VB声明
Declare Function SetTextJustification Lib "gdi32" Alias "SetTextJustification" (ByVal hdc As Long, ByVal nBreakExtra As Long, ByVal nBreakCount As Long) As Long
说明
通过指定一个文本行应占据的额外空间，可用这个函数对文本进行两端对齐处理
返回值
Long，非零表示成功，零表示失败。会设置GetLastError
参数表
参数 | 类型及说明
hdc | Long，设备场景的句柄
nBreakExtra | Long，描绘时欲添加到字串的额外空间大小
nBreakCount | Long，用于分散额外空间的分隔字符的数量
在VB里使用
如使用了这个函数，要确定针对VB窗体或控件清除错误条件
注解
额外空间由行内各个分隔字符分摊。这里的“分隔字符”是由特定的字体定义的，通常都是空格字符。可用GetTextMetrics函数了解一种字体采用的分隔字符是什么。对文本进行两端对齐排列的时候，通常需要采取的操作步骤如下： 1、用GetTextExtentPoint32这个API函数计算字串占据的显示范围 2、决定为了使一个行两端对齐，需要加入多少额外的空间（采用逻辑坐标）。这个空间（或距离）通常等于右页边距减去文本的水平“范围” 3、计算一行文本中采用多少个间隔字符（通常是空格） 4、将额外空间以及间隔字符的数量作为参数，调用SetTextJustification函数 5、调用文本绘图（显示）函数 这个函数在内部维持着一种错误条件，用于纠正对齐过程中出现的误差。这样一来，我们就可以区分出行内不同部分间的额外间距（如行内使用了多种字体）。具体的方法是将行分割成几个段，然后为每一段都调用这个函数。对于一个新行，必须清除这个错误条件，方法是向nBreakExtra和nBreakCount参数传递零值，然后调用这个函数

Top


TabbedTextOut
VB声明
Declare Function TabbedTextOut Lib "user32" Alias "TabbedTextOutA" (ByVal hdc As Long, ByVal x As Long, ByVal y As Long, ByVal lpString As String, ByVal nCount As Long, ByVal nTabPositions As Long, lpnTabStopPositions As Long, ByVal nTabOrigin As Long) As Long
说明
支持制表站的一个文本描绘函数。也请参考SetTextAlign函数
返回值
Long，返回字串的显示“范围”。其中，结果值的高16位代表高度，低16位代表宽度
参数表
参数 | 类型及说明
hdc | Long，设备场景的句柄
x,y | Long，用逻辑坐标设置的一个点，指定字体的描绘（显示）起点
lpString | String，欲描绘的字串
nCount | Long，字串中要正式描绘出来的字符数
nTabPositions | Long，lpnTabStopPositions数组中的制表站数量。如果是零，lpnTabStopPositions也应该是NULL（需要另行创建一个声明，将参数指定成 ByVal nTabPositions& ）——在这种情况下，制表站会根据当前字体的平均字符宽度设置成默认的8字符间距。如nTabPositions为1，那么制表站间距就会根据lpnTabStopPositions数组的第一个条目设置
lpnTabStopPositions | Long，指定制表站位置数组中的头一个条目。这些位置用设备坐标按升序指定。如果为负数，表示文本应该右对齐制表站，而不是默认的左对齐（仅适用于Win95）
nTabOrigin | Long，指定制表站起点。如为同一行多次调用该函数，而又希望维持相同的制表起点，这个参数就显得非常重要

Top


TextOut
VB声明
Declare Function TextOut Lib "gdi32" Alias "TextOutA" (ByVal hdc As Long, ByVal x As Long, ByVal y As Long, ByVal lpString As String, ByVal nCount As Long) As Long
说明
文本绘图函数。也请参考SetTextAlign
返回值
Long，非零表示成功，零表示失败。会设置GetLastError
参数表
参数 | 类型及说明
hdc | Long，设备场景的句柄
x,y | Long，绘图的起点，采用逻辑坐标
lpString | String，欲描绘的字串
nCount | Long，字串中要描绘的字符数量
注解
在一个路径中，如绘图背景模式是“不透明”（opaque）——请参考SetBkMode函数，那么创建的轮廓将由字符单元格减去字符构成。如背景模式为透明，轮廓就由字符的字样本身构成


ActivateKeyboardLayout
VB声明
Declare Function ActivateKeyboardLayout Lib "user32" Alias "ActivateKeyboardLayout" (ByVal HKL As Long, ByVal flags As Long) As Long
说明
激活一个新的键盘布局。键盘布局定义了按键在一种物理性键盘上的位置与含义
返回值
Long，如执行成功，返回前一个键盘布局的句柄；零表示失败。会设置GetLastError
参数表
参数 | 类型及说明
HKL | Long，指定一个键盘布局的句柄。这个布局是随同LoadKeyboardLayout 或 GetKeyboardLayoutList函数载入的。也可用HKL_NEXT常数激活下一个已装载布局；或用HKL_PREV载入前一个布局
flags | Long，将指定的键盘移至内部键盘布局列表的起始处


Beep
VB声明
Declare Function Beep Lib "kernel32" Alias "Beep" (ByVal dwFreq As Long, ByVal dwDuration As Long) As Long
说明
用于生成简单的声音
返回值
Long，TRUE（非零）表示成功，否则返回零。会设置GetLastError
参数表
参数 | 类型及说明
dwFreq | Long，声音频率（从37Hz到32767Hz）。在windows95中忽略
dwDuration | Long，声音的持续时间，以毫秒为单位。如为-1，表示一直播放声音，直到再次调用该函数为止。在windows95中会被忽略
注解
在windows95中，这个函数简单的播放默认系统响铃


CharToOem

CharToOem, CharToOemBuff
VB声明
Declare Function CharToOem& Lib "user32" Alias "CharToOemA" (ByVal lpszSrc As String, ByVal lpszDst As String) Declare Function CharToOemBuff& Lib "user32" Alias "CharToOemBuffA" (ByVal lpszSrc As String, ByVal lpszDst As String, ByVal cchDstLength As Long)
说明
将一个字串从ANSI字符集转换到OEM字符集。CharToOemBuff允许我们指定字串中需转换的字符数量
返回值
Long，肯定是TRUE
参数表
参数 | 类型及说明
lpszSrc | String，欲转换的字串
lpszDst | String，用于包含转换结果的OEM字串。注意事先将字串初始化成合适的长度。可将相同的字串传递给这两个参数，执行本地转换（即在同一个字串中转换）
cchDstLength | Long，在字串lpszSrc中想转换的字符数量
注解
如用一个Win32类型库访问宽字符函数CharToOemW，则lpszSrc是一个Unicode字串，且lpszDst参数绝对不能与lpszSrc相同


ClipCursor

ClipCursor, ClipCursorBynum
VB声明
Declare Function ClipCursor& Lib "user32" (lpRect As RECT) Declare Function ClipCursorBynum& Lib "user32" Alias "ClipCursor" (ByVal lpRect As Long)
说明
将指针限制到指定区域。ClipCursorBynum是一个别名，允许我们清除以前设置的指针剪切区域
返回值
Long，非零表示成功，零表示失败。会设置GetLastError
参数表
参数 | 类型及说明
lpRect | RECT，指定一个矩形，用像素屏幕坐标系统表示。鼠标指针必须在这个区域内运动。如使用函数的ClipCursorBynum形式，则可将参数设为Long值，用它传递一个0，禁止指针剪切，恢复常规运作状态
注解
指针剪切后，按Ctrl+Alt+Del可简单的清除剪切区域


ConvertDefaultLocale
VB声明
Declare Function ConvertDefaultLocale Lib "KERNEL32" Alias "ConvertDefaultLocale" (ByVal Locale As Long) As Long
说明
将一个特殊的地方标识符转换成真实的地方ID
返回值
Long，如执行成功，返回实际的地方ID。如失败则返回传递给Locale参数的值
参数表
参数 | 类型及说明
Locale | Long，如设为常数LOCALE_SYSTEM_DEFAULT和LOCALE_USER_DEFAULT，可分别接收默认的系统或用户地方设置。如设为零，则取得语言方面的地方设置。主语言ID用于接收采用了默认子语言的地方信息
注解
用LOCALE_SYSTEM_DEFAULT和LOCALE_USER_DEFAULT这两个值调用函数时，得到的结果与GetSystemDefaultLCID 和 GetUserDefaultLCID函数是一样的


CreateCaret
VB声明
Declare Function CreateCaret Lib "user32" Alias "CreateCaret" (ByVal hwnd As Long, ByVal hBitmap As Long, ByVal nWidth As Long, ByVal nHeight As Long) As Long
说明
根据指定的信息创建一个插入符（光标），并将它选定为指定窗口的默认插入符。插入符可以是一根短线、一个方块或者一幅位图。通常用插入符指示文字在文字框中的插入位置
返回值
Long，非零表示成功，零表示失败。会设置GetLastError
参数表
参数 | 类型及说明
hwnd | Long，拥有插入符的那个窗口的句柄
hBitmap | Long，用作插入符的一幅位图的句柄。可以是0或1；在这种情况下，插入符可通过nWidth和nHeight参数创建。如设为1，则新插入符以灰色显示；而不是传统的黑色
nWidth | Long，采用逻辑单位的插入符的宽度
nHeight | Long，采用逻辑单位的插入符的高度
注解
如创建一个插入符，会同时清除原先的插入符；效果等同于DestroyCaret函数。在vb的LostFocus事件期间，不要试图用DestroyCaret函数清除一个插入符。这是由于vb的LostFocus事件不会接收DestroyCaret直到另一个窗口已经有焦点。因此，倘若在那个时候调用DestroyCaret，会破坏其他窗口的插入符。如果准备自己管理插入符，可以（而且应该）在WM_KILLFOCUS消息期间清除插入符
在vb里使用
可以使用。但在应用程序切换时，标准的vb文本控件不能处理GotFocus 和 LostFocus事件。因此，很难知道何时为一个控件设置插入符。此外，vb假设插入符为一根短竖线，并据此定义它的位置，所以其他形式的插入符可能无法正确定位

Top


DestroyCaret
VB声明
Declare Function DestroyCaret Lib "user32" Alias "DestroyCaret" () As Long
说明
清除（破坏）一个插入符
返回值
Long，非零表示成功，零表示失败。会设置GetLastError
注解

参考CreateCaret函数的注解


EnumCalendarInfo
VB声明
Declare Function EnumCalendarInfo Lib "kernel32" Alias "EnumCalendarInfoA" (ByVal lpCalInfoEnumProc As Long, ByVal Locale As Long, ByVal Calendar As Long, ByVal CalType As Long) As Long
说明
枚举在指定“地方”环境中可用的日历信息
返回值
Long，TRUE（非零）表示成功，零表示失败。会将GetLastError设置设为下述某个常数：ERROR_BADDB，ERROR_INVALID_FLAGS，ERROR_INVALID_PARAMETER
参数表
参数 | 类型及说明
lpCalInfoEnumProc | Long，指向为每个日历都调用的一个函数的指针。用Addressof运算符得到位于一个标准模块中的函数的地址
Locale | Long，用于决定具体枚举日历的“地方”设置
Calendar | Long，如设为常数ENUM_ALL_CALANDARS，表示枚举所有日历；如设为1，枚举本地罗马日历，2枚举英国罗马日历，3枚举日本日历，4枚举中国日历，5枚举朝鲜日历
CalType | Long，CAL_函数之一，指示欲枚举的信息类型


EnumDateFormats
VB声明
Declare Function EnumDateFormats Lib "KERNEL32" Alias "EnumDateFormats" (ByVal lpDateFmtEnumProc As Long, ByVal Locale As Long, ByVal dwFlags As Long) As Long
说明
列举指定的“当地”设置中可用的长、短日期格式
返回值
Long，TRUE（非零）表示成功，零表示失败。会将GetLastError设置设为下述某个常数：ERROR_BADDB，ERROR_INVALID_FLAGS，ERROR_INVALID_PARAMETER
参数表
参数 | 类型及说明
lpDateFmtEnumProc | Long，指向为每种日期格式都调用的一个函数的指针。用Addressof运算符得到位于一个标准模块中的函数的地址
Locale | Long，用于决定具体枚举格式的“地方”的设置
dwFlags | Long，DATE_SHORTDATE 或 DATE_LONGDATE常数之一，分别用于枚举短或长日期格式


EnumSystemCodePages
VB声明
Declare Function EnumSystemCodePages Lib "KERNEL32" Alias "EnumSystemCodePages" (ByVal lpCodePageEnumProc As Long, ByVal dwFlags As Long) As Long
说明
枚举系统中已安装或支持的代码页
返回值
Long，TRUE（非零）表示成功，零表示失败。会将GetLastError设置设为下述某个常数：ERROR_BADDB，ERROR_INVALID_FLAGS，ERROR_INVALID_PARAMETER
参数表
参数 | 类型及说明
lpCodePageEnumProc | Long，指向为每个代码页都调用的一个函数的指针。用Addressof运算符得到位于一个标准模块中的函数的地址
dwFlags | Long，常数CP_INSTALLED表示枚举已安装的所有代码页，CP_SUPPORTED表示枚举所有支持的代码页


EnumSystemLocales
VB声明
Declare Function EnumSystemLocales Lib "KERNEL32" Alias "EnumSystemLocales" (ByVal lpLocaleEnumProc As Long, ByVal dwFlags As Long) As Long
说明
枚举系统已经安装或提供支持的“地方”设置
返回值
Long，TRUE（非零）表示成功，零表示失败。会将GetLastError设置设为下述某个常数：ERROR_BADDB，ERROR_INVALID_FLAGS，ERROR_INVALID_PARAMETER
参数表
参数 | 类型及说明
lpLocaleEnumProc | Long，指向为每个“地方”都调用的一个函数的指针。用Addressof运算符得到位于一个标准模块中的函数的地址
dwFlags | Long，常数LCID_INSTALLED表示枚举已安装的所有地方；LCID_SUPPORTED则枚举所有支持的地方


EnumTimeFormats
VB声明
Declare Function EnumTimeFormats Lib "KERNEL32" Alias "EnumTimeFormats" (ByVal lpTimeFmtEnumProc As Long, ByVal Locale As Long, ByVal dwFlags As Long) As Long
说明
枚举一个指定的地方适用的时间格式
返回值
Long，TRUE（非零）表示成功，零表示失败。会将GetLastError设置设为下述某个常数：ERROR_BADDB，ERROR_INVALID_FLAGS，ERROR_INVALID_PARAMETER
参数表
参数 | 类型及说明
lpTimeFmtEnumProc | Long，指向为每种时间格式都调用的一个函数的指针。用Addressof运算符得到位于一个标准模块中的函数的地址
Locale | Long，用于决定具体枚举格式的“地方”设置
dwFlags | Long，未用，设为零


ExitWindowsEx
VB声明
Declare Function ExitWindowsEx Lib "user32" Alias "ExitWindowsEx" (ByVal uFlags As Long, ByVal dwReserved As Long) As Long
说明
退出windows，并用特定的选项重新启动
返回值
Long，非零表示成功，零表示失败。会设置GetLastError
参数表
参数 | 类型及说明
uFlags | Long，指定下述一个或多个标志（用OR运算符合并到一起）
 | EWX_FORCE | 强迫中止没有响应的进程
 | EWX_LOGOFF | 中止进程，然后注销
 | EWX_SHUTDOWN | 关掉系统电源（如果可能的话，ATX电源就可以）
 | EWX_REBOOT | 重新引导系统
 | EWX_SHUTDOWN | 关闭系统
dwReserved | Long，保留，设为零
注解
这个函数调用后会立刻返回，系统关闭过程是在后台进行的。注意先中止自己的应用程序，使关闭过程更显平顺。当然，您的进程必须有足够的优先权，否则也不能执行这种操作

Top


ExpandEnvironmentStrings
VB声明
Declare Function ExpandEnvironmentStrings Lib "kernel32" Alias "ExpandEnvironmentStringsA" (ByVal lpSrc As String, ByVal lpDst As String, ByVal nSize As Long) As Long
说明
扩充环境字串。具体操作过程与命令行处理的所为差不多。也就是说，将由百分号封闭起来的环境变量名转换成那个变量的内容。比如，“%path%”会扩充成完整路径。在vb里经常用于为新进程创建一个环境块
返回值
Long，lpDst要求的缓冲区的大小。如nSize小于这个数字（也就是说，缓冲区太小，以至不能全容下扩充过后的字串），那么lpDst不会被载入。可利用这个结果改变字串的大小。零表示遇到错误。会设置GetLastError
参数表
参数 | 类型及说明
lpSrc | String，欲扩充的字串
lpDst | String，扩充过后的字串
nSize | Long，lpDst的长度。注意预先对lpDst进行初始化，使其与这个长度相符
示例
Dim s$, dl& Dim y As String * 5 s$ = "%PATH%" dl& = ExpandEnvironmentStrings(s$, y, 499) Print y

Top


FreeEnvironmentStrings
VB声明
Declare Function FreeEnvironmentStrings& Lib "kernel32" Alias "FreeEnvironmentStringsA" (ByVal lpsz As Long)
说明
翻译指定的环境字串块
返回值
Long，非零表示成功，零表示失败。会设置GetLastError
参数表
参数 | 类型及说明
lpsz | Long，指向一个内存块的句柄；那个内存块是以前通过GetEnvironmentStrings函数获得的
注解
开头的声明来自于我的资料，而在vb自带的api文本查看器中的声明为：Declare Function FreeEnvironmentStrings Lib "kernel32" Alias "FreeEnvironmentStringsA" (ByVal lpsz As String) As Long，lpsz的类型为String，不知是谁的错了


GetACP
VB声明
Declare Function GetACP Lib "kernel32" Alias "GetACP" () As Long
说明
判断目前正在生效的ANSI代码页
返回值
Long，目前活动ANSI代码页的标识符。针对一种特定的语言，可能存在多个这样的代码页。可能的代码页包括下面这些：
874 | 泰语 | 932 | 日语
936 | 中文（简体） | 949 | 朝鲜语
950 | 中文（台湾和香港繁体） | 1200 | Unicode
1250 | 东欧语言 | 1251 | 西里尔语
1252 | 美国和西欧语言 | 1253 | 希腊语
1254 | 土耳其语 | 1255 | 希伯来语
1256 | 阿拉伯语 | 1257 | 波罗的语
注解
不要混淆ANSI代码页与OEM代码页的概念！ANSI代码页为不同版本的windows定义标准的ANSI 8位字符集。而OEM代码页指定基础DOS代码页，由系统及键盘使用


GetAsyncKeyState
VB声明
Declare Function GetAsyncKeyState Lib "user32" Alias "GetAsyncKeyState" (ByVal vKey As Long) As Integer
说明
判断函数调用时指定虚拟键的状态
返回值
Long，自对GetAsyncKeyState函数的上一次调用以来，如键已被按过，则位0设为1；否则设为0。如键目前处于按下状态，则位15设为1；如抬起，则为0。微软的win32手册指出：倘若输入焦点从属于与调用函数的输入线程不同的另一个输入线程，则返回值为0（例如，一旦另一个程序拥有焦点，则它应返回零）。证据显示，函数实际是在整个系统的范围内工作的
参数表
参数 | 类型及说明
vKey | Long，欲测试的虚拟键的键码
注解
如指定了VK_LBUTTON 或 VK_RBUTTON，按钮的状态就会根据实际的按钮报告——无论是否曾用SwapMouseButton函数对鼠标的位置进行了交换。win32提供了额外的一些虚拟键码，比如VK_LSHIFT 和 VK_RSHIFT，以便在两个完全一样的键中区分出左右（也包括Ctrl 和 Alt）


GetCaretBlinkTime
VB声明
Declare Function GetCaretBlinkTime Lib "user32" Alias "GetCaretBlinkTime" () As Long
说明
判断插入符光标的闪烁频率
返回值
Long，插入符连续两次闪烁间隔的时间，以毫秒为单位。零表示函数调用失败。会设置GetLastError


GetCaretPos
VB声明
Declare Function GetCaretPos Lib "user32" Alias "GetCaretPos" (lpPoint As POINTAPI) As Long
说明
判断插入符的当前位置
返回值
Long，非零表示成功，零表示失败。会设置GetLastError
参数表
参数 | 类型及说明
lpPoint | POINTAPI，这个结构会随同插入符在窗口客户坐标系统中的位置载入；那个窗口是插入符的父窗口


GetClipCursor
VB声明
Declare Function GetClipCursor Lib "user32" Alias "GetClipCursor" (lprc As RECT) As Long
说明
取得一个矩形，用于描述目前为鼠标指针规定的剪切区域；该区域是由SetClipCursor函数定义的
返回值
Long，非零表示成功，零表示失败。会设置GetLastError
参数表
参数 | 类型及说明
lprc | RECT，在屏幕坐标系统中随同当前剪切矩形载入的一个矩形。倘若没有活动的剪切，这个矩形会反映出整个显示屏幕的大小


GetCommandLine
VB声明
Declare Function GetCommandLine Lib "kernel32" Alias "GetCommandLineA" () As String
说明
获得指向当前命令行缓冲区的一个指针
返回值
Long，命令行缓冲区在内存中的地址
注解

Visual Basic Command函数更易获取参数，但它未提供可执行的名称。使用这个函数时，要求进行内存复制操作


GetComputerName
VB声明
Declare Function GetComputerName Lib "kernel32" Alias "GetComputerNameA" (ByVal lpBuffer As String, nSize As Long) As Long
说明
取得这台计算机的名称
返回值
Long，TRUE（非零）表示成功，否则返回零。会设置GetLastError
参数表
参数 | 类型及说明
lpBuffer | String，随同计算机名载入的字串缓冲区
nSize | Long，缓冲区的长度。这个变量随同返回计算机名的实际长度载入
注解
注意nSize参数并不是按值传递的。参考api32.txt，了解MAX_COMPUTER_NAME常数的值
示例
Dim s$ s$ = String$(MAX_COMPUTERNAME_LENGTH+1,0) Dim dl& Dim sz& sz& = MAX_COMPUTERNAME_LENGTH+1 dl& = GetComputerName(s$, sz)
其他
也许你会发现，MAX_COMPUTERNAME_LENGTH常数在vb自带的api文本查看器中找不到。的确，我也没有找到。但我有一个工具：Listapi，这个常数在它那里可以找到

Top


GetCPInfo
VB声明
Declare Function GetCPInfo Lib "kernel32" Alias "GetCPInfo" (ByVal CodePage As Long, lpCPInfo As CPINFO) As Long
说明
取得与指定代码页有关的信息
返回值
Long，非零表示成功，零表示失败。会设置GetLastError
参数表
参数 | 类型及说明
CodePage | Long，欲为其载入信息的代码页的标识符。可能是一个ANSI或OEM代码页
lpCPInfo | CPINFO，用于容纳代码页信息的一个结构


GetCurrencyFormat

GetCurrencyFormat, GetCurrencyFormatBynum
VB声明
Declare Function GetCurrencyFormat& Lib "kernel32" Alias "GetCurrencyFormatA" (ByVal Locale As Long, ByVal dwFlags As Long, ByVal lpValue As String, lpFormat As CURRENCYFMT, ByVal lpCurrencyStr As String, ByVal cchCurrency As Long) Declare Function GetCurrencyFormatBynum& Lib "kernel32" Alias "GetCurrencyFormatA" (ByVal Locale As Long, ByVal dwFlags As Long, ByVal lpValue As String, ByVal lpFormat As Long, ByVal lpCurrencyStr As String, ByVal cchCurrency As Long)
说明
针对指定的“地方”设置，根据货币格式格式化一个数字
返回值
Long，格式化过后的字串的长度。零表示出错。会将GetLastError设置为下述值之一：ERROR_INSUFFICIENT_BUFFER，ERROR_INVALID_FLAGS，ERROR_INVALID_PARAMETER
参数表
参数 | 类型及说明
Locale | Long，用于决定格式的地方ID。lpFormat参数中指定的任何信息（倘若不是NULL）都优先于特定于地方的信息
dwFlags | Long，如指定了lpFormat，那么该参数应该为零。否则，可设为LOCALE_NOUSEROVERRIDE，强制使用系统地方参数——即使它们已由用户取代
lpValue | String，指定欲格式化的数字。可以只有数位、一个前缀“-”号以及一个小数点
lpFormat | CURRENCYFMT，可设为NULL，使用特定于不同地方的值（用GetCurrencyFormatBynum，则可通过ByVal As Long形式传递这个参数）。否则，可引用一个CURRENCYFMT结构，其中包含所有必要的字段，可填入需要用到的信息
lpCurrencyStr | String，指定一个缓冲区，用于容纳格式化过后的字串。注意事先对字串进行初始化
cchCurrency | Long，lpCurrencyStr缓冲区的长度。如为零，表示函数会返回需要缓冲区的大小
注解
在vb里，如使用一个别名，其中的lpFormat设为NULL，则可以正常使用。CURRENCYFMT结构的正确预初始化非常具有挑战性

Top


GetCursor
VB声明
Declare Function GetCursor Lib "user32" Alias "GetCursor" () As Long
说明
获取目前选择的鼠标指针的句柄
返回值
Long，目前使用的指针的句柄。倘若不存在指针，则返回零
注解

这个函数返回的是当前线程的指针——不能获取其他应用程序的指针


GetCursorPos
VB声明
Declare Function GetCursorPos Lib "user32" Alias "GetCursorPos" (lpPoint As POINTAPI) As Long
说明
获取鼠标指针的当前位置
返回值
Long，非零表示成功，零表示失败。会设置GetLastError
参数表
参数 | 类型及说明
lpPoint | POINTAPI，随同指针在屏幕像素坐标中的位置载入的一个结构


GetDateFormat
VB声明
Declare Function GetDateFormat Lib "kernel32" Alias "GetDateFormatA" (ByVal Locale As Long, ByVal dwFlags As Long, lpDate As SYSTEMTIME, ByVal lpFormat As String, ByVal lpDateStr As String, ByVal cchDate As Long) As Long
说明
针对指定的“当地”格式，对一个系统日期进行格式化
返回值
Long，格式化过后的字串的长度。零表示出错，会将GetLastError设置为下述值之一：ERROR_INSUFFICIENT_BUFFER，ERROR_INVALID_FLAGS，ERROR_INVALID_PARAMETER
参数表
参数 | 类型及说明
Locale | Long，用于决定格式的地方ID。lpFormat参数中指定的任何信息（倘若不是NULL）都优先于特定于地方的信息
dwFlags | Long，如指定了lpFormat，那么该参数应该为零。否则，可设为LOCALE_NOUSEROVERRIDE，强制使用系统地方参数——即使它们已由用户取代。用DATE_SHORTDATE 或 DATE_LONGDATE选择不同的日期格式
lpDate | SYSTEMTIME，包含了一个系统日期的结构
lpFormat | String，可设为NULL，使用特定于不同地方的值（用vbNullString传递一个NULL）。否则包含一个日期格式字串。对d,dd,ddd,dddd,m,mm,mmm,mmmm,y,yy,yyyy这样的代码，它们的用法与在vb格式命令中的用法是相同的。注意用gg指定一个“纪元”
lpDateStr | String，指定一个缓冲区，用于容纳格式化过后的字串。注意事先对字串进行初始化
cchDate | Long，lpDateStr缓冲区的长度。如为零，表示函数会返回需要缓冲区的大小

Top


GetDoubleClickTime
VB声明
Declare Function GetDoubleClickTime Lib "user32" Alias "GetDoubleClickTime" () As Long
说明
判断连续两次鼠标单击之间会被处理成双击事件的间隔时间
返回值
Long，以毫秒表示的双击时间


GetEnvironmentStrings
VB声明
Declare Function GetEnvironmentStrings& Lib "kernel32" Alias "GetEnvironmentStringsA" ()
说明
为包含了当前环境字串设置的一个内存块分配和返回一个句柄。这个内存块包含了所有环境字串。各字串间用一个NULL分隔；连续两个NULL标志着列表的结尾
返回值
Long，指向包含了环境字串的一个内存块的地址。零表示失败。会设置GetLastError
注解

注意一定要用FreeEnvironmentStrings函数释放这个内存块

其他
请看从vb的api文本查看器复制的声明：Declare Function GetEnvironmentStrings Lib "kernel32" Alias "GetEnvironmentStringsA" () As String，与前面的声明返回值不同


GetEnvironmentVariable
VB声明
Declare Function GetEnvironmentVariable Lib "kernel32" Alias "GetEnvironmentVariableA" (ByVal lpName As String, ByVal lpBuffer As String, ByVal nSize As Long) As Long
说明
取得一个环境变量的值
返回值
Long，载入的环境变量的长度。如指定的环境字串不存在，就返回零。如lpBuffer的长度不足以全部容下字串，则返回字串的全长。随后可用这个长度分配一个足够大的缓冲区
参数表
参数 | 类型及说明
lpName | String，欲读入的环境字串的名称
lpBuffer | String，随同字串装载的一个缓冲区。注意预先将其初始化到合适的长度
nSize | Long，lpBuffer的长度


GetInputState
VB声明
Declare Function GetInputState Lib "user32" Alias "GetInputState" () As Long
说明
判断是否存在任何待决（等待处理）的鼠标或键盘事件
返回值
Long，非零表示成功，零表示失败
注解

在win32下，这个函数只返回当前输入线程的状态


GetKBCodePage
VB声明
Declare Function GetKBCodePage Lib "user32" Alias "GetKBCodePage" () As Long
说明
由GetOEMCP取代，两者功能完全相同


GetKeyboardLayout
VB声明
Declare Function GetKeyboardLayout Lib "user32" Alias "GetKeyboardLayout" (ByVal dwLayout As Long) As Long
说明
取得一个句柄，描述指定应用程序的键盘布局
返回值
Long，键盘布局的句柄
参数表
参数 | 类型及说明
dwLayout | Long，欲检查的线程的标识符


GetKeyboardLayoutList
VB声明
Declare Function GetKeyboardLayoutList Lib "user32" Alias "GetKeyboardLayoutList" (ByVal nBuff As Long, lpList As Long) As Long
说明
获得系统适用的所有键盘布局的一个列表
返回值
Long，装载到内存的键盘布局的数量
参数表
参数 | 类型及说明
nBuff | Long，lpList数组中的条目数量。如设为零，表示获取可用键盘布局的数量
lpList | Long，指定一个数组，它的元素数量至少应有nBuff规定的元素那么多。这个数组会随同句柄载入可用的键盘布局


GetKeyboardLayoutName
VB声明
Declare Function GetKeyboardLayoutName Lib "user32" Alias "GetKeyboardLayoutNameA" (ByVal pwszKLID As String) As Long
说明
取得当前活动键盘布局的名称
返回值
Long，非零表示成功，零表示失败。会设置GetLastError
参数表
参数 | 类型及说明
pwszKLID | String，长度为 KL_NAMELENGTH 个字符的字串
注解
在NT中，键盘布局与特定的应用程序有关。而在windows95中，它取决于特定的线程


GetKeyboardState
VB声明
Declare Function GetKeyboardState Lib "user32" Alias "GetKeyboardState" (pbKeyState As Byte) As Long
说明
取得键盘上每个虚拟键当前的状态
返回值
Long，非零表示成功，零表示失败。会设置GetLastError
参数表
参数 | 类型及说明
pbKeyState | Long，总共含256个条目的字节数组中的第一个项目。每个字节都会附带载入与虚拟键对应的状态。如开关键打开，则位0设为1（开关键包括CapsLock， NumLock， ScrollLock）；如某个键当时按下，则位7为1；如已经抬起，则为0
注解
虚拟键码常数 VK_? 作为数组的索引使用。这个函数相应于取得按键状态于一瞬间的“快照”——键按下或松开以后，数组不会自动更新。在win32中注意用一个字节数组避免由于vb向Unicode的内部转换而导致错误


GetKeyboardType
VB声明
Declare Function GetKeyboardType Lib "user32" Alias "GetKeyboardType" (ByVal nTypeFlag As Long) As Long
说明
了解与正在使用的键盘有关的信息
返回值
Long，零表示出错。否则返回下述值之一
nTypeFlag=0 | 1——PC或兼容的83键键盘；2——Olivetti102键键盘；3——AT或兼容84键键盘；4——增强型（IBM）101或102键键盘；5——Nokia1050键盘；6——Nokia9140键盘；7——日文键盘
nTypeFlag=1 | 任何值，由厂商决定
nTypeFlag=2 | 1——10个功能键（即 F? 键）；2——12或18个功能键；3——10个功能键；4——12个功能键；5——10个功能键；6——24个功能键；7——由厂商决定
参数表
参数 | 类型及说明
nTypeFlag | Long，可设为下述值之一
 | 0——返回键盘类型
 | 1——返回键盘子类型
 | 2——返回键盘上的功能键数量

Top


GetKeyNameText
VB声明
Declare Function GetKeyNameText Lib "user32" Alias "GetKeyNameTextA" (ByVal lParam As Long, ByVal lpBuffer As String, ByVal nSize As Long) As Long
说明
在给出扫描码的前提下，判断键名
返回值
Long，lpBuffer中载入的键名的实际长度
参数表
参数 | 类型及说明
lParam | Long，位0到5=0；位16到23=按键的扫描码；位24=增强型键盘上的扩展位；位25=如设为1，表示忽略左右Shift和Ctrl键的区别
lpBuffer | String，字串预先初始化成至少nSize+1字节，以便随同键名载入
nSize | Long，字串的最大长度


GetKeyState
VB声明
Declare Function GetKeyState Lib "user32" Alias "GetKeyState" (ByVal nVirtKey As Long) As Integer
说明
针对已处理过的按键，在最近一次输入信息时，判断指定虚拟键的状态
返回值
Integer，如开关键打开，则位0设为1（开关键包括CapsLock， NumLock，ScrollLock）；如某个键当时正处于按下状态，则位15为1；如已经抬起，则为0
参数表
参数 | 类型及说明
nVirtKey | Long，欲测试的虚拟键键码。对字母、数字字符（A-Z、a-z、0-9），用它们实际的ASCII值


GetLastError
VB声明
Declare Function GetLastError Lib "kernel32" Alias "GetLastError" () As Long
说明
针对之前调用的api函数，用这个函数取得扩展错误信息（在vb里使用：在vb中，用Err对象的GetLastError属性获取GetLastError的值。这样做是必要的，因为在api调用返回以及vb调用继续执行期间，vb有时会重设GetLastError的值）
返回值
Long，由api函数决定。请参考api32.txt文件，其中列出了一系列错误常数；都以ERROR_前缀起头。常用的错误代码见下表
ERROR_INVALID_HANDLE | 无效的句柄作为一个参数传递
ERROR_CALL_NOT_IMPLEMENTED | 在win 95下调用专为win nt设计的win32 api函数
ERROR_INVALID_PARAMETER | 函数中有个参数不正确
注解
GetLastError返回的值通过在api函数中调用SetLastError或SetLastErrorEx设置。函数并无必要设置上一次错误信息，所以即使一次GetLastError调用返回的是零值，也不能担保函数已成功执行。只有在函数调用返回一个错误结果时，这个函数指出的错误结果才是有效的。通常，只有在函数返回一个错误结果，而且已知函数会设置GetLastError变量的前提下，才应访问GetLastError；这时能保证获得有效的结果。SetLastError函数主要在对api函数进行模拟的dll函数中使用，所以对vb应用程序来说是没有意义的

Top


GetLocaleInfo
VB声明
Declare Function GetLocaleInfo Lib "kernel32" Alias "GetLocaleInfoA" (ByVal Locale As Long, ByVal LCType As Long, ByVal lpLCData As String, ByVal cchData As Long) As Long
说明
取得与指定“地方”有关的信息
返回值
Long，装载到缓冲区的字符数，或者cchData要求的缓冲区长度。零表示出错。会将GetLastError设为下述值之一：ERROR_INSUFFICIENT_BUFFER，ERROR_INVALID_FLAGS，ERROR_INVALID_PARAMETER
参数表
参数 | 类型及说明
Locale | Long，欲为其获得信息的地方ID
LCType | Long，要取回的信息类型。参考api32.txt文件中带 LOCALE_ 前缀的常数。用OR运算符合并LOCALE_NOUSEROVERRIDE，从而强制使用系统默认信息——即使当前用户已修改了相关设置
lpLCData | String，指定一个缓冲区，用于装载要求的信息。注意预先将字串格式化成合适的长度
cchData | Long，lpLCData缓冲区的长度；如设为零，表示获取必要的缓冲区长度


GetLocalTime
VB声明
Declare Sub GetLocalTime Lib "kernel32" Alias "GetLocalTime" (lpSystemTime As SYSTEMTIME)
说明
在lpSystemTime结构中装载本地日期和时间
参数表
参数 | 类型及说明
lpSystemTime | SYSTEMTIME，用于装载本地时间的结构


GetNumberFormat

GetNumberFormat,GetNumberFormatBynum
VB声明
Declare Function GetNumberFormat& Lib "kernel32" Alias "GetNumberFormatA" (ByVal Locale As Long, ByVal dwFlags As Long, ByVal lpValue As String, lpFormat As NUMBERFMT, ByVal lpNumberStr As String, ByVal cchNumber As Long) Declare Function GetNumberFormatBynum& Lib "kernel32" Alias "GetNumberFormatA" (ByVal Locale As Long, ByVal dwFlags As Long, ByVal lpValue As String, ByVal lpFormat As Long, ByVal lpNumberStr As String, ByVal cchNumber As Long)
说明
针对指定的“地方”，按特定的格式格式化一个数字
返回值
Long，格式化过后的字串的长度。零表示出错。会将GetLastError设为下述值之一：ERROR_INSUFFICIENT_BUFFER，ERROR_INVALID_FLAGS，ERROR_INVALID_PARAMETER
参数表
参数 | 类型及说明
Locale | Long，决定了具体格式的地方ID。lpFormat参数（如果不为NULL）指定的任何信息都优先于各“地方”不同的特定信息
dwFlags | Long，如指定了lpFormat，这个参数应为零。否则，可设为LOCALE_NOUSEROVERRIDE，强制使用系统地方参数——无论用户是否已作出相应的修改
lpValue | String，欲格式化的数字。数字可以只有数位、加在前面的一个“-”号以及一个小数点
lpFormat | NUMBERFMT，可设为NULL，表示使用本地特有的值（倘若用GetNumberFormatBynum，则可将这个参数以ByVal As Long的形式传递）。否则，可引用一个NUMBERFMT结构，其中的各个字段载入欲使用的格式信息
lpNumberStr | String，指定一个缓冲区，用于装载格式化过后的字串。注意先初始化成合适的长度
cchNumber | Long，lpNumberStr缓冲区的长度。如为零，函数会返回缓冲区必要的长度

Top


GetOEMCP
VB声明
Declare Function GetOEMCP Lib "kernel32" Alias "GetOEMCP" () As Long
说明
判断在OEM和ANSI字符集间转换的windows代码页
返回值
Long，目前处于活动状态的OEM代码页的标识符。针对一种特定的语言，可能存在多个代码页。以下是可用代码页列表
437 | 默认：美国 | 708-720 | 阿拉伯代码页 | 737 | 希腊
775 | 波罗的 | 850 | 国际 | 852 | Slavic
855 | 西里尔语 | 857 | 土耳其语 | 860 | 葡萄牙语
861 | 冰岛语 | 862 | 希伯来语 | 863 | 加拿大法语
864 | 阿拉伯语 | 865 | 挪威/丹麦语 | 866 | 俄语
874 | 泰语 | 932 | 日语 | 936 | 中文（简体）
949 | 朝鲜语 | 950 | 中文（台、港繁体） | 1361 | 朝鲜语


GetQueueStatus
VB声明
Declare Function GetQueueStatus Lib "user32" Alias "GetQueueStatus" (ByVal fuFlags As Long) As Long
说明
判断应用程序消息队列中待决（等待处理）的消息类型
返回值
Long，高字是一个16位的旗标字，包含了待决的消息。其中的各个位是由为fuFlags参数定义的同样的常数决定的。低字是一个对应的旗标字。其中各个位指出自上次调用这个函数以来，或自消息上一次处理以来，新加入的待处理消息
参数表
参数 | 类型及说明
fuFlags | Long，一个标志（旗标）字，指定要检查的消息。标志位是由下述常数定义的
 | QS_KEY | WM_CHAR消息（会造成vb KeyPressed事件）
 | QS_MOUSE | 任何鼠标消息
 | QS_MOUSEMOVE | MouseMove消息或事件
 | QS_MOUSEBUTTON | 鼠标按钮消息或相关事件
 | QS_PAINT | 等待处理的Paint消息
 | QS_POSTMESSAGE | 投递的其他消息
 | QS_SENDMESSAGE | 从另一个应用程序中发出的消息
 | QS_TIMER | 计时器消息
 | QS_HOTKEY | 队列中的一条Hotkey消息
注解
在vb里这个函数不特别有用（Use with VB:Not particularly useful.）

Top


GetSysColor
VB声明
Declare Function GetSysColor Lib "user32" Alias "GetSysColor" (ByVal nIndex As Long) As Long
说明
判断指定windows显示对象的颜色
返回值
Long，指定对象的RGB颜色
参数表
参数 |  | 类型及说明
nIndex |  | Long，一个常数，指出特定的windows显示对象，如下表
Windows对象常数表
常数定义 | Windows对象 | 常数定义 | Windows对象
COLOR_ACTIVEBORDER | 活动窗口的边框 | COLOR_ACTIVECAPTION | 活动窗口的标题
COLOR_APPWORKSPACE | MDI桌面的背景 | COLOR_BACKGROUND | windows桌面
COLOR_BTNFACE | 按钮 | COLOR_BTNHIGHLIGHT | 按钮的3D加亮区
COLOR_BTNSHADOW | 按钮的3D阴影 | COLOR_BTNTEXT | 按钮文字
COLOR_CAPTIONTEXT | 窗口标题中的文字 | COLOR_GRAYTEXT | 灰色文字；如使用了抖动技术则为零
COLOR_HIGHLIGHT | 选定的项目背景 | COLOR_HIGHLIGHTTEXT | 选定的项目文字
COLOR_INACTIVEBORDER | 不活动窗口的边框 | COLOR_INACTIVECAPTION | 不活动窗口的标题
COLOR_INACTIVECAPTIONTEXT | 不活动窗口的文字 | COLOR_MENU | 菜单
COLOR_MENUTEXT | 菜单正文 | COLOR_SCROLLBAR | 滚动条
COLOR_WINDOW | 窗口背景 | COLOR_WINDOWFRAME | 窗框
COLOR_WINDOWTEXT | 窗口正文 | COLOR_3DDKSHADOW | 3D深阴影 *
COLOR_3DFACE | 3D阴影化对象的正面颜色 * | COLOR_3DHILIGHT | 3D加亮颜色（win95）
COLOR_3DLIGHT | 3D阴影化对象的浅色 * | COLOR_INFOBK | 工具提示的背景色 *
COLOR_INFOTEXT | 工具提示的文本色 * |  |
*：带 * 号的常数未获NT 3.51的支持

Top


GetSystemDefaultLangID
VB声明
Declare Function GetSystemDefaultLangID Lib "kernel32" Alias "GetSystemDefaultLangID" () As Integer
说明
取得系统的默认语言ID
返回值
Integer，系统的默认语言ID


GetSystemDefaultLCID
VB声明
Declare Function GetSystemDefaultLCID Lib "kernel32" Alias "GetSystemDefaultLCID" () As Long
说明
取得当前的默认系统“地方”
返回值
Long，默认的系统地方ID


GetSystemInfo
VB声明
Declare Sub GetSystemInfo Lib "kernel32" Alias "GetSystemInfo" (lpSystemInfo As SYSTEM_INFO)
说明
在一个SYSTEM_INFO结构中载入与底层硬件平台有关的信息
参数表
参数 | 类型及说明
lpSystemInfo | SYSTEM_INFO，指定一个结构，用于装载适当的系统信息


GetSystemMetrics
VB声明
Declare Function GetSystemMetrics Lib "user32" Alias "GetSystemMetrics" (ByVal nIndex As Long) As Long
说明
返回与windows环境有关的信息
返回值
Long，取决于具体的常数索引
参数表
参数 | 类型及说明
nIndex | Long，常数，指定欲获取的信息；如下表所示
nIndex常数设置
常数定义 | 取得信息
SM_ARRANGE | 设置windows如何排列最小化窗口的一个标志。参考api32.txt中的ARW常数
SM_CLEANBOOT | 指定启动模式。0=普通模式；1=带网络支持的安全模式
SM_CMETRICS | 可用系统环境的数量
SM_CMOUSEBUTTON | 鼠标按钮（按键）的数量。如没有鼠标，就为零
SM_CXBORDER, SM_CYBORDER | 尺寸不可变边框的大小
SM_CXCURSOR, SM_CYCURSOR | 标准指针大小
SM_CXDLGFRAME, SM_CYDLGFRAME | 对话框边框的大小
SM_CXDOUBLECLK, SM_CYDOUBLECLK | 双击区域的大小（参考注解）
SM_CXFRAME, SM_CYFRAME | 尺寸可变边框的大小（在win95和nt 4.0中使用SM_C?FIXEDFRAME）
SM_CXFULLSCREEN, SM_CYFULLSCREEN | 最大化窗口客户区的大小
SM_CXHSCROLL, SM_CYHSCROLL | 水平滚动条上的箭头大小
SM_CXHTHUMB, SM_CYHTHUMB | 滚动块在水平滚动条上的大小
SM_CXICON, SM_CYICON | 标准图标的大小
SM_CXICONSPACING, SM_CYICONSPACING | 桌面图标之间的间隔距离。在win95和nt 4.0中是指大图标的间距
SM_CXMAXIMIZED, SM_CYMAXIMIZED | 最大化窗口的默认尺寸
SM_CXMAXTRACK, SM_CYMAXTRACK | 改变窗口大小时，最大的轨迹宽度
SM_CXMENUCHECK, SM_CYMENUCHECK | 菜单复选号位图的大小
SM_CXMENUSIZE, SM_CYMENUSIZE | 菜单栏上的按钮大小
SM_CXMIN, SM_CYMIN | 窗口的最小尺寸
SM_CXMINIMIZED, SM_CYMINIMIZED | 最小化的窗口必须填充进去的一个矩形小于或等于SM_C?ICONSPACING
SM_CXMINTRACK, SM_CYMINTRACK | 窗口的最小轨迹宽度
SM_CXSCREEN, SM_CYSCREEN | 屏幕大小
SM_CXSIZE, SM_CYSIZE | 标题栏位图的大小
SM_CXSIZEFRAME, SM_CYSIZEFRAME | 具有WS_THICKFRAME样式的窗口的大小
SM_CXSMICON, SM_CYSMICON | 小图标的大小
SM_CXSMSIZE, SM_CYSMSIZE | 小标题按钮的大小
SM_CXVSCROLL, SM_CYVSCROLL | 垂直滚动条中的箭头按钮的大小
SM_CYCAPTION | 窗口标题的高度
SM_CYKANJIWINDOW | Kanji窗口的大小（Height of Kanji window）
SM_CYMENU | 菜单高度
SM_CYSMCAPTION | 小标题的高度
SM_CYVTHUMB | 垂直滚动条上滚动块的高度
SM_DBCSENABLED | 如支持双字节则为TRUE
SM_DEBUG | 如windows的调试版正在运行，则为TRUE
SM_MENUDROPALIGNMENT | 如弹出式菜单对齐菜单栏项目的左侧，则为零
SM_MIDEASTENABLED | 允许了希伯来和阿拉伯语
SM_MOUSEPRESENT | 如安装了鼠标则为TRUE
SM_MOUSEWHEELPRESENT | 如安装了带轮鼠标则为TRUE；只适用于nt 4.0
SM_NETWORK | 如安装了网络，则设置位0。其他位保留未用
SM_PENWINDOWS | 如装载了支持笔窗口的DLL，则表示笔窗口的句柄
SM_SECURE | 如安装了安全（保密）机制，则为TRUE
SM_SHOWSOUNDS | 强制视觉提示播放声音
SM_SLOWMACHINE | 系统速度太慢，但仍在运行中（System is too slow for effective use but is being run anyway）
SM_SWAPBUTTON | 如左右鼠标键已经交换，则为TRUE
注解
双击区域指定屏幕上一个特定的显示区域，只有在这个区域内连续进行两次鼠标单击，才有可能被当作双击事件处理
其他
常数 SM_ARRANGE, SM_CLEANBOOT, SM_CMETRICS, SM_C?MAXIMIZED, SM_C?MAXTRACK, SM_C?SIZEFRAME, SM_C?SMICON, SM_C?SMSIZE, SM_CYSMCAPTION, SM_SECURE, SM_SHOWSOUNDS, and SM_SLOWMACHINE 未获 NT 3.51 及更早版本的支持

Top


GetSystemPowerStatus
VB声明
Declare Function GetSystemPowerStatus Lib "kernel32" Alias "GetSystemPowerStatus" (lpSystemPowerStatus As SYSTEM_POWER_STATUS) As Long
说明
获得与当前系统电源状态有关的信息。对便携式计算机来说，这些信息特别有用。在那些地方，可用这个函数了解有关电源和电池组的情况
返回值
Long，非零表示成功，零表示失败
参数表
参数 | 类型及说明
lpSystemPowerStatus | SYSTEM_POWER_STATUS，用于装载电源状态信息的结构
注解
结果的准确度取决于系统实际的电源管理能力


GetSystemTime
VB声明
Declare Sub GetSystemTime Lib "kernel32" Alias "GetSystemTime" (lpSystemTime As SYSTEMTIME)
说明
在一个SYSTEMTIME中载入当前系统时间，这个时间采用的是“协同世界时间”（即UTC，也叫做GMT）格式
参数表
参数 | 类型及说明
lpSystemTime | SYSTEMTIME，随同当前时间载入的结构


GetSystemTimeAdjustment
VB声明
Declare Function GetSystemTimeAdjustment Lib "kernel32" Alias "GetSystemTimeAdjustment" (lpTimeAdjustment As Long, lpTimeIncrement As Long, lpTimeAdjustmentDisabled As Boolean) As Long
说明
Win32可使内部系统时钟与一个外部的时钟信号源同步，方法是定时添加一个校准值。这个函数指定的所有时间都以100ns（0.1ms）为单位递增
返回值
Long，非零表示成功，零表示失败
参数表
参数 | 类型及说明
lpTimeAdjustment | Long，添加到内部系统时钟的时间量
lpTimeIncrement | Long，校准间隔时间。等于中断时钟时间
lpTimeAdjustmentDisabled | Boolean，如时间调校功能关闭，则为TRUE
示例
Dim lpTimeAdjustment&, lpTimeIncrement&, lpTimeAdjustmentDisabled& GetSystemTimeAdjustment lpTimeAdjustment, lpTimeIncrement, lpTimeAdjustmentDisabled Print "Time adjustment: " & lpTimeAdjustment & "Increment: " & lpTimeIncrement & "Adjustment Disabled: " & lpTimeAdjustmentDisabled


GetThreadLocale
VB声明
Declare Function GetThreadLocale Lib "KERNEL32" Alias "GetThreadLocale" () As Long
说明
取得当前线程的地方ID
返回值
Long，地方标识符
注解

在vb下，除非从一个多线程EXE服务器调用，否则当前线程就是当前应用程序


GetTickCount
VB声明
Declare Function GetTickCount Lib "kernel32" Alias "GetTickCount" () As Long
说明
用于获取自windows启动以来经历的时间长度（毫秒）
返回值
Long，以毫秒为单位的windows运行时间


GetTimeFormat
VB声明
Declare Function GetTimeFormat Lib "kernel32" Alias "GetTimeFormatA" (ByVal Locale As Long, ByVal dwFlags As Long, lpTime As SYSTEMTIME, ByVal lpFormat As String, ByVal lpTimeStr As String, ByVal cchTime As Long) As Long
说明
针对当前指定的“地方”，按特定的格式格式化一个系统时间
返回值
Long，格式化过后的字串的长度。零表示出错。会将GetLastError设置为下述值之一：ERROR_INSUFFICIENT_BUFFER，ERROR_INVALID_FLAGS，ERROR_INVALID_PARAMETER
参数表
参数 | 类型及说明
Locale | Long，决定了具体格式的地方ID。lpFormat参数中指定的任何信息（倘若不是NULL）都要优先于各地方不同的特别信息
dwFlags | Long，如指定了lpFormat，那么该参数应该为零。否则，可设为LOCALE_NOUSEROVERRIDE，表示强制使用系统地方参数——即使它们已由用户更改。用DATE_SHORTDATE或DATE_LONGDATE选择不同的日期格式
lpTime | SYSTEMTIME，用于包容系统时间的一个结构
lpFormat | String，可设为NULL，使用特定于不同地方的值（用vbNullString传递一个NULL）。否则包含一个时间格式字串。对h,hh,hhh,hhhh,m,mm,s,ss这样的代码来说，它们的用法与在vb格式命令中的用法是相同的。t和tt用于指定一个时间段标志（A或AM，P或PM）
lpTimeStr | String，指定一个缓冲区，用于容纳格式化过后的字串。注意事先对字串的长度进行正确的预初始化
cchTime | Long，lpTimeStr缓冲区的长度。如为零，表示函数会返回需要缓冲区的大小
注解
对于dwFlags参数的解释可能翻译有错误。原文为： If lpFormat is specified, this should be zero. Otherwise, may be set to LOCALE_NOUSEROVERRIDE to force the system locale parameters to be used even if they have been overridden by the user. Use the self-explanatory constants TIME_NOMINUITESORSECONDS, TIME_NOSECONDS, or TIME_FORCE24HOURFORMAT to choose between date formats. Constant TIME_NOMARKER removes the AM or PM marker.

Top


GetTimeZoneInformation
VB声明
Declare Function GetTimeZoneInformation Lib "kernel32" Alias "GetTimeZoneInformation" (lpTimeZoneInformation As TIME_ZONE_INFORMATION) As Long
说明
在一个TIME_ZONE_INFORMATION结构中载入与系统时区设置有关的信息
返回值
Long，下述常数之一：
TIME_ZONE_ID_INVALID | 函数执行失败，会设置GetLastError
TIME_ZONE_ID_UNKNOWN | 时区未知（可能仍然指定了bias值）
TIME_ZONE_ID_STANDARD | 标准时间有效
TIME_ZONE_ID_DAYLIGHT | 夏令时有效
参数表
参数 | 类型及说明
lpTimeZoneInformation | TIME_ZONE_INFORMATION，用于载入时区信息的结构
注解
在lpTimeZoneInformation结构中为本地时间添加bias信息，从而获得系统时间。TIME_ZONE_INFORMATION结构内部的DaylightName和StandardName字串肯定采用Unicode格式


GetUserDefaultLangID
VB声明
Declare Function GetUserDefaultLangID Lib "kernel32" Alias "GetUserDefaultLangID" () As Integer
说明
为当前用户取得默认语言ID
返回值
Long，当前用户的语言ID


GetUserDefaultLCID
VB声明
Declare Function GetUserDefaultLCID Lib "kernel32" Alias "GetUserDefaultLCID" () As Long
说明
取得当前用户的默认“地方”设置
返回值
Long，针对当前用户的默认地方ID


GetUserName
VB声明
Declare Function GetUserName Lib "advapi32.dll" Alias "GetUserNameA" (ByVal lpBuffer As String, nSize As Long) As Long
说明
取得当前用户的名字
返回值
Long，TRUE（非零）表示成功，否则返回零。会设置GetLastError
参数表
参数 | 类型及说明
lpBuffer | String，一个字串缓冲区，预先初始化成由nSize指定的长度。它将用于容纳用户名
nSize | Long，初始化成lpBuffer的长度。返回以后，它会包含载入lpBuffer的字符数量
示例
Dim s$, cnt&, dl& cnt& = 199 s$ = String$(200,0) dl& = GetUserName(s$, cnt) Debug.Print Left$(s$, cnt); cnt


GetVersion
VB声明
Declare Function GetVersion Lib "kernel32" Alias "GetVersion" () As Long
说明
判断当前运行的Windows和DOS版本
返回值
Long，低16位包含了windows版本；低字节包含了主版本号（3代表windows 3.10，4代表nt 4.0）；高字节包含了两个数位的辅助版本号（10代表windows 3.10，95代表windows 95）。高16位则包含了平台信息。针对windows NT，高位设为0；针对windows for workgroups上运行的Win32s，则高位为1
注解

在win32下，最好换用GetVersionEx函数。在win32下，高字不会返回DOS版本


GetVersionEx
VB声明
Declare Function GetVersionEx Lib "kernel32" Alias "GetVersionExA" (ByVal lpVersionInformation As OSVERSIONINFO) As Long
说明
在一个OSVERSIONINFO结构中载入与平台和操作系统有关的版本信息
返回值
Long，非零表示成功，零表示失败
参数表
参数 | 类型及说明
lpVersionInformation | OSVERSIONINFO，用于装载版本信息的结构。在正式调用函数之前，必须先将这个结构的dwOSVersionInfoSize字段设为结构的大小（148）


HideCaret
VB声明
Declare Function HideCaret Lib "user32" Alias "HideCaret" (ByVal hwnd As Long) As Long
说明
在指定的窗口隐藏插入符（光标）
返回值
Long，非零表示成功，零表示失败。会设置GetLastError
参数表
参数 | 类型及说明
hwnd | Long，包含了插入符的窗口的句柄。可能是零；在这种情况下，只有包容了插入符的那个窗口由活动任务拥有时，插入符才会被隐藏
注解
针对插入符的显示，windows维护着一个内部计数器；类似于ShowCursor函数使用的那个。所以对HideCaret 和 ShowCaret的调用必须进行一番权衡


IsValidCodePage
VB声明
Declare Function IsValidCodePage Lib "kernel32" Alias "IsValidCodePage" (ByVal CodePage As Long) As Long
说明
判断一个代码页是否有效
返回值
Long，如代码页有效，就返回TRUE（非零）；否则返回零
参数表
参数 | 类型及说明
CodePage | Long，一个代码页的标识符。参考GetACP和GetOEMCP函数


IsValidLocale
VB声明
Declare Function IsValidLocale Lib "KERNEL32" Alias "IsValidLocale" (ByVal Locale As Long, ByVal dwFlags As Long) As Long
说明
判断地方标识符是否有效
返回值
Long，根据测试条件，如指定的地方有效，就返回TRUE（非零）；否则返回零
参数表
参数 | 类型及说明
Locale | Long，要检查的地方标识符
dwFlags | Long，下述常数之一：
 | LCID_SUPPORTED | 检查“地方”是否能由系统支持
 | LCID_INSTALLED | 检查“地方”是否已获支持并安装


keybd_event
VB声明
Declare Sub keybd_event Lib "user32" Alias "keybd_event" (ByVal bVk As Byte, ByVal bScan As Byte, ByVal dwFlags As Long, ByVal dwExtraInfo As Long)
说明
这个函数模拟了键盘行动
参数表
参数 | 类型及说明
bVk | Byte，欲模拟的虚拟键码
bScan | Byte，键的OEM扫描码
dwFlags | Long，零；或设为下述两个标志之一
 | KEYEVENTF_EXTENDEDKEY | 指出是一个扩展键，而且在前面冠以0xE0代码
 | KEYEVENTF_KEYUP | 模拟松开一个键
dwExtraInfo | Long，通常不用的一个值。api函数GetMessageExtraInfo可取得这个值。允许使用的值取决于特定的驱动程序
注解
这个函数支持屏幕捕获（截图）。在win95和nt4.0下这个函数的行为不同


LoadKeyboardLayout
VB声明
Declare Function LoadKeyboardLayout Lib "user32" Alias "LoadKeyboardLayoutA" (ByVal pwszKLID As String, ByVal flags As Long) As Long
说明
载入一个键盘布局
返回值
Long，键盘布局的句柄。零表示出错
参数表
参数 | 类型及说明
pwszKLID | String，一个8字符字串，用于描述键盘布局的名称。参考注解
flags | Long，下述常数的任何一种组合
 | KLF_ACTIVATE | 载入和激活指定的布局
 | KLF_NOTELLSHELL | 禁止一个外壳挂钩进程（a shell hook procedure）接收到HSHELL_LANGUAGE通告。如准备载入一系列键盘布局，就需要考虑设置这个标志，从而改善性能（不要为最后一个载入的布局设置该标志）
 | KLF_REORDER | 将指定的活动布局移至内部键盘布局列表的起始处
 | KLF_REPLACELANG | 如指定语言的键盘布局已经存在，则用这个将其替换。仅适用于win95
 | KLF_SUBSTITUTE_OK | 在注册表中使用替换信息，为这个语言载入一个由用户指定的替换键盘布局（如果存在的话），而不是载入当前这个布局
 | KLF_UNLOADPREVIOUS | 如KLF_ACTIVATE已经指定并成功，则卸载前一个布局
注解
键盘布局的名称采用“ddddnnnn”的形式。其中，nnnn代表一个语言ID的字串形式，而dddd代表一个设备代码的字串形式。标准的美国键盘名称是“00000409”
其他
键盘布局在win95中取决于特定的线程；在windows nt中，则在整个系统的范围内有效

Top


MapVirtualKey
VB声明
Declare Function MapVirtualKey Lib "user32" Alias "MapVirtualKeyA" (ByVal wCode As Long, ByVal wMapType As Long) As Long
说明
根据指定的映射类型，执行不同的扫描码和字符转换
返回值
Long，取决于wMapType参数
参数表
参数 | 类型及说明
wCode | Long，欲转换的源字符或扫描码
wMapType | Long，控制映射类型，如下所示
 | 0—— wCode是个虚拟键码。函数返回相应的扫描码 1—— wCode是个扫描码。函数返回相应的虚拟键码 2—— wCode是个虚拟键码。函数返回相应的ASCII值（未加Shift组合键）


MapVirtualKeyEx
VB声明
Declare Function MapVirtualKeyEx Lib "user32" Alias "MapVirtualKeyExA" (ByVal uCode As Long, ByVal uMapType As Long, ByVal dwhkl As Long) As Long
说明
根据指定的映射类型，执行不同的扫描码和字符转换
返回值
Long，取决于uMapType参数
参数表
参数 | 类型及说明
uCode | Long，欲转换的源字符或代码
uMapType | Long，控制映射类型，如下所示
 | 0—— uCode是个虚拟键码。函数返回相应的扫描码 1—— uCode是个扫描码。函数返回相应的虚拟键码 2—— uCode是个虚拟键码。函数返回相应的ASCII值（未加Shift组合键）。针对死键，高位设为1。如果出错，返回NULL
dwhkl | Long，键盘布局的句柄
注解
利用这个函数，可在扫描码及附加的虚拟键码间转换。这些虚拟键码包括VK_LSHIFT 和 VK_RSHIFT等。这样一来，便可为表面上两个完全一样的键（也包括Ctrl 和 Alt）区分左键和右键

Top


MessageBeep
VB声明
Declare Function MessageBeep Lib "user32" Alias "MessageBeep" (ByVal wType As Long) As Long
说明
播放一个系统声音。系统声音的分配方案是在控制面板里决定的
返回值
Long，非零表示成功，零表示失败。会设置GetLastError
参数表
参数 | 类型及说明
wType | Long，下述值之一
 | 0xffffffff | 标准响铃
 | MB_ICONASTERISK | 系统星号声（System asterisk sound）
 | MB_ICONEXCLAMATION | 系统惊叹声
 | MB_ICONHAND | 系统指针声（System hand sound）
 | MB_ICONQUESTION | 系统提问声


mouse_event
VB声明
Declare Sub mouse_event Lib "user32" Alias "mouse_event" (ByVal dwFlags As Long, ByVal dx As Long, ByVal dy As Long, ByVal cButtons As Long, ByVal dwExtraInfo As Long)
说明
模拟一次鼠标事件
参数表
参数 | 类型及说明
dwFlags | Long，下述标志的一个组合
 | MOUSEEVENTF_ABSOLUTE | dx和dy指定鼠标坐标系统中的一个绝对位置。在鼠标坐标系统中，屏幕在水平和垂直方向上均匀分割成65535×65535个单元
 | MOUSEEVENTF_MOVE | 移动鼠标
 | MOUSEEVENTF_LEFTDOWN | 模拟鼠标左键按下
 | MOUSEEVENTF_LEFTUP | 模拟鼠标左键抬起
 | MOUSEEVENTF_RIGHTDOWN | 模拟鼠标右键按下
 | MOUSEEVENTF_RIGHTUP | 模拟鼠标右键按下
 | MOUSEEVENTF_MIDDLEDOWN | 模拟鼠标中键按下
 | MOUSEEVENTF_MIDDLEUP | 模拟鼠标中键按下
dx | Long，根据是否指定了MOUSEEVENTF_ABSOLUTE标志，指定水平方向的绝对位置或相对运动
dy | Long，根据是否指定了MOUSEEVENTF_ABSOLUTE标志，指定垂直方向的绝对位置或相对运动
cButtons | Long，未使用
dwExtraInfo | Long，通常未用的一个值。用GetMessageExtraInfo函数可取得这个值。可用的值取决于特定的驱动程序
注解
进行相对运动的时候，由SystemParametersInfo函数规定的系统鼠标轨迹速度会应用于鼠标运行的速度

Top


OemKeyScan
VB声明
Declare Function OemKeyScan Lib "user32" Alias "OemKeyScan" (ByVal wOemChar As Long) As Long
说明
判断OEM字符集中的一个ASCII字符的扫描码和Shift键状态
返回值
Long，低字包含了扫描码。高字包含了下述标志：位0标志着Shift已经按下；位1标志着Ctrl键按下；位2标志着Alt键按下。如两个字都为-1，表明字符未在OEM字符集中得到定义
参数表
参数 | 类型及说明
wOemChar | Long，欲转换的字符的ASCII值
注解
这个函数只能转换那些单击键就能生成的字符。倘若字符要通过“Alt+3数位”（比如Alt+255）才能出现，则不能用这个函数转换 原文：This function only translates keys that can be typed with a single keystroke. Keys that are entered using the ALT + 3 digit entry cannot be converted with this function.


OemToChar

OemToChar, OemToCharBuff
VB声明
Declare Function OemToChar& Lib "user32" Alias "OemToCharA" (ByVal lpszSrc As String, ByVal lpszDst As String) Declare Function OemToCharBuff& Lib "user32" Alias "OemToCharBuffA" (ByVal lpszSrc As String, ByVal lpszDst As String, ByVal cchDstLength As Long)
说明
将OEM字符集的一个字串转换到ANSI字符集。OemToCharBuff允许我们指定字串中欲转换的字符数量
返回值
Long，肯定是TRUE
参数表
参数 | 类型及说明
lpszSrc | String，欲转换的字串
lpszDst | String，用于容纳ANSI转换结果的一个字串。注意先将字串初始化成合适的长度。可将相同的字串传递给两个参数，以便在同一个字串中进行转换
cchDstLength | Long，字串中要转换的字符数量
注解
如使用一个Win32类型库访问宽字符函数OemToCharW，那么lpszSrc是个Unicode字串，而且lpszDst参数绝对不能与lpszSrc相同


SetCaretBlinkTime
VB声明
Declare Function SetCaretBlinkTime Lib "user32" Alias "SetCaretBlinkTime" (ByVal wMSeconds As Long) As Long
说明
指定插入符（光标）的闪烁频率
返回值
Long，非零表示成功，零表示失败。会设置GetLastError
参数表
参数 | 类型及说明
wMSeconds | Long，插入符新的闪烁间隔时间，以毫秒为单位
注解
插入符或插入标志是一种共享资源，所以闪烁时间设定会对所有应用程序的插入符产生影响。可用GetCaretBlinkTime函数获得最初的闪烁时间设置。以后在适当的时候，可用这个设置恢复最开始的值。参考CreateCaret函数的注解


SetCaretPos
VB声明
Declare Function SetCaretPos Lib "user32" Alias "SetCaretPos" (ByVal x As Long, ByVal y As Long) As Long
说明
指定插入符的位置
返回值
Long，非零表示成功，零表示失败。会设置GetLastError
参数表
参数 | 类型及说明
x,y | Long，插入符在客户区坐标系统中的X，Y位置
注解
插入符是一种共享资源。在更改插入符的位置之前，程序员应确定插入符位于由当前任务拥有的一个窗口内。参考CreateCaret函数的注解


SetComputerName
VB声明
Declare Function SetComputerName Lib "kernel32" Alias "SetComputerNameA" (ByVal lpComputerName As String) As Long
说明
设置新的计算机名
返回值
Long，非零表示成功，零表示失败。会设置GetLastError
参数表
参数 | 类型及说明
lpComputerName | String，新的计算机名称。最多可有MAX_COMPUTERNAME_LENGTH个字符
注解
windows95会将任何非法字符自动转换到标准的字符集里。windows nt则会报告出错


SetCursor
VB声明
Declare Function SetCursor Lib "user32" Alias "SetCursor" (ByVal hCursor As Long) As Long
说明
将指定的鼠标指针设为当前指针
返回值
Long，前一个指针的值
参数表
参数 | 类型及说明
hCursor | Long，要设为当前指针的一个指针的句柄。如设为零，表示不显示任何指针
注解
在vb里这个函数不能很好的工作，因为vb习惯在不同的时间将指针变回原来的样子


SetCursorPos
VB声明
Declare Function SetCursorPos Lib "user32" Alias "SetCursorPos" (ByVal x As Long, ByVal y As Long) As Long
说明
设置指针的位置
返回值
Long，非零表示成功，零表示失败。会设置GetLastError
参数表
参数 | 类型及说明
x,y | 鼠标指针在屏幕像素坐标系统中的X，Y位置


SetDoubleClickTime
VB声明
Declare Function SetDoubleClickTime Lib "user32" Alias "SetDoubleClickTime" (ByVal wCount As Long) As Long
说明
设置连续两次鼠标单击之间能使系统认为是双击事件的间隔时间
返回值
Long，非零表示成功，零表示失败
参数表
参数 | 类型及说明
wCount | Long，新的DoubleClick间隔时间，以毫秒为单位
注解
双击时间设定的变化会影响整个系统


SetEnvironmentVariable
VB声明
Declare Function SetEnvironmentVariable Lib "kernel32" Alias "SetEnvironmentVariableA" (ByVal lpName As String, ByVal lpValue As String) As Long
说明
将一个环境变量设为指定的值
返回值
Long，TRUE（非零）表示成功，否则返回零。会设置GetLastError
参数表
参数 | 类型及说明
lpName | String，欲设置的环境变量的名称。如具有这个名称的一个环境变量尚不存在，则函数会自动创建它
lpValue | String，欲为变量设置的新值。如为NULL，表示清除一个现成值（用vbNullString常数向这个函数传递一个NULL）


SetKeyboardState
VB声明
Declare Function SetKeyboardState Lib "user32" Alias "SetKeyboardState" (lppbKeyState As Byte) As Long
说明
设置每个虚拟键当前在键盘上的状态
返回值
Long，非零表示成功，零表示失败。会设置GetLastError
参数表
参数 | 类型及说明
lppbKeyState | Byte，固定为256字符长度的一个字串。windows内部键盘状态表中的每个字符都会根据这张表中对应的虚拟键设置。每个键的状态与GetKeyboardState函数的结果是相同的
注解
可用这个函数设置CapsLock， NumLock 和 ScrollLock键的状态


SetLocaleInfo
VB声明
Declare Function SetLocaleInfo Lib "kernel32" Alias "SetLocaleInfoA" (ByVal Locale As Long, ByVal LCType As Long, ByVal lpLCData As String) As Long
说明
改变用户“地方”设置信息
返回值
Long，TRUE（非零）表示成功，否则返回零。会将GetLastError设置为下述值之一：ERROR_INVALID_ACCESS，ERROR_INVALID_FLAGS，ERROR_INVALID_PARAMETER
参数表
参数 | 类型及说明
Locale | Long，要为其改变信息的地方ID
LCType | Long，欲改变的信息类型。参考api32.txt，检视那些带 LOCALE_ 前缀的常数
lpLCData | String，这个地方信息项目的新设置
注解
这个函数不会改变系统地方设置


SetLocalTime
VB声明
Declare Function SetLocalTime Lib "kernel32" Alias "SetLocalTime" (lpSystemTime As SYSTEMTIME) As Long
说明
设置当前地方时间
返回值
Long，TRUE（非零）表示成功，否则返回零。会设置GetLastError
参数表
参数 | 类型及说明
lpSystemTime | SYSTEMTIME，这个结构指定了新的地方时间。该结构中的wDayOfWeek条目会被忽略


SetSysColors
VB声明
Declare Function SetSysColors Lib "user32" Alias "SetSysColors" (ByVal nChanges As Long, lpSysColor As Long, lpColorValues As Long) As Long
说明
设置指定窗口显示对象的颜色
返回值
Long，非零表示成功，零表示失败。会设置GetLastError
参数表
参数 | 类型及说明
nChanges | Long，欲改变的对象的数量
lpSysColor | Long，按引用传递。这是一个整数数组（总共包含nChanges个元素）的第一个元素。每个条目都包含了一个常数，指定一个windows显示对象。参考GetSysColor函数
lpColorValues | Long，按引用传递。这是RGB值数组的第一个元素；该数组用于设置lpSysColor数组中的对象颜色


SetSystemCursor
VB声明
Declare Function SetSystemCursor Lib "user32" Alias "SetSystemCursor" (ByVal hcur As Long, ByVal id As Long) As Long
说明
改变任何一个标准系统指针
返回值
Long，非零表示成功，零表示失败。会设置GetLastError
参数表
参数 | 类型及说明
hcur | Long，新指针
id | Long，以 OCR_ 前缀起头的一个常数，用于指定标准系统指针
注解
不要破坏由hcur指定的指针——在必要的时候，它会由系统自行清除


SetSystemTime
VB声明
Declare Function SetSystemTime Lib "kernel32" Alias "SetSystemTime" (lpSystemTime As SYSTEMTIME) As Long
说明
设置当前系统时间
返回值
Long，非零表示成功，零表示失败。会设置GetLastError
参数表
参数 | 类型及说明
lpSystemTime | SYSTEMTIME，这个结构指定了新的地方时间。其中的wDayOfWeek条目会被忽略


SetSystemTimeAdjustment
VB声明
Declare Function SetSystemTimeAdjustment Lib "kernel32" Alias "SetSystemTimeAdjustment" (ByVal dwTimeAdjustment As Long, ByVal bTimeAdjustmentDisabled As Boolean) As Long
说明
Win32可使内部系统时钟与一个外部的时钟信号源同步，方法是定时添加一个校准值。这个函数指定的所有时间都以100ns（0.1ms）为单位递增
返回值
Long，非零表示成功，零表示失败。会设置GetLastError
参数表
参数 | 类型及说明
dwTimeAdjustment | Long，每次时钟中断时添加到内部系统时钟的时间量
bTimeAdjustmentDisabled | Boolean，TRUE用于禁止时间调校


SetThreadLocale
VB声明
Declare Function SetThreadLocale Lib "kernel32" Alias "SetThreadLocale" (ByVal Locale As Long) As Long
说明
为当前线程设置地方
返回值
Long，TRUE（非零）表示成功，否则返回零。会设置GetLastError
参数表
参数 | 类型及说明
Locale | Long，这个线程使用的地方ID
注解
适用平台——Windows NT


SetTimeZoneInformation
VB声明
Declare Function SetTimeZoneInformation Lib "kernel32" Alias "SetTimeZoneInformation" (lpTimeZoneInformation As TIME_ZONE_INFORMATION) As Long
说明
设置系统时区信息
返回值
Long，TRUE（非零）表示成功，否则返回零。会设置GetLastError
参数表
参数 | 类型及说明
lpTimeZoneInformation | TIME_ZONE_INFORMATION，要在其中设置当前时区信息的一个结构
注解
参考GetTimeZoneInformation


ShowCaret
VB声明
Declare Function ShowCaret Lib "user32" Alias "ShowCaret" (ByVal hwnd As Long) As Long
说明
在指定的窗口里显示插入符（光标）
返回值
Long，非零表示成功，零表示失败。会设置GetLastError
参数表
参数 | 类型及说明
hwnd | Long，包含了插入符的窗口的句柄。可以为零；此时，只有在插入符包含于由活动任务拥有的一个窗口时，它才会显示出来
注解
参考HideCaret函数


ShowCursor
VB声明
Declare Function ShowCursor Lib "user32" Alias "ShowCursor" (ByVal bShow As Long) As Long
说明
控制鼠标指针的可视性
返回值
Long，显示计数（参考注解）
参数表
参数 | 类型及说明
bShow | Long，TRUE（非零）显示指针，FALSE隐藏
注解
windows维持着一个内部显示计数；倘若bShow为TRUE，那么每调用一次这个函数，计数就会递增1；反之，如bShow为FALSE，则计数递减1。只有在这个计数大于或等于0的情况下，指针才会显示出来


SwapMouseButton
VB声明
Declare Function SwapMouseButton Lib "user32" Alias "SwapMouseButton" (ByVal bSwap As Long) As Long
说明
决定是否互换鼠标左右键的功能
返回值
Long，TRUE（非零）表示鼠标按钮的功能在调用这个函数之前已经互换；否则返回零
参数表
参数 | 类型及说明
bSwap | Long，倘若为TRUE（非零），则互换两个鼠标按钮的功能。FALSE则恢复正常状态
注解
鼠标是一种共享资源，所以这个函数会对系统中的所有应用程序造成影响


SystemParametersInfo

SystemParametersInfo, SystemParametersInfoByval
VB声明
Declare Function SystemParametersInfo& Lib "user32" Alias "SystemParametersInfoA" (ByVal uAction As Long, ByVal uParam As Long, lpvParam As Any, ByVal fuWinIni As Long) Declare Function SystemParametersInfoByVal& Lib "user32" Alias "SystemParametersInfoA" (ByVal uAction As Long, ByVal uParam As Long, ByVal lpvParam As Any, ByVal fuWinIni As Long)
说明
允许获取和设置数量众多的windows系统参数
返回值
Long，非零表示成功，零表示失败。会设置GetLastError
参数表
参数 | 类型及说明
uAction | Long，指定要设置的参数。参考uAction常数表
uParam | Long，参考uAction常数表
lpvParam | Any，按引用调用的Integer、Long和数据结构。对于String数据，请用SystemParametersInfoByval函数。具体用法参考uAction常数表
fuWinIni | Long，取决于不同的参数及操作系统，随同这个函数设置的用户配置参数保存在win.ini或注册表里，或同时保存在这两个地方。这个参数规定了在设置系统参数的时候，是否应更新用户设置参数。可以是零（禁止更新），或下述任何一个常数：
 | SPIF_UPDATEINIFILE | 更新win.ini和（或）注册表中的用户配置文件
 | SPIF_SENDWININICHANGE | 倘若也设置了SPIF_UPDATEINIFILE，将一条WM_WININICHANGE消息发给所有应用程序。否则没有作用。这调消息告诉应用程序已经改变了用户配置设置
注解
在调用这个函数之前，特别要注意将lpvParam参数定义成正确的数据类型

Top


SystemTimeToTzSpecificLocalTime
VB声明
Declare Function SystemTimeToTzSpecificLocalTime Lib "kernel32" Alias "SystemTimeToTzSpecificLocalTime" (lpTimeZoneInformation As TIME_ZONE_INFORMATION, lpUniversalTime As SYSTEMTIME, lpLocalTime As SYSTEMTIME) As Long
说明
将系统时间转换成地方时间
返回值
Long，TRUE（非零）表示成功，否则返回零。会设置GetLastError
参数表
参数 | 类型及说明
lpTimeZoneInformation | TIME_ZONE_INFORMATION，包含了时区信息的结构
lpUniversalTime | SYSTEMTIME，包含系统时间的结构
lpLocalTime | SYSTEMTIME，用于装载地方时间的结构
注解
适用平台：Windows NT


ToAscii

ToAscii, ToAsciiEx
VB声明
Declare Function ToAscii& Lib "user32" (ByVal uVirtKey As Long, ByVal uScanCode As Long, lpbKeyState As Byte, lpwTransKey As Integer, ByVal fuState As Long) Declare Function ToAsciiEx& Lib "user32" (ByVal uVirtKey As Long, ByVal uScanCode As Long, lpKeyState As Byte, lpwTransKey As Integer, ByVal fuState As Long, ByVal dwhkl As Long)
说明
根据当前的扫描码和键盘信息，将一个虚拟键转换成ASCII字符
返回值
Long，负值表明按键是“死”的——不能自己将自己转换成一个字符（重音键[accent keys]就是一个例子）。在给定当前键盘状态的前提下，如按键不能被转换（翻译），则返回0。如单个字符已载入lpwTransKey，则返回1。如lpwTransKey里已载入了两个字符（需要把它分隔到两个字节里），那么返回值是2。在当前字符集里，倘若单独一个字符不能表达键盘支持的死键或重音按键组合，就可能得到2的返回值
参数表
参数 | 类型及说明
uVirtKey | Long，欲转换的虚拟键
uScanCode | Long，键的扫描码。如键处于抬起状态，会设置高位（设为1）；如按下，则清除高位（设为0）
lpbKeyState | Byte，描述了键盘状态的一个256字符数组的第一个条目。参考GetKeyboardState函数，了解关于这个数组更多的情况
lpwTransKey | Integer，用于装载转换过后的字符的一个整数变量。可用 chr()函数将这个值转换成一个字串
fuState | Long，如一个菜单处于活动状态，则设为1
dwhkl | Long，欲用于转换的一个键盘布局的句柄
注解
NumLock键的状态会被忽略，因为虚拟键码包括了哪个信息 在微软的win32手册里，对ToAsciiEx函数的建议是将它的lpwTransKey参数设为Long，而不要设为Integer。这里的函数声明根据实际的C语言头，它将参数定义成一个16位的字（既vb的整数）

Top


ToUnicode
VB声明
Declare Function ToUnicode Lib "user32" Alias "ToUnicode" (ByVal wVirtKey As Long, ByVal wScanCode As Long, lpKeyState As Byte, ByVal pwszBuff As String, ByVal cchBuff As Long, ByVal wFlags As Long) As Long
说明
根据当前的扫描码和键盘信息，将一个虚拟键转换成Unicode字符
返回值
Long，值-1表明按键是“死”的——不能自己将自己转换成一个字符（重音键[accent keys]就是一个例子）。在给定当前键盘状态的前提下，如按键不能被转换（翻译），则返回0。如单个字符已载入pwszBuff，则返回1。如pwszBuff里已载入了两个或更多的字符，那么返回值是2。在当前字符集里，倘若单独一个字符不能表达键盘支持的死键或重音按键组合，就可能得到2的返回值
参数表
参数 | 类型及说明
wVirtKey | Long，欲转换的虚拟键
wScanCode | Long，键的扫描码。如键处于抬起状态，会设置高位；如按下，则清除高位
lpKeyState | Byte，描述了键盘状态的一个256字符数组的第一个条目。参考GetKeyboardState函数，了解关于这个数组更多的情况
pwszBuff | String，用于装载Unicode字符的一个字串缓冲区。注意事先对这个字串进行正确的初始化
cchBuff | Long，pwszBuff字串缓冲区的长度
wFlags | Long，如一个菜单处于活动状态，则设为1
注解
适用平台：Windows NT

Top


UnloadKeyboardLayout
VB声明
Declare Function UnloadKeyboardLayout Lib "user32" Alias "UnloadKeyboardLayout" (ByVal HKL As Long) As Long
说明
卸载指定的键盘布局。参考LoadKeyboardLayout函数，了解更多信息
返回值
Long，如执行成功，返回键盘布局的句柄；如出错，则返回零。会设置GetLastError
参数表
参数 | 类型及说明
HKL | Long，欲卸载的键盘布局的句柄
注解
在windows95下，这个函数永远都不能卸载默认的系统键盘布局


VkKeyScan

VkKeyScan, VkKeyScanEx
VB声明
Declare Function VkKeyScan% Lib "user32" Alias "VkKeyScanA" (ByVal cChar As Byte) Declare Function VkKeyScanEx% Lib "user32" Alias "VkKeyScanExA" (ByVal ch As Byte, ByVal dwhkl As Long)
说明
针对Windows字符集中一个ASCII字符，判断虚拟键码和Shift键的状态
返回值
Long，低字包含了虚拟键码。高字则包含了下述标志： 位0指出 Shift 键已经按下；位1指出 Ctrl 键已经按下；位2指出 Alt 键已经按下
参数表
参数 | 类型及说明
ch | Byte，欲转换的字符的ASCII值
dwhkl | Long，转换时作为依据的键盘布局
注解
数字小键盘的转换会被忽略。这个函数可用于获取发送WM_KEYDOWN 和 WM_KEYUP消息时应使用的正确参数


AdjustWindowRect

AdjustWindowRect,AdjustWindowRectEx
VB声明
Declare Function AdjustWindowRect Lib "user32" Alias "AdjustWindowRect" (lpRect As RECT, ByVal dwStyle As Long, ByVal bMenu As Long) As Long Declare Function AdjustWindowRectEx Lib "user32" Alias "AdjustWindowRectEx" (lpRect As RECT, ByVal dsStyle As Long, ByVal bMenu As Long, ByVal dwEsStyle As Long) As Long
说明
在给定一种窗口样式的前提下，计算获得目标客户区矩形所需的窗口大小
返回值
Long，如执行成功，则返回非零值；如失败，返回零值。会设置GetLastError
参数表
参数 | 类型及说明
lpRect | RECT，最初包含要求的客户区。由函数设为目标窗口矩形大小
dwStyle | Long，窗口样式
bMenu | Long，如窗口有菜单，则设为TRUE（非零）
dwEsStyle | Long，扩展窗口样式（只适用于AdjustWindowRectEx）
注解
在调用本函数前，先用GetWindowLong取得一个窗体的样式。如菜单占用两行以上的空间，则函数不能正确计算大小。如程序使用了多行标题，则应使用GetSystemMetrics

Top


AnyPopup
VB声明
Declare Function AnyPopup Lib "user32" Alias "AnyPopup" () As Long
说明
判断屏幕上是否存在任何弹出式窗口
返回值
Long，如存在弹出式菜单，则返回TRUE（非零）
注解
对该函数来说，弹出式菜单包含所有可见的包容顶级窗口，无论弹出式还是重叠窗口

Top


ArrangeIconicWindows
VB声明
Declare Function ArrangeIconicWindows Lib "user32" Alias "ArrangeIconicWindows" (ByVal hwnd As Long) As Long
说明
排列一个父窗口的最小化子窗口（在vb里使用：用于在桌面排列图标，用GetDesktopWindow函数获得桌面窗口的一个句柄）
返回值
Long，图标行的高度；如失败，则返回零。会设置GetLastError
参数表
参数 | 类型及说明
hwnd | Long，父窗口的句柄
注解
也可将该函数用于包含了图标化子窗口的的定制控件

Top


AttachThreadInput
VB声明
Declare Function AttachThreadInput Lib "user32" Alias "AttachThreadInput" (ByVal idAttach As Long, ByVal idAttachTo As Long, ByVal fAttach As Long) As Long
说明
通常，系统内的每个线程都有自己的输入队列。本函数（既“连接线程输入函数”）允许线程和进程共享输入队列。连接了线程后，输入焦点、窗口激活、鼠标捕获、键盘状态以及输入队列状态都会进入共享状态
返回值
Long，非零表示成功，零表示失败，会设置会GetLastError
参数表
参数 | 类型及说明
idAttach | Long，欲连接线程的标识符（ID）
idAttachTo | Long，与idAttach线程连接的另一个线程的标识符
fAttach | Long，TRUE（非零）连接，FALSE撤消连接
注解
调用这个函数时，会重设键盘状态

Top


BeginDeferWindowPos
VB声明
Declare Function BeginDeferWindowPos Lib "user32" Alias "BeginDeferWindowPos" (ByVal nNumWindows As Long) As Long
说明
启动构建一系列新窗口位置的过程（以便同时更新）。该函数会向一个内部结果返回一个句柄，这个结构容纳了与窗口位置有关的信息。随后，该结构会由对DeferWindowPos函数的调用填充。准备好更新所有窗口位置以后，对EndDeferWindowPos的一个调用可同时更新结构内所有窗口的位置
返回值
Long，内部结构的句柄。零表示失败
参数表
参数 | 类型及说明
nNumWindows | Long，在结构中欲为其分配空间的初始窗口数量。在每次DeferWindowPos调用期间结构的大小会根据情况自动调节

Top


BringWindowToTop
VB声明
Declare Function BringWindowToTop Lib "user32" Alias "BringWindowToTop" (ByVal hwnd As Long) As Long
说明
将指定的窗口带至窗口列表顶部。倘若它部分或全部隐藏于其他窗口下面，则将隐藏的部分完全显示出来。该函数也对弹出式窗口、顶级窗口以及MDI子窗口产生作用
返回值
Long，非零表示成功，零表示失败。会设置GetLastError
参数表
参数 | 类型及说明
hwnd | Long，欲带至顶部的那个窗口的句柄
注解
这个函数也许能随同子窗口使用。函数对一个特定的输入线程来说是“本地的”——换言之，倘若某窗口并非前台应用程序的一部分，那么一旦随同该窗口调用本函数，仍会将窗口带至它自己那个应用程序的窗口列表顶部。但是，不会同时使那个应用成为前台应用程序。这意味着在调用了本函数后，窗口仍会保持隐藏状态

Top


CascadeWindows

CascadeWindows,CascadeWindowsBynum
VB声明
Declare Function CascadeWindows% Lib "user32" (ByVal hwndParent As Long, ByVal wHow As Long, lpRect As RECT, ByVal cKids As Long, lpKids As Long) Declare Function CascadeWindowsBynum% Lib "user32" Alias "CascadeWindows" (ByVal hwndParent As Long, ByVal wHow As Long, ByVal lpRect As Long, ByVal cKids As Long, ByVal lpKids As Long)
说明
以层叠方式排列窗口（在vb里使用：位于顶部或被所有的窗口没有问题。原文：No problem for top level windows or owned windows.）
返回值
Integer，排列成功的窗口数量，零表示失败
参数表
参数 | 类型及说明
hwndParent | Long，指定一个父窗口；准备对它的子窗口进行排列。用GetDesktopWindow函数获得顶级窗口的句柄
wHow | Long，MDITILE_SKIPDISABLED——不排列已被禁用的MDI子窗口
lpRect | RECT，指定一个矩形，矩形区域中的窗口才会层叠处理。可设为NULL，表示使用整个客户区
cKids | Long，在lpKids数组中指定的子窗口数量
lpKids | Long，子窗口列表中准备排列的第一个元素。如传递NULL（注意将参数定义成ByVal）。Long，则表示排列所有的子窗口（原文：Long--First element in list of child windows to arrange. Pass NULL (be sure to define parameter as ByVal - Long, to arrange all child windows.）
注解
在正式的win32文档里，对这个函数的说明是不正确的。这儿的参数建立在实际的win32 C 头文件基础上。函数不能对诸如控件的子窗口产生——只对顶级窗口及MDI子有用。注意在MDI窗体的情况下，指定的父窗口应是MDIClient窗口的句柄，不应是MDI窗体本身的窗口句柄。可用api函数GetParent获得正确的句柄

Top


ChildWindowFromPoint

ChildWindowFromPoint,ChildWindowFromPointEx
VB声明
Declare Function ChildWindowFromPoint Lib "user32" Alias "ChildWindowFromPoint" (ByVal hWnd As Long, ByVal xPoint As Long, ByVal yPoint As Long) As Long Declare Function ChildWindowFromPointEx Lib "user32" Alias "ChildWindowFromPointEx" (ByVal hWnd As Long, ByVal pt As POINTAPI, ByVal un As Long) As Long
说明
返回父窗口中包含了指定点的第一个子窗口的句柄
返回值
Long，发现包含了指定点的第一个子窗口的句柄。如未发现任何窗口，则返回hWnd（父窗口的句柄）。如指定点位于父窗口外部，则返回零
参数表
参数 | 类型及说明
hWnd | Long，父窗口的句柄
xPoint | Long，点的X坐标，以像素为单位
yPoint | Long，点的Y坐标，以像素为单位
pt | POINTAPI，点的坐标，以像素为单位
un | Long，（只适用于ChildWindowFromPointEx）控制对窗口的搜索。参见下表
 | CWP_ALL | 测试所有窗口
 | CWP_SKIPINVISIBLE | 忽略不可见窗口
 | CWP_SKIPDISABLED | 忽略已屏蔽的窗口
 | CWP_SKIPTRANSPARENT | 忽略透明窗口

Top


ClientToScreen
VB声明
Declare Function ClientToScreen Lib "user32" Alias "ClientToScreen" (ByVal hwnd As Long, lpPoint As POINTAPI) As Long
说明
判断窗口内以客户区坐标表示的一个点的屏幕坐标
返回值
Long，非零表示成功，零表示失败
参数表
参数 | 类型及说明
hwnd | Long，判断客户区坐标时那个窗口的句柄
lpPoint | POINTAPI，用hwnd窗口的客户区坐标表示的点，这个参数会包含屏幕坐标系统中相同的点

Top


CloseWindow
VB声明
Declare Function CloseWindow Lib "user32" Alias "CloseWindow" (ByVal hwnd As Long) As Long
说明
最小化指定的窗口。窗口不会从内存中清除
返回值
Long，非零表示成功，零表示失败。会设置GetLastError
参数表
参数 | 类型及说明
hwnd | Long，欲最小化的那个窗口的句柄

Top


CopyRect
VB声明
Declare Function CopyRect Lib "user32" Alias "CopyRect" (lpDestRect As RECT, lpSourceRect As RECT) As Long
说明
将矩形的lpSourceRect内容复制给矩形lpDestRect
返回值
Long，非零表示成功，零表示失败。会设置GetLastError
参数表
参数 | 类型及说明
lpDestRect | RECT，目标矩形结构
lpSourceRect | RECT，源矩形

Top


DeferWindowPos
VB声明
Declare Function DeferWindowPos Lib "user32" Alias "DeferWindowPos" (ByVal hWinPosInfo As Long, ByVal hwnd As Long, ByVal hWndInsertAfter As Long, ByVal x As Long, ByVal y As Long, ByVal cx As Long, ByVal cy As Long, ByVal wFlags As Long) As Long
说明
该函数为特定的窗口指定一个新窗口位置，并将其输入由BeginDeferWindowPos创建的结构，以便在EndDeferWindowPos函数执行期间更新
返回值
Long，返回一个新句柄，它指向的结构包含了位置更新信息。这个句柄应在对DeferWindowPos的后续调用以及对EndDeferWindowPos的结束调用中用到。如出错，则返回零值
参数表
参数 | 类型及说明
hWinPosInfo | Long，由BeginDeferWindowPos为后续对DeferWindowPos的调用返回的句柄
hwnd | Long，欲定位的窗口
hWndInsertAfter | Long，窗口句柄。在窗口列表中，窗口hwnd会排列于这个窗口后面。也可用下述值之一：
 | HWND_BOTTOM | 将窗口置于窗口列表底部
 | HWND_TOP | 将窗口置于Z序列顶部；Z序列是窗口针对分级结构中一个给定级别显示的顺序
 | HWND_TOPMOST | 将窗口置于列表顶部，位于任何最顶级窗口的前面（请参考WS_EX_TOPMOST样式位）
 | HWND_NOTOPMOST | 将窗口置于列表顶部，位于任何最顶级窗口的后面
x | Long，窗口新的x坐标。如hwnd是个子窗口，那么x用父窗口的客户区坐标表示
y | Long，窗口新的y坐标。如hwnd是个子窗口，那么y用父窗口的客户区坐标表示
cx | Long，指定新窗口宽度
cy | Long，指定新窗口高度
wFlags | Long，包含了旗标的一个整数，如下所示：
 | SWP_DRAWFRAME | 围绕窗口画一个框
 | SWP_HIDEWINDOW | 隐藏窗口
 | SWP_NOACTIVATE | 不激活窗口
 | SWP_NOMOVE | 保持当前位置（x和y设定将被忽略）
 | SWP_NOREDRAW | 窗口不自动重画
 | SWP_NOSIZE | 保持当前大小（cx和cy会被忽略）
 | SWP_NOZORDER | 保持在窗口列表的当前位置（hWndInsertAfter会被忽略）
 | SWP_SHOWWINDOW | 显示窗口
 | SWP_NOOWNERZORDER | 不改变Z序列的所有者
 | SWP_NOSENDCHANGING | 窗口不发出WM_WINDOWPOSCHANGING消息
注解
请参考对SetWindowPos函数的注解。同时参考BeginDeferWindowPos和EndDeferWindowPos

Top


DestroyWindow
VB声明
Declare Function DestroyWindow Lib "user32" Alias "DestroyWindow" (ByVal hwnd As Long) As Long
说明
破坏（即清除）指定的窗口以及它的所有子窗口（在vb里使用：用处不大。原文：it is unlikely to be of much use.）
返回值
Long，非零表示成功，零表示失败。会设置GetLastError
参数表
参数 | 类型及说明
hwnd | Long，欲清除的窗口的句柄

Top


DrawAnimatedRects
VB声明
Declare Function DrawAnimatedRects Lib "user32" Alias "DrawAnimatedRects" (ByVal hwnd As Long, ByVal idAni As Long, lprcFrom As Rect, lprcTo As Rect) As Long
说明
在lprcFrom和lprcTo之间描绘一系列动态矩形
返回值
Long，非零表示成功，零表示失败
参数表
参数 | 类型及说明
hwnd | Long，要在其中描绘矩形的窗口。如设为零，表示以桌面为背景
idAni | Long，windows 95要设为0
lprcFrom | Rect，原始矩形
lprcTo | Rect，目标矩形
注解
我的理解——这个函数用于在窗口缩放时产生动画效果

Top


EnableWindow
VB声明
Declare Function EnableWindow Lib "user32" Alias "EnableWindow" (ByVal hwnd As Long, ByVal fEnable As Long) As Long
说明
在指定的窗口里允许或禁止所有鼠标及键盘输入（在vb里使用：在vb窗体和控件中使用Enabled属性）
返回值
Long，非零表示成功，零表示失败。会设置GetLastError
参数表
参数 | 类型及说明
hwnd | Long，窗口句柄
fEnable | Long，非零允许窗口，零禁止

Top


EndDeferWindowPos
VB声明
Declare Function EndDeferWindowPos Lib "user32" Alias "EndDeferWindowPos" (ByVal hWinPosInfo As Long) As Long
说明
同时更新DeferWindowPos调用时指定的所有窗口的位置及状态
返回值
Long，非零表示成功，零表示失败。会设置GetLastError
参数表
参数 | 类型及说明
hWinPosInfo | Long，由对DeferWindowPos最近一次调用返回的结构句柄

Top


EnumChildWindows
VB声明
Declare Function EnumChildWindows Lib "user32" Alias "EnumChildWindows" (ByVal hWndParent As Long, ByVal lpEnumFunc As Long, ByVal lParam As Long) As Long
说明
为指定的父窗口枚举子窗口
返回值
Long，非零表示成功，零表示失败
参数表
参数 | 类型及说明
hWndParent | Long，欲枚举子窗口的父窗口的句柄
lpEnumFunc | Long，为每个子窗口调用的函数的指针。用AddressOf运算符获得函数在一个标准模块中的地址
lParam | Long，在枚举期间，传递给dwcbkd32.ocx定制控件之EnumWindows事件的值。这个值的含义是由程序员规定的。（原文：Value that is passed to the EnumWindows event of the dwcbkd32.ocx custom control during enumeration. The meaning of this value is defined by the programmer.）
注解
在vb4下要求dwcbkd32.ocx定制控件。子窗口下属的子窗口也可由这个函数枚举

Top


EnumThreadWindows
VB声明
Declare Function EnumThreadWindows Lib "user32" Alias "EnumThreadWindows" (ByVal dwThreadId As Long, ByVal lpfn As Long, ByVal lParam As Long) As Long
说明
枚举与指定任务相关的窗口
返回值
Long，非零表示成功，零表示失败
参数表
参数 | 类型及说明
dwThreadId | Long，某线程的标识符，它的窗口将被枚举
lpfn | Long，指向一个函数的指针，要求为每个子窗口都调用这个函数。用AddressOf运算符获得函数在标准模式下的地址
lParam | Long，在枚举期间，传递给dwcbkd32d.ocx定制控件之EnumWindows事件的值。这个值的含义是由程序员规定的
注解
子窗口下属的其他子窗口也可由这个函数枚举

Top


EnumWindows
VB声明
Declare Function EnumWindows& Lib "user32" (ByVal lpEnumFunc As Long, ByVal lParam As Long)
说明
枚举窗口列表中的所有父窗口（顶级和被所有窗口）
返回值
Long，非零表示成功，零表示失败
参数表
参数 | 类型及说明
lpEnumFunc | Long，指向为每个子窗口都调用的一个函数的指针。用AddressOf运算符获得函数在标准模式下的地址
lParam | Long，在枚举期间，传递给dwcbkd32.ocx定制控件之EnumWindows事件的值。这个值的含义是由程序员规定的
注解
我的理解——在随vb5同时提供的api32.txt文件中，找不到这个函数

Top


EqualRect
VB声明
Declare Function EqualRect Lib "user32" Alias "EqualRect" (lpRect1 As RECT, lpRect2 As RECT) As Long
说明
判断两个矩形结构是否相同
返回值
Long，非零表示成功，零表示失败。会设置GetLastError
参数表
参数 | 类型及说明
lpRect1 | RECT，要比较的矩形
lpRect2 | RECT，要比较的矩形

Top


FindWindow
VB声明
Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
说明
寻找窗口列表中第一个符合指定条件的顶级窗口（在vb里使用：FindWindow最常见的一个用途是获得ThunderRTMain类的隐藏窗口的句柄；该类是所有运行中vb执行程序的一部分。获得句柄后，可用api函数GetWindowText取得这个窗口的名称；该名也是应用程序的标题）
返回值
Long，找到窗口的句柄。如未找到相符窗口，则返回零。会设置GetLastError
参数表
参数 | 类型及说明
lpClassName | String，指向包含了窗口类名的空中止（C语言）字串的指针；或设为零，表示接收任何类
lpWindowName | String，指向包含了窗口文本（或标签）的空中止（C语言）字串的指针；或设为零，表示接收任何窗口标题
注解

很少要求同时按类与窗口名搜索。为向自己不准备参数传递一个零，最简便的办法是传递vbNullString常数

示例
Dim hw&, cnt&
Dim rttitle As String * 256
hw& = FindWindow("ThunderRT5Main", vbNullString) ' ThunderRTMain under VB4
cnt = GetWindowText(hw&, rttitle, 255)
MsgBox Left$(rttitle, cnt), 0, "RTMain title"

Top


FindWindowEx
VB声明
Declare Function FindWindowEx Lib "user32" Alias "FindWindowExA" (ByVal hWnd1 As Long, ByVal hWnd2 As Long, ByVal lpsz1 As String, ByVal lpsz2 As String) As Long
说明
在窗口列表中寻找与指定条件相符的第一个子窗口
返回值
Long，找到的窗口的句柄。如未找到相符窗口，则返回零。会设置GetLastError
参数表
参数 | 类型及说明
hWnd1 | Long，在其中查找子的父窗口。如设为零，表示使用桌面窗口（通常说的顶级窗口都被认为是桌面的子窗口，所以也会对它们进行查找）
hWnd2 | Long，从这个窗口后开始查找。这样便可利用对FindWindowEx的多次调用找到符合条件的所有子窗口。如设为零，表示从第一个子窗口开始搜索
lpsz1 | String，欲搜索的类名。零表示忽略
lpsz2 | String，欲搜索的类名。零表示忽略

Top


FlashWindow
VB声明
Declare Function FlashWindow Lib "user32" Alias "FlashWindow" (ByVal hwnd As Long, ByVal bInvert As Long) As Long
说明
闪烁显示指定窗口。这意味着窗口的标题和说明文字会发生变化，似乎从活动切换到非活动状态、或反向切换。通常对不活动的窗口应用这个函数，引起用户的注意
返回值
Long，如窗口在调用前处于活动状态，则返回TRUE（非零）
参数表
参数 | 类型及说明
hwnd | Long，要闪烁显示的窗口的句柄
bInvert | Long，TRUE（非零）表示切换窗口标题；FALSE返回最初状态
注解
该函数通常与一个计数器组合使用，生成连续的闪烁效果。在windows nt及windows for workgroup中，bInvert参数会被忽略。但在windows 95中不会忽略

Top


GetActiveWindow
VB声明
Declare Function GetActiveWindow Lib "user32" Alias "GetActiveWindow" () As Long
说明
获得活动窗口的句柄
返回值
Long，活动窗口的句柄，如没有窗口处于活动状态，则返回零值

Top


GetCapture
VB声明
Declare Function GetCapture Lib "user32" Alias "GetCapture" () As Long
说明
获得一个窗口的句柄，这个窗口位于当前输入线程，且拥有鼠标捕获（鼠标活动由它接收）
返回值
Long，拥有捕获的窗口的句柄。倘若当前线程中没有窗口拥有捕获，则返回零值

Top


GetClassInfo

GetClassInfo,GetClassInfoEx
VB声明
Declare Function GetClassInfo& Lib "user32" Alias "GetClassInfoA" (ByVal hInstance As Long, ByVal lpClassName As String, lpWndClass As WNDCLASS) Declare Function GetClassInfoEx& Lib "user32" Alias "GetClassInfoExA" (ByVal hInstance As Long, ByVal lpClassName As String, lpWndClassEx As WNDCLASSEX)
说明
取得WNDCLASS结构（或WNDCLASSEX结构）的一个副本，结构中包含了与指定类有关的信息
返回值
Long，非零表示成功，零表示失败。会设置GetLastError
参数表
参数 | 类型及说明
hInstance | Long，指向拥有类的那个实例的一个句柄。如设为NULL，则获得与标准windows类有关的信息
lpClassName | String，欲查找的类名。也可能是个Long值，其中的低字是包含类名的一个全局（共用）原子
lpWndClass | WNDCLASS，（GetClassInfo）用于包含结果信息的结构
lpWndClassEx | WNDCLASSEX，（GetClassInfoEx）用于包含结果信息的结构
注解
如为这个函数使用了WNDCLASSEX参数，请务必设置其中的cbSize字段

Top


GetClassLong
VB声明
Declare Function GetClassLong Lib "user32" Alias "GetClassLongA" (ByVal hwnd As Long, ByVal nIndex As Long) As Long
说明
取得窗口类的一个Long变量条目
返回值
Long，由nIndex决定。零表示出错。会设置GetLastError
参数表
参数 | 类型及说明
hwnd | 要为其获得类信息的窗口的句柄
nIndex | 欲取得的信息，可能是下述任何一个常数：（正数表示一个字节偏移，用于取得在额外字节中为这个类分配的类信息）
 | GCL_CBCLSEXTRA | 这个类结构中分配的额外字节数
 | GCL_CBWNDEXTRA | 窗口结构里为这个类中每个窗口分配的额外字节数
 | GCL_HBRBACKGROUND | 描绘这个类每个窗口的背景时，使用的默认刷子的句柄
 | GCL_HCURSOR | 指向这个类窗口默认光标的句柄
 | GCL_HICON | 这个类中窗口默认图标的句柄
 | GCL_HICONSM | 这个类的小图标
 | GCL_HMODULE | 这个类的模块的句柄
 | GCL_MENUNAME | 为类菜单取得名称或资源ID
 | GCL_STYLE | 这个类的样式
 | GCL_WNDPROC | 取得类窗口函数（该类窗口的默认窗口函数）的地址

Top


GetClassName
VB声明
Declare Function GetClassName Lib "user32" Alias "GetClassNameA" (ByVal hwnd As Long, ByVal lpClassName As String, ByVal nMaxCount As Long) As Long
说明
为指定的窗口取得类名
返回值
Long，以字节数表示的类名长度；排除最后的空中止字符。零表示出错。会设置GetLastError
参数表
参数 | 类型及说明
hwnd | Long，欲获得类名的那个窗口的句柄
lpClassName | String，随同类名载入的缓冲区。预先至少必须分配nMaxCount+1个字符
nMaxCount | Long，由lpClassName提供的缓冲区长度

Top


GetClassWord
VB声明
Declare Function GetClassWord Lib "user32" Alias "GetClassWord" (ByVal hwnd As Long, ByVal nIndex As Long) As Long
说明
为窗口类取得一个整数变量
返回值
Long，由nIndex决定。零表示出错。会设置GetLastError
参数表
参数 | 类型及说明
hwnd | Long，欲获得类信息的那个窗口的句柄
nIndex | Long，类信息的正偏移量；这些信息是该类的额外字节中分配的
注解
我的迷惑：在某参考书上是这样声明的：Declare Function GetClassWord% Lib "user32" (ByVal hwnd As Long, ByVal nIndex As Long)，即函数的返回值为Integer，而从vb自带的api查看器中得到的声明表明返回值是个Long类型

Top


GetClientRect
VB声明
Declare Function GetClientRect Lib "user32" Alias "GetClientRect" (ByVal hwnd As Long, lpRect As RECT) As Long
说明
返回指定窗口客户区矩形的大小
返回值
Long，非零表示成功，零表示失败。会设置GetLastError
参数表
参数 | 类型及说明
hwnd | Long，欲计算大小的目标窗口
lpRect | RECT，指定一个矩形，用客户区域的大小载入（以像素为单位）
注解
lpRect的左侧及顶部区域肯定会被这个函数设为零

Top


GetDesktopWindow
VB声明
Declare Function GetDesktopWindow Lib "user32" Alias "GetDesktopWindow" () As Long
说明
获得代表整个屏幕的一个窗口（桌面窗口）句柄
返回值
Long，桌面窗口的句柄
注解

所有桌面图标都在这个窗口里拒绝。它也用于各类屏幕保护程序

Top


GetFocus
VB声明
Declare Function GetFocus Lib "user32" Alias "GetFocus" () As Long
说明
获得拥有输入焦点的窗口的句柄
返回值
Long，拥有焦点的那个窗口的句柄。如没有窗口拥有输入焦点，则返回零

Top


GetForegroundWindow
VB声明
Declare Function GetForegroundWindow Lib "user32" Alias "GetForegroundWindow" () As Long
说明
获得前台窗口的句柄。这里的“前台窗口”是指前台应用程序的活动窗口
返回值
Long，前台窗口的句柄
注解

windows nt支持多个桌面，它们相互间是独立的。每个桌面都有自己的前台窗口

Top


GetLastActivePopup
VB声明
Declare Function GetLastActivePopup Lib "user32" Alias "GetLastActivePopup" (ByVal hwndOwnder As Long) As Long
说明
获得在一个给定父窗口中最近激活过的弹出式窗口的句柄（在vb里使用：vb应用程序不用弹出式窗口，所以这个函数并非特别有用）
返回值
Long，指向最近用过的弹出式窗口的句柄。如未发现弹出窗口。则返回hwndOwnder
参数表
参数 | 类型及说明
hwndOwnder | Long，父窗口

Top


GetParent
VB声明
Declare Function GetParent Lib "user32" Alias "GetParent" (ByVal hwnd As Long) As Long
说明
判断指定窗口的父窗口
返回值
Long，父窗口的句柄。如窗口没有父，或遇到错误，则返回零。会设置GetLastError
参数表
参数 | 类型及说明
hwnd | Long，欲测试的窗口的句柄

Top


GetTopWindow
VB声明
Declare Function GetTopWindow Lib "user32" Alias "GetTopWindow" (ByVal hwnd As Long) As Long
说明
搜索内部窗口列表，寻找隶属于指定窗口的头一个窗口的句柄
返回值
Long，位于指定窗口内部的顶级子窗口的句柄
参数表
参数 | 类型及说明
ByVal | Long，想在其中搜寻顶级子的窗口。零表示寻找位于桌面的顶级窗口
注解
Z序列中的顶级窗口也是内部窗口列表的第一个窗口

Top


GetUpdateRect
VB声明
Declare Function GetUpdateRect Lib "user32" Alias "GetUpdateRect" (ByVal hwnd As Long, lpRect As RECT, ByVal bErase As Long) As Long
说明
获得一个矩形，它描叙了指定窗口中需要更新的那一部分（在vb里使用：到一个vb窗体或控件里发生paint事件的时候，更新区域已被清除了。所以这个函数对于vb来说是没有意义的。然而，可用一个子类模块拦截一个窗体或控件的WM_PAINT消息，在vb自行清除之前了解更新区域在哪里）
返回值
Long，非零表示成功，零表示失败
参数表
参数 | 类型及说明
hwnd | Long，欲在其中调查更新区域的那个窗口
lpRect | RECT，随同更新坐标载入的矩形
bErase | Long，设置TRUE（非零），清除更新区域
注解
如窗口类样式拥有CS_OWNDC集，且窗口映射模式不是MM_TEXT，那么更新矩形会用逻辑坐标表示

Top


GetWindow
VB声明
Declare Function GetWindow Lib "user32" Alias "GetWindow" (ByVal hwnd As Long, ByVal wCmd As Long) As Long
说明
获得一个窗口的句柄，该窗口与某源窗口有特定的关系
返回值
Long，由wCmd决定的一个窗口的句柄。如没有找到相符窗口，或者遇到错误，则返回零值。会设置GetLastError
参数表
参数 | 类型及说明
hwnd | Long，源窗口
wCmd | Long，指定结果窗口与源窗口的关系，它们建立在下述常数基础上：
 | GW_CHILD | 寻找源窗口的第一个子窗口
 | GW_HWNDFIRST | 为一个源子窗口寻找第一个兄弟（同级）窗口，或寻找第一个顶级窗口
 | GW_HWNDLAST | 为一个源子窗口寻找最后一个兄弟（同级）窗口，或寻找最后一个顶级窗口
 | GW_HWNDNEXT | 为源窗口寻找下一个兄弟窗口
 | GW_HWNDPREV | 为源窗口寻找前一个兄弟窗口
 | GW_OWNER | 寻找窗口的所有者
注解
兄弟或同级是指在整个分级结构中位于同一级别的窗口。如某个窗口有五个子窗口，那五个窗口就是兄弟窗口。尽管GetWindow可用于枚举窗口，但倘若要在枚举过程中重新定位、创建和清除窗口，那么EnumWindows和EnumChildWindows更为可靠

Top


GetWindowContextHelpId
VB声明
Declare Function GetWindowContextHelpId Lib "user32" Alias "GetWindowContextHelpId" (ByVal hWnd As Long) As Long
说明
取得与窗口关联在一起的帮助场景ID
返回值
Long，帮助场景ID（如果有的话），否则返回零
参数表
参数 | 类型及说明
hWnd | Long，欲获取帮助场景的那个窗口的句柄
注解
在vb环境中，这个函数不能取得一个vb窗体或控件的帮助场景的ID集

Top


GetWindowLong
VB声明
Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long) As Long
说明
从指定窗口的结构中取得信息
返回值
Long，由nIndex决定。零表示出错。会设置GetLastError
参数表
参数 | 类型及说明
hwnd | Long，欲为其获取信息的窗口的句柄
nIndex | Long，欲取回的信息，可以是下述任何一个常数：
 | GWL_EXSTYLE | 扩展窗口样式
 | GWL_STYLE | 窗口样式
 | GWL_WNDPROC | 该窗口的窗口函数的地址
 | GWL_HINSTANCE | 拥有窗口的实例的句柄
 | GWL_HWNDPARENT | 该窗口之父的句柄。不要用SetWindowWord来改变这个值
 | GWL_ID | 对话框中一个子窗口的标识符
 | GWL_USERDATA | 含义由应用程序规定
 | DWL_DLGPROC | 这个窗口的对话框函数地址
 | DWL_MSGRESULT | 在对话框函数中处理的一条消息返回的值
 | DWL_USER | 含义由应用程序规定

Top


GetWindowPlacement
VB声明
Declare Function GetWindowPlacement Lib "user32" Alias "GetWindowPlacement" (ByVal hwnd As Long, lpwndpl As WINDOWPLACEMENT) As Long
说明
获得指定窗口的状态及位置信息
返回值
Long，非零表示成功，零表示失败。会设置GetLastError
参数表
参数 | 类型及说明
hwnd | Long，欲获取信息的那个窗口的句柄
lpwndpl | WINDOWPLACEMENT，包含的窗口位置和状态信息的结构
注解
在调用这个函数之前，请务必设置WINDOWPLACEMENT结构的长度字段

Top


GetWindowRect
VB声明
Declare Function GetWindowRect Lib "user32" Alias "GetWindowRect" (ByVal hwnd As Long, lpRect As RECT) As Long
说明
获得整个窗口的范围矩形，窗口的边框、标题栏、滚动条及菜单等都在这个矩形内
返回值
Long，非零表示成功，零表示失败。会设置GetLastError
参数表
参数 | 类型及说明
hwnd | Long，想获得范围矩形的那个窗口的句柄
lpRect | RECT，屏幕坐标中随同窗口装载的矩形
注解
如将它与通过GetDesktopWindow获得的句柄联合使用，可获得对整个可视显示区域（桌面）进行说明的矩形

Top


GetWindowText
VB声明
Declare Function GetWindowText Lib "user32" Alias "GetWindowTextA" (ByVal hwnd As Long, ByVal lpString As String, ByVal cch As Long) As Long
说明
取得一个窗体的标题（caption）文字，或者一个控件的内容（在vb里使用：使用vb窗体或控件的caption或text属性）
返回值
Long，复制到lpString的字串长度；不包括空中止字符。会设置GetLastError
参数表
参数 | 类型及说明
hwnd | Long，欲获取文字的那个窗口的句柄
lpString | String，预定义的一个缓冲区，至少有cch+1个字符大小；随同窗口文字载入
cch | Long，lpString缓冲区的长度
注解
不能用它从另一个应用程序的编辑控件中获取文字

Top


GetWindowTextLength
VB声明
Declare Function GetWindowTextLength Lib "user32" Alias "GetWindowTextLengthA" (ByVal hwnd As Long) As Long
说明
调查窗口标题文字或控件内容的长短（在vb里使用：直接使用vb窗体或控件的caption或text属性）
返回值
Long，字串长度，不包括空中止字符
参数表
参数 | 类型及说明
hwnd | Long，想调查文字长度的窗口的句柄

Top


GetWindowWord
VB声明
Declare Function GetWindowWord Lib "user32" Alias "GetWindowWord" (ByVal hwnd As Long, ByVal nIndex As Long) As Integer
说明
获得指定窗口结构的信息
返回值
Long，由nIndex决定
参数表
参数 | 类型及说明
hwnd | Long，想获取信息的那个窗口的句柄
nIndex | Long，正偏移值，指出在窗口额外字节分配的空间中取得的信息

Top


InflateRect
VB声明
Declare Function InflateRect Lib "user32" Alias "InflateRect" (lpRect As RECT, ByVal x As Long, ByVal y As Long) As Long
说明
这个函数用于增大或减小一个矩形的大小。x加在右侧区域，并从左侧区域减去；如x为正，则能增大矩形的宽度；如x为负，则能减小它。y对顶部与底部区域产生的影响是是类似的
返回值
Long，非零表示成功，零表示失败。会设置GetLastError
参数表
参数 | 类型及说明
lpRect | RECT，欲修改的矩形
x | Long，用这个数字修改宽度
y | Long，用这个数字修改高度
注解
注意宽度和高度的实际改变量是x及y参数值的两倍

Top


IntersectRect
VB声明
Declare Function IntersectRect Lib "user32" Alias "IntersectRect" (lpDestRect As RECT, lpSrc1Rect As RECT, lpSrc2Rect As RECT) As Long
说明
这个函数在lpDestRect里载入一个矩形，它是lpSrc1Rect与lpSrc2Rect两个矩形的交集。如两个源矩形根本未发生重叠，则lpDestRect会被设为一个空矩形
返回值
Long，非零表示成功，零表示失败。会设置GetLastError
参数表
参数 | 类型及说明
lpDestRect | RECT，目标矩形，用于包含lpSrc1Rect与lpSrc2Rect两个矩形的重合部分
lpSrc1Rect | RECT，第一个源矩形
lpSrc2Rect | RECT，第二个源矩形

Top


InvalidateRect

InvalidateRect,InvalidateRectBynum
VB声明
Declare Function InvalidateRect& Lib "user32" (ByVal hwnd As Long, lpRect As RECT, ByVal bErase As Long) Declare Function InvalidateRectBynum& Lib "user32" Alias "InvalidateRect" (ByVal hwnd As Long, ByVal lpRect As Long, ByVal bErase As Long)
说明
这个函数屏蔽一个窗口客户区的全部或部分区域。这会导致窗口在事件期间部分重画
返回值
Long，非零表示成功，零表示失败
参数表
参数 | 类型及说明
hwnd | Long，待屏蔽窗口的句柄
lpRect | RECT，用于描述待屏蔽矩形部分的一个矩形结构。可用InvalidateRectBynum函数，同时将lpRect设为零（Long数据类型），从而屏蔽（或禁用）整个窗口
bErase | Long，TRUE（非零）导致指定的区域在重画前先删除
注解
一旦系统有些更新屏幕的闲置时间可用，windows就会重画窗口

Top


IsChild
VB声明
Declare Function IsChild Lib "user32" Alias "IsChild" (ByVal hWndParent As Long, ByVal hwnd As Long) As Long
说明
判断一个窗口是否为另一窗口的子或隶属窗口
返回值
Long，非零表示成功，零表示失败
参数表
参数 | 类型及说明
hWndParent | Long，父窗口的句柄
hwnd | Long，欲测试的窗口的句柄

Top


IsIconic
VB声明
Declare Function IsIconic Lib "user32" Alias "IsIconic" (ByVal hwnd As Long) As Long
说明
判断窗口是否已最小化
返回值
Long，非零表示成功，零表示失败
参数表
参数 | 类型及说明
hwnd | Long，待检测窗口的句柄

Top


IsRectEmpty
VB声明
Declare Function IsRectEmpty Lib "user32" Alias "IsRectEmpty" (lpRect As RECT) As Long
说明
判断一个矩形是否为空
返回值
Long，非零表示成功，零表示失败。会设置GetLastError
参数表
参数 | 类型及说明
lpRect | RECT，要检查的矩形

Top


IsWindow
VB声明
Declare Function IsWindow Lib "user32" Alias "IsWindow" (ByVal hwnd As Long) As Long
说明
判断一个窗口句柄是否有效
返回值
Long，非零表示成功，零表示失败
参数表
参数 | 类型及说明
hwnd | Long，待检查窗口的句柄
注解
如在一个程序变量里容纳了窗口句柄，为了解它是否仍然有效，就可考虑使用这个函数

Top


IsWindowEnabled
VB声明
Declare Function IsWindowEnabled Lib "user32" Alias "IsWindowEnabled" (ByVal hwnd As Long) As Long
说明
判断窗口是否处于活动状态（在vb里使用：针对vb窗体和控件，请用enabled属性）
返回值
Long，非零表示成功，零表示失败
参数表
参数 | 类型及说明
hwnd | Long，待检测窗口的句柄

Top


IsWindowUnicode
VB声明
Declare Function IsWindowUnicode Lib "user32" Alias "IsWindowUnicode" (ByVal hwnd As Long) As Long
说明
判断一个窗口是否为Unicode窗口。这意味着窗口为所有基于文本的消息都接收Unicode文字
返回值
Long，如是个Unicode窗口则返回非零值，如是个ANSI窗口则返回零
参数表
参数 | 类型及说明
hwnd | Long，窗口句柄
注解
在vb里无须担心这方面的问题，windows会自动转换引用了文本的消息，以满足窗口接收消息的需要

Top


IsWindowVisible
VB声明
Declare Function IsWindowVisible Lib "user32" Alias "IsWindowVisible" (ByVal hwnd As Long) As Long
说明
判断窗口是否可见
返回值
Long，如窗口可见则返回TRUE（非零）
参数表
参数 | 类型及说明
hwnd | Long，要测试的那个窗口的句柄
注解
窗口可能处于可见状态，同时仍被位于它顶部的其他可见窗口（排在内部窗口列表的前面）隐藏起来

Top


IsZoomed
VB声明
Declare Function IsZoomed Lib "user32" Alias "IsZoomed" (ByVal hwnd As Long) As Long
说明
判断窗口是否最大化
返回值
Long，非零表示成功，零表示失败
参数表
参数 | 类型及说明
hwnd | Long，欲测试的窗口的句柄

Top


LockWindowUpdate
VB声明
Declare Function LockWindowUpdate Lib "user32" Alias "LockWindowUpdate" (ByVal hwndLock As Long) As Long
说明
锁定指定窗口，禁止它更新。同时只能有一个窗口处于锁定状态
返回值
Long，非零表示成功，零表示失败（比如另外已有一个窗口锁定）
参数表
参数 | 类型及说明
hwndLock | Long，欲锁定窗口的句柄。如设为零，则对窗口解锁
注解
windows会跟踪锁定窗口的区域，并会在窗口解锁后重画它们。可用GetDCEx获得一个特殊的设备场景，令其与锁定窗口协同工作，从而描绘一个加锁的窗口。这种技术的一个应用场合是创建跟踪矩形（比如用于改变窗口大小的矩形）

Top


MapWindowPoints
VB声明
Declare Function MapWindowPoints& Lib "user32" (ByVal hwndFrom As Long, ByVal hwndTo As Long, lppt As POINTAPI, ByVal cPoints As Long)
说明
将一个窗口客户区坐标的点转换到另一窗口的客户区坐标系统（在vb里使用：无论向函数传递单独一个点，还是传递数组中的第一个POINTAPI结构，都要特别谨慎。数组中的条目数量至少等于由cPoints参数指定的数量）
返回值
Long，低字代表映射过程中添加给每个点的水平偏移，高字则代表垂直偏移
参数表
参数 | 类型及说明
hwndFrom | Long，定义源坐标的窗口。用零或桌面窗口句柄指定屏幕坐标
hwndTo | Long，定义目标坐标的窗口。用零或桌面窗口句柄指定屏幕坐标
lppt | POINTAPI，点结构中待转换的第一个条目。注意RECT结构在内存中组织成两个连续的POINTAPI结构。这样就可为该函数创建一个别名，并使用RECT结构；而不是POINTAPI结构。如这样做时，注意将cPoints的值加倍
cPoints | Long，欲转换的点数
注解
在vb自带的api查看器中复制的声明为：Declare Function MapWindowPoints Lib "user32" Alias "MapWindowPoints" (ByVal hwndFrom As Long, ByVal hwndTo As Long, lppt As Any, ByVal cPoints As Long) As Long，请注意：lppt As Any

Top


MoveWindow
VB声明
Declare Function MoveWindow Lib "user32" Alias "MoveWindow" (ByVal hwnd As Long, ByVal x As Long, ByVal y As Long, ByVal nWidth As Long, ByVal nHeight As Long, ByVal bRepaint As Long) As Long
说明
改变指定窗口的位置和大小。顶级窗口可能受最大或最小尺寸的限制，那些尺寸优先于这里设置的参数
返回值
Long，非零表示成功，零表示失败
参数表
参数 | 类型及说明
hwnd | Long，欲移动窗口的句柄
x | Long，窗口新的左侧位置
y | Long，窗口新的顶部位置
nWidth | Long，窗口的新宽度
nHeight | Long，窗口的高宽度
bRepaint | Long，如窗口此时应重画，则设为TRUE（非零）。FALSE（零）则表明应用程序会自己决定是否重画窗口

Top


OffsetRect
VB声明
Declare Function OffsetRect Lib "user32" Alias "OffsetRect" (lpRect As RECT, ByVal x As Long, ByVal y As Long) As Long
说明
该函数通过应用一个指定的偏移，从而让矩形移动起来。x会添加到右侧和左侧区域。y添加到顶部和底部区域。偏移方向则取决于参数是正数还是负数，以及采用的是什么坐标系统
返回值
Long，非零表示成功，零表示失败。会设置GetLastError
参数表
参数 | 类型及说明
lpRect | RECT，欲移动的矩形
x | Long，水平偏移量
y | Long，垂直偏移量

Top


OpenIcon
VB声明
Declare Function OpenIcon Lib "user32" Alias "OpenIcon" (ByVal hwnd As Long) As Long
说明
恢复一个最小化的程序，并将其激活
返回值
Long，非零表示成功，零表示失败。会设置GetLastError
参数表
参数 | 类型及说明
hwnd | Long，欲恢复的窗口
注解
针对vb窗体，应使用vb的WindowState属性

Top


PtInRect
VB声明
Declare Function PtInRect Lib "user32" Alias "PtInRect" (lpRect As RECT, pt As POINTAPI) As Long
说明
这个函数判断指定的点是否位于矩形lpRect内部
返回值
Long，非零表示成功，零表示失败。会设置GetLastError
参数表
参数 | 类型及说明
lpRect | RECT，欲检查的矩形
pt | POINTAPI，欲判断的点
注解
如点位于矩形四边之内，或矩形的顶部或左侧边线上，则认为它在矩形内部。如位于矩形的右侧或底部边线，则不认为它在矩形内部

Top


RedrawWindow
VB声明
Declare Function RedrawWindow Lib "user32" Alias "RedrawWindow" (ByVal hwnd As Long, lprcUpdate As RECT, ByVal hrgnUpdate As Long, ByVal fuRedraw As Long) As Long
说明
根据fuRedraw旗标的设置，重画全部或部分窗口
返回值
Long，非零表示成功，零表示失败。会设置GetLastError
参数表
参数 | 类型及说明
hwnd | Long，要重画的窗口的句柄。零表示更新桌面窗口
lprcUpdate | RECT，窗口中需要重画的一个矩形区域
hrgnUpdate | Long，一个“区”的句柄，这个区描述了要重画的窗口区域。“区”：Region
fuRedraw | Long，规定具体重画操作的旗标。下列常数可组合使用，从而进行复杂的重画行动
 | RDW_ERASE | 重画前，先清除重画区域的背景。也必须指定RDW_INVALIDATE
 | RDW_FRAME | 如非客户区包含在重画区域中，则对非客户区进行更新。也必须指定RDW_INVALIDATE
 | RDW_INTERNALPAINT | 即使窗口并非无效，也向其投递一条WM_PAINT消息
 | RDW_INVALIDATE | 禁用（屏蔽）重画区域
 | RDW_NOERASE | 禁止删除重画区域的背景
 | RDW_NOFRAME | 禁止非客户区域重画（如果它是重画区域的一部分）。也必须指定RDW_VALIDATE
 | RDW_NOINTERNALPAINT | 禁止内部生成或由这个函数生成的任何待决WM_PAINT消息。针对无效区域，仍会生成WM_PAINT消息
 | RDW_VALIDATE | 检验重画区域
 | RDW_ERASENOW | 立即删除指定的重画区域
 | RDW_UPDATENOW | 立即更新指定的重画区域
 | RDW_ALLCHILDREN | 重画操作包括子窗口（前提是它们存在于重画区域）
 | RDW_NOCHILDREN | 重画操作排除子窗口（前提是它们存在于重画区域）
注解
如针对桌面窗口应用这个函数，则应用程序必须用RDW_ERASE旗标重画桌面

Top


ReleaseCapture
VB声明
Declare Function ReleaseCapture Lib "user32" Alias "ReleaseCapture" () As Long
说明
为当前的应用程序释放鼠标捕获
返回值
Long，TRUE（非零）表示成功，零表示失败
注解
我的理解：与SetCapture函数一起使用，用于判断鼠标离开（mouseleave）事件

Top


ScreenToClient
VB声明
Declare Function ScreenToClient Lib "user32" Alias "ScreenToClient" (ByVal hwnd As Long, lpPoint As POINTAPI) As Long
说明
判断屏幕上一个指定点的客户区坐标
返回值
Long，非零表示成功，零表示失败
参数表
参数 | 类型及说明
hwnd | Long，一个窗口的句柄，该窗口定义了要使用的客户区坐标系统
lpPoint | POINTAPI，屏幕坐标系统中包含了屏幕点的结构。这个函数会随同相应的客户区坐标（由hwnd决定）载入结构

Top


ScrollWindow
VB声明
Declare Function ScrollWindow Lib "user32" Alias "ScrollWindow" (ByVal hWnd As Long, ByVal XAmount As Long, ByVal YAmount As Long, lpRect As RECT, lpClipRect As RECT) As Long
说明
滚动窗口客户区的全部或一部分
返回值
Long，非零表示成功，零表示失败。会设置GetLastError
参数表
参数 | 类型及说明
hWnd | Long，待滚动窗口的句柄
XAmount | Long，水平滚动的距离。正值向右滚动，负值向左滚动
YAmount | Long，垂直滚动的距离。正值向下滚动，负值向上滚动
lpRect | RECT，用客户区坐标表示的一个矩形，它定义了客户区要滚动的一个部分。如设为NULL，则滚动整个客户区。在NULL的情况下，子窗口和控件的位置也会随同任何无效区域移动。否则，子窗口和无效区域不会一起移动。因此，在滚动之前，如指定了lpRect，一个明智的做法是先调用UpdateWindow函数
lpClipRect | RECT，指定剪切区域。只有这个矩形的区域才可能滚动。该矩形优先于lpRect。可设为NULL

Top


ScrollWindowEx
VB声明
Declare Function ScrollWindowEx Lib "user32" Alias "ScrollWindowEx" (ByVal hwnd As Long, ByVal dx As Long, ByVal dy As Long, lprcScroll As RECT, lprcClip As RECT, ByVal hrgnUpdate As Long, lprcUpdate As RECT, ByVal fuScroll As Long) As Long
说明
根据附加的选项，滚动窗口客户区的全部或部分
返回值
Long，常数值SIMPLEREGION，COMPLEXREGION，或NULLREGION，它们描述了无效区域的类型
参数表
参数 | 类型及说明
hwnd | Long，欲滚动的窗口的句柄
dx | Long，水平滚动的距离。正值向右滚动，负值向左滚动
dy | Long，垂直滚动的距离。正值向下滚动，负值向上滚动
lprcScroll | RECT，用客户区坐标表示的一个矩形，它定义了客户区要滚动的一个部分。如设为零，则滚动整个客户区
lprcClip | RECT，指定一个剪切矩形。只有这个矩形的内容才可能滚动。该矩形优先于lpRect。可能为零，表示不进行剪切处理（原文：Clipping rectangle. Only the area within this rectangle may be scrolled. This rectangle takes priority over lpRect. May be zero, in which case no clipping takes place.）
hrgnUpdate | Long，滚动过程中随同无效区域载入的一个“区”。可能是零
lprcUpdate | RECT，随同一个矩形载入的矩形结构，该矩形定义了滚动过程中无效的区域。可能是零
fuScroll | Long，对滚动进行控制的旗标。可以是下述任何常数的组合
 | SW_ERASE | 清除新无效区域的背景
 | SW_INVALDATE | 使滚动时未覆盖的区域无效
 | SW_SCROLLCHILDREN | 滚动区域内的子窗口进行等量移动。为避免得到无效的结果，在使用这个函数的时候，请确定子窗口或控件要么完全在滚动区域中，要么完全在滚动区域外

Top


SetActiveWindow
VB声明
Declare Function SetActiveWindow Lib "user32" Alias "SetActiveWindow" (ByVal hwnd As Long) As Long
说明
激活指定的窗口
返回值
Long，前一个活动窗口的句柄
参数表
参数 | 类型及说明
hwnd | Long，待激活窗口的句柄
注解
在vb里使用这个函数要小心，它不会改变输入焦点，所以焦点可能设向一个不活动窗口，最好换用SetFocusAPI函数来激活窗口。如指定的窗口不从属于当前输入线程，则没有任何效果

Top


SetCapture
VB声明
Declare Function SetCapture Lib "user32" Alias "SetCapture" (ByVal hwnd As Long) As Long
说明
将鼠标捕获设置到指定的窗口。在鼠标按钮按下的时候，这个窗口会为当前应用程序或整个系统接收所有鼠标输入
返回值
Long，之前拥有鼠标捕获的窗口的句柄
参数表
参数 | 类型及说明
hwnd | Long，要接收所有鼠标输入的窗口的句柄
注解
我的理解：与ReleaseCapture函数一起使用，用于判断鼠标离开（mouseleave）事件

Top


SetClassLong
VB声明
Declare Function SetClassLong Lib "user32" Alias "SetClassLongA" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As ) As Long
说明
为窗口类设置一个Long变量条目
返回值
Long，由nIndex指定的的类信息的前一个值。零表示出错。会设置GetLastError
参数表
参数 | 类型及说明
hwnd | Long，欲为其设置类信息的那个窗口的句柄
nIndex | Long，参考GetClassLong函数的nIndex参数说明
dwNewLong | Long，类信息的新值，具体取决于nIndex
注解
使用这个函数一定要小心。记住，这里的变动会影响指定类的所有窗口，但除非窗口重画，否则那个变动不会显露出来

Top


SetClassWord
VB声明
Declare Function SetClassWord Lib "user32" Alias "SetClassWord" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal wNewWord As Long) As Long
说明
为窗口类设置一个条目
返回值
Long，由nIndex指定的类信息的前一个值。零表示出错。会设置GetLastError
参数表
参数 | 类型及说明
hwnd | Long，欲为其获得类信息的那个窗口的句柄
nIndex | Long，信息结构已分配额外空间的正偏移量
wNewWord | Long，由nIndex指定的类信息的新值
注解
使用这个函数一定要小心。记住，这里的变动会影响指定类的所有窗口，但除非窗口重画，否则那个变动不会显露出来

Top


SetFocusAPI
VB声明
Declare Function SetFocusAPI& Lib "user32" Alias "SetFocus" (ByVal hwnd As Long)
说明
将输入焦点设到指定的窗口。如有必要，会激活窗口
返回值
Long，前一个拥有焦点的窗口的句柄
参数表
参数 | 类型及说明
hwnd | Long，准备接收焦点的窗口的句柄
注解
在vb里对窗体和控件最好使用SetFocus方法。如指定的窗口不属于当前输入线程，则该函数是没有效果的。它用SetFocusAPI这个别名避免与vb的SetFocus方法发生冲突

Top


SetForegroundWindow
VB声明
Declare Function SetForegroundWindow Lib "user32" Alias "SetForegroundWindow" (ByVal hwnd As Long) As Long
说明
将窗口设为系统的前台窗口。这个函数可用于改变用户目前正在操作的应用程序
返回值
Long，非零表示成功，零表示失败。会设置GetLastError
参数表
参数 | 类型及说明
hwnd | Long，带到前台的窗口
注解
不应随便使用它，因为一旦程序突然从后台进入前台，可能会使用户产生迷惑

Top


SetParent
VB声明
Declare Function SetParent Lib "user32" Alias "SetParent" (ByVal hWndChild As Long, ByVal hWndNewParent As Long) As Long
说明
指定一个窗口的新父（在vb里使用：利用这个函数，vb可以多种形式支持子窗口。例如，可将控件从一个容器移至窗体中的另一个。用这个函数在窗体间移动控件是相当冒险的，但却不失为一个有效的办法。如真的这样做，请在关闭任何一个窗体之前，注意用SetParent将控件的父设回原来的那个）
返回值
Long，前一个父窗口的句柄
参数表
参数 | 类型及说明
hWndChild | Long，子窗口的句柄
hWndNewParent | Long，hWndChild的新父
注解
可用这个函数在运行期将vb控件置入容器控件内部（比如将一个按钮设成图象或窗体控件的子窗口），或者将控件从一个容器控件移至另一个。控件移至另一个父后，它的位置将由新父的坐标系统决定。这样一来，有必要重新规定控件的位置，使其能在目标位置显示出来

Top


SetRect
VB声明
Declare Function SetRect Lib "user32" Alias "SetRect" (lpRect As RECT, ByVal X1 As Long, ByVal Y1 As Long, ByVal X2 As Long, ByVal Y2 As Long) As Long
说明
设置指定矩形的内容
返回值
Long，非零表示成功，零表示失败。会设置GetLastError
参数表
参数 | 类型及说明
lpRect | RECT，欲设置的矩形
X1 | Long，左侧区域（Left）的值
Y1 | Long，顶部区域（Top）的值
X2 | Long，右侧区域（Right）的值
Y2 | Long，底部区域（Bottom）的值

Top


SetRectEmpty
VB声明
Declare Function SetRectEmpty Lib "user32" Alias "SetRectEmpty" (lpRect As RECT) As Long
说明
将矩形lpRect设为一个空矩形（所有字段都为空）
返回值
Long，非零表示成功，零表示失败。会设置GetLastError
参数表
参数 | 类型及说明
lpRect | RECT，欲设为空的矩形

Top


SetWindowContextHelpId
VB声明
Declare Function SetWindowContextHelpId Lib "user32" Alias "SetWindowContextHelpId" (ByVal hWnd As Long, ByVal dw As Long) As Long
说明
为指定的窗口设置帮助场景（上下文）ID
返回值
Long，非零表示成功，零表示失败
参数表
参数 | 类型及说明
hWnd | Long，窗口句柄
dw | Long，新的帮助场景ID

Top


SetWindowLong
VB声明
Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
说明
在窗口结构中为指定的窗口设置信息
返回值
Long，指定数据的前一个值
参数表
参数 | 类型及说明
hwnd | Long，欲为其取得信息的窗口的句柄
nIndex | Long，请参考GetWindowLong函数的nIndex参数的说明
dwNewLong | Long，由nIndex指定的窗口信息的新值

Top


SetWindowPlacement
VB声明
Declare Function SetWindowPlacement Lib "user32" Alias "SetWindowPlacement" (ByVal hwnd As Long, lpwndpl As WINDOWPLACEMENT) As Long
说明
设置窗口状态和位置信息
返回值
Long，非零表示成功，零表示失败。会设置GetLastError
参数表
参数 | 类型及说明
hwnd | Long，欲设置位置信息的窗口的句柄
lpwndpl | WINDOWPLACEMENT，这个结构包含了窗口的位置与状态信息

Top


SetWindowPos
VB声明
Declare Function SetWindowPos Lib "user32" Alias "SetWindowPos" (ByVal hwnd As Long, ByVal hWndInsertAfter As Long, ByVal x As Long, ByVal y As Long, ByVal cx As Long, ByVal cy As Long, ByVal wFlags As Long) As Long
说明
这个函数能为窗口指定一个新位置和状态。它也可改变窗口在内部窗口列表中的位置。该函数与DeferWindowPos函数相似，只是它的作用是立即表现出来的（在vb里使用：针对vb窗体，如它们在win32下屏蔽或最小化，则需重设最顶部状态。如有必要，请用一个子类处理模块来重设最顶部状态
返回值
Long，非零表示成功，零表示失败。会设置GetLastError
参数表
参数 | 类型及说明
hwnd | Long，欲定位的窗口
hWndInsertAfter | Long，窗口句柄。在窗口列表中，窗口hwnd会置于这个窗口句柄的后面。也可能选用下述值之一：
 | HWND_BOTTOM | 将窗口置于窗口列表底部
 | HWND_TOP | 将窗口置于Z序列的顶部；Z序列代表在分级结构中，窗口针对一个给定级别的窗口显示的顺序
 | HWND_TOPMOST | 将窗口置于列表顶部，并位于任何最顶部窗口的前面
 | HWND_NOTOPMOST | 将窗口置于列表顶部，并位于任何最顶部窗口的后面
x | Long，窗口新的x坐标。如hwnd是一个子窗口，则x用父窗口的客户区坐标表示
y | Long，窗口新的y坐标。如hwnd是一个子窗口，则y用父窗口的客户区坐标表示
cx | Long，指定新的窗口宽度
cy | Long，指定新的窗口高度
wFlags | Long，包含了旗标的一个整数
 | SWP_DRAWFRAME | 围绕窗口画一个框
 | SWP_HIDEWINDOW | 隐藏窗口
 | SWP_NOACTIVATE | 不激活窗口
 | SWP_NOMOVE | 保持当前位置（x和y设定将被忽略）
 | SWP_NOREDRAW | 窗口不自动重画
 | SWP_NOSIZE | 保持当前大小（cx和cy会被忽略）
 | SWP_NOZORDER | 保持窗口在列表的当前位置（hWndInsertAfter将被忽略）
 | SWP_SHOWWINDOW | 显示窗口
 | SWP_FRAMECHANGED | 强迫一条WM_NCCALCSIZE消息进入窗口，即使窗口的大小没有改变
注解
窗口成为最顶级窗口后，它下属的所有窗口也会进入最顶级。一旦将其设为非最顶级，则它的所有下属和物主窗口也会转为非最顶级。Z序列用垂直于屏幕的一根假想Z轴量化这种从顶部到底部排列的窗口顺序

Top


SetWindowText
VB声明
Declare Function SetWindowText Lib "user32" Alias "SetWindowTextA" (ByVal hwnd As Long, ByVal lpString As String) As Long
说明
设置窗口的标题文字或控件的内容（在vb里使用：针对vb窗体，应使用caption或text属性）
返回值
Long，非零表示成功，零表示失败。会设置GetLastError
参数表
参数 | 类型及说明
hwnd | Long，要设置文字的窗口的句柄
lpString | String，要设到hwnd窗口中的文字

Top


SetWindowWord
VB声明
Declare Function SetWindowWord Lib "user32" Alias "SetWindowWord" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal wNewWord As Long) As Long
说明
在窗口结构中为指定的窗口设置信息（在vb里使用：使用时要谨慎）
返回值
Long，指定数据的前一个值
参数表
参数 | 类型及说明
hwnd | Long，欲为其设置信息的那个窗口的句柄
nIndex | Long，参考对GetWindowWord函数的nIndex参数的说明
wNewWord | Long，由nIndex指定的窗口信息的新值

Top


ShowOwnedPopups
VB声明
Declare Function ShowOwnedPopups Lib "user32" Alias "ShowOwnedPopups" (ByVal hwnd As Long, ByVal fShow As Long) As Long
说明
显示或隐藏由指定窗口所有的全部弹出式窗口（在vb里使用：并不特别有用，因为vb不用弹出式窗口）
返回值
Long，非零表示成功，零表示失败。会设置GetLastError
参数表
参数 | 类型及说明
hwnd | Long，父窗口的句柄
fShow | Long，TRUE（非零）表示显示由hwnd所有的所有弹出式窗口；FALSE（零）则隐藏它们

Top


ShowWindow
VB声明
Declare Function ShowWindow Lib "user32" Alias "ShowWindow" (ByVal hwnd As Long, ByVal nCmdShow As Long) As Long
说明
控制窗口的可见性（在vb里使用：针对vb窗体及控件，请使用对应的vb属性）
返回值
Long，如窗口之前是可见的，则返回TRUE（非零），否则返回FALSE（零）
参数表
参数 | 类型及说明
hwnd | Long，窗口句柄，要向这个窗口应用由nCmdShow指定的命令
nCmdShow | Long，为窗口指定可视性方面的一个命令。请用下述任何一个常数
 | SW_HIDE | 隐藏窗口，活动状态给令一个窗口
 | SW_MINIMIZE | 最小化窗口，活动状态给令一个窗口
 | SW_RESTORE | 用原来的大小和位置显示一个窗口，同时令其进入活动状态
 | SW_SHOW | 用当前的大小和位置显示一个窗口，同时令其进入活动状态
 | SW_SHOWMAXIMIZED | 最大化窗口，并将其激活
 | SW_SHOWMINIMIZED | 最小化窗口，并将其激活
 | SW_SHOWMINNOACTIVE | 最小化一个窗口，同时不改变活动窗口
 | SW_SHOWNA | 用当前的大小和位置显示一个窗口，不改变活动窗口
 | SW_SHOWNOACTIVATE | 用最近的大小和位置显示一个窗口，同时不改变活动窗口
 | SW_SHOWNORMAL | 与SW_RESTORE相同

Top


ShowWindowAsync
VB声明
Declare Function ShowWindowAsync Lib "user32" Alias "ShowWindowAsync" (ByVal hWnd As Long, ByVal nCmdShow As Long) As Long
说明
与ShowWindow相似，只是这时的ShowWindow命令会投递到指定的窗口，然后进行异步处理。这样一来，就可控制从属于另一个进程的窗口的可视情况。同时无须担心另一个进程挂起的时候，自己的应用程序也会牵连其中
返回值
Long，如窗口之前是可见的，则返回TRUE（非零），否则返回FALSE（零）
参数表
参数 | 类型及说明
hWnd | Long，欲接收ShowWindow命令的窗口
nCmdShow | Long，与ShowWindow相同

Top


SubtractRect
VB声明
Declare Function SubtractRect Lib "user32" Alias "SubtractRect" (lprcDst As RECT, lprcSrc1 As RECT, lprcSrc2 As RECT) As Long
说明
这个函数会装载矩形lprcDst，它是在矩形lprcSrc1中减去lprcSrc2得到的结果
返回值
Long，TRUE（非零）表示成功，零表示失败
参数表
参数 | 类型及说明
lprcDst | RECT，准备包容lprcSrc1减lprcSrc2结果的目标矩形
lprcSrc1 | RECT，第一个源矩形
lprcSrc2 | RECT，第二个源矩形
注解
lprcSrc1与lprcSrc2这两个矩形必须在水平或垂直方向完全相交。换句话说，倘若在lprcSrc1中拿掉与lprcSrc2相交的lprcDst部分，结果必须是个矩形

Top


TileWindows
VB声明
Declare Function TileWindows% Lib "user32" (ByVal hwndParent As Long, ByVal wHow As Long, lpRect As RECT, ByVal cKids As Long, lpKids As Long) Declare Function TileWindowsBynum% Lib "user32" Alias "TileWindows" (ByVal hwndParent As Long, ByVal wHow As Long, ByVal lpRect As Long, ByVal cKids As Long, ByVal lpKids As Long)
说明
以平铺顺序排列窗口（在vb里使用：对顶级窗口和MDI子窗口有效）
返回值
Integer，成功排列的窗口数量，零表示失败
参数表
参数 | 类型及说明
hwndParent | Long，欲对其子窗口进行排列的父窗口。可用GetDesktopWindow函数获得顶级窗口（桌面）的句柄
wHow | Long，MDITILE_HORIZONTAL或MDITILE_VERTICAL，用于设置平铺方向（水平或垂直）
lpRect | Long，要在其中平铺窗口的矩形，可设为NULL，表示用整个客户区域
cKids | Long，lpKids数组中指定的子窗口数量
lpKids | Long，欲排列子窗口列表的第一个元素。如传递NULL（务必将参数定义成ByVal Long），可排列所有子窗口
注解
这个函数不能对诸如控件的子窗口产生作用——只对对顶级窗口和MDI子窗口有用。在MDI窗口的情况下，指定的父窗口应是MDIClient窗口的句柄，不应是MDI窗体本身的窗口句柄。可用GetParent获得正确的句柄

Top


UnionRect
VB声明
Declare Function UnionRect Lib "user32" Alias "UnionRect" (lpDestRect As RECT, lpSrc1Rect As RECT, lpSrc2Rect As RECT) As Long
说明
这个函数会装载一个lpDestRect目标矩形，它是lpSrc1Rect和lpSrc2Rect联合起来的结果。目标矩形的所有点都同时位于两个源矩形里；也即是它们的一个交集
返回值
Long，非零表示成功，零表示失败。会设置GetLastError
参数表
参数 | 类型及说明
lpDestRect | RECT，用于容纳lpSrc1Rect和lpSrc2Rect联合运算结果的目标矩形
lpSrc1Rect | RECT，第一个源矩形
lpSrc2Rect | RECT，第二个源矩形

Top


UpdateWindow
VB声明
Declare Function UpdateWindow Lib "user32" Alias "UpdateWindow" (ByVal hwnd As Long) As Long
说明
强制立即更新窗口，窗口中以前屏蔽的所有区域都会重画（在vb里使用：如vb窗体或控件的任何部分需要更新，可考虑直接使用refresh方法
返回值
Long，非零表示成功，零表示失败
参数表
参数 | 类型及说明
hwnd | Long，欲更新窗口的句柄

Top


ValidateRect
VB声明
Declare Function ValidateRect& Lib "user32" (ByVal hwnd As Long, lpRect As RECT) Declare Function ValidateRectBynum& Lib "user32" Alias "ValidateRect" (ByVal hwnd As Long, ByVal lpRect As Long)
说明
校验窗口的全部或部分客户区。这样便可告之windows指定的区域不需要重画
返回值
Long，非零表示成功，零表示失败
参数表
参数 | 类型及说明
hwnd | Long，欲检验的窗口句柄
lpRect | RECT，指定一个矩形结构，用于描叙欲校验的矩形部分。可使用ValidateRectBynum，同时将lpRect设为零（Long数据类型），从而对整个窗口进行校验

Top


WindowFromPoint
VB声明
Declare Function WindowFromPoint Lib "user32" Alias "WindowFromPoint" (ByVal xPoint As Long, ByVal yPoint As Long) As Long
说明
返回包含了指定点的窗口的句柄。忽略屏蔽、隐藏以及透明窗口
返回值
Long，包含了指定点的窗口的句柄。如指定的点处没有窗口存在，则返回零
参数表
参数 | 类型及说明
xPoint | Long，x点值
yPoint | Long，y点值

Top


BitBlt
VB声明
Declare Function BitBlt Lib "gdi32" Alias "BitBlt" (ByVal hDestDC As Long, ByVal x As Long, ByVal y As Long, ByVal nWidth As Long, ByVal nHeight As Long, ByVal hSrcDC As Long, ByVal xSrc As Long, ByVal ySrc As Long, ByVal dwRop As Long) As Long
说明
将一幅位图从一个设备场景复制到另一个。源和目标DC相互间必须兼容
返回值
Long，非零表示成功，零表示失败。会设置GetLastError
参数表
参数 | 类型及说明
hDestDC | Long，目标设备场景
x,y | Long，对目标DC中目标矩形左上角位置进行描述的那个点。用目标DC的逻辑坐标表示
nWidth,nHeight | Long，欲传输图象的宽度和高度
hSrcDC | Long，源设备场景。如光栅运算未指定源，则应设为0
xSrc,ySrc | Long，对源DC中源矩形左上角位置进行描述的那个点。用源DC的逻辑坐标表示
dwRop | Long，传输过程要执行的光栅运算
注解
在NT环境下，如在一次世界传输中要求在源设备场景中进行剪切或旋转处理，这个函数的执行会失败 如目标和源DC的映射关系要求矩形中像素的大小必须在传输过程中改变，那么这个函数会根据需要自动伸缩、旋转、折叠、或切断，以便完成最终的传输过程


CopyIcon
VB声明
Declare Function CopyIcon Lib "user32" Alias "CopyIcon" (ByVal hIcon As Long) As Long
说明
制作指定图标或鼠标指针的一个副本。这个副本从属于发出调用的应用程序
返回值
Long，新图标的句柄，零表示失败。会设置GetLastError
参数表
参数 | 类型及说明
hIcon | Long，欲复制的图标或指针的句柄
注解
由于这个函数在win32中可复制鼠标指针，所以win32未提供对win16函数CopyCursor的支持 从一个DLL或其他应用程序载入一个图标后，只有DLL或应用程序保持载入状态，那个图标才可使用。这个函数允许我们制作图标从属于自己应用程序的一个副本。一旦不再需要，必须用DestroyIcon函数将其清除，以释放占用的系统资源


CopyImage
VB声明
Declare Function CopyImage Lib "user32" Alias "CopyImage" (ByVal handle As Long, ByVal un1 As Long, ByVal n1 As Long, ByVal n2 As Long, ByVal un2 As Long) As Long
说明
复制位图、图标或指针，同时在复制过程中进行一些转换工作
返回值
Long，执行成功则返回新图象的句柄，零表示失败。会设置GetLastError
参数表
参数 | 类型及说明
handle | Long，欲复制的图象的句柄
un1 | Long，下述常数之一：MAGE_BITMAP， IMAGE_CURSOR 或 IMAGE_ICON
n1 | Long，副本以像素表示的宽度
n2 | Long，副本以像素表示的高度
un2 | Long，下述常数任意组合：
 | LR_DELETEORG | 删除原来的图象
 | LR_COPYRETURNORG | 忽略n1和n2设置
 | LR_MONOCHROME | 创建一个单色副本
 | LR_COPYFROMRESOURCE | 在原始资源的基础上创建一个副本，原始图象即是从那个资源中载入的。假设我们想为一个32×32的图标制作一个64×64的副本。如果不设这个标志，CopyImage会直接放大原来的图标。而使用这个标志后，CopyImage首先检查资源文件中是否存在这个图标的一个64×64版本，如果存在，就直接载入品质更好的图象
注解
这个函数通常在希望复制已选入其他设备场景的一幅位图时使用——例如，复制已成为ImageList控件一部分的某幅位图。选定的位图将不能使用，因为一次只能将位图选入一个设备场景

Top


CreateBitmap
VB声明
Declare Function CreateBitmap Lib "gdi32" Alias "CreateBitmap" (ByVal nWidth As Long, ByVal nHeight As Long, ByVal nPlanes As Long, ByVal nBitCount As Long, lpBits As Any) As Long
说明
按照规定的格式创建一幅与设备有关位图
返回值
Long，执行成功返回位图的句柄，零表示失败
参数表
参数 | 类型及说明
nWidth | Long，位图宽度，以像素为单位
nHeight | Long，位图高度，以像素为单位
nPlanes | Long，色层数量
nBitCount | Long，每像素的位数
lpBits | Any，指向欲载入位图的数据的指针。可设为零，表示不对位图进行初始化（用ByVal传递一个零值）。这个数据的格式必须与设备的要求相符。扫描线必须对齐16位字边界
注解
一旦不再需要，记住用DeleteObject函数释放位图占用的内存和资源 可用这个函数创建单色位图（1层，每像素一位）。对于彩色位图，则应使用CreateCompatibleBitmap。这个函数可以胜任工作；但要注意，用它创建的位图在使用时会稍慢一些，因为Windows每次使用的时候都必须检查它的位图格式 如果nWidth和nHeight为零，返回的位图就是一个1×1的单色位图


CreateBitmapIndirect
VB声明
Declare Function CreateBitmapIndirect Lib "gdi32" Alias "CreateBitmapIndirect" (lpBitmap As BITMAP) As Long
说明
创建一幅与设备有关位图
返回值
Long，执行成功返回位图句柄，零表示失败
参数表
参数 | 类型及说明
lpBitmap | BITMAP，对一幅逻辑位图进行描述的结构。这个结构中的字段与CreateBitmap函数的参数大致对应
注解
如使用由GetObject函数获得的BITMAP结构，注意GetObject不会取回位图数据——只有位图的大小和配置信息 如果nWidth和nHeight为零，返回的位图就是一个1×1的单色位图。也请参考对CreateBitmap函数的注解


CreateCompatibleBitmap
VB声明
Declare Function CreateCompatibleBitmap Lib "gdi32" Alias "CreateCompatibleBitmap" (ByVal hdc As Long, ByVal nWidth As Long, ByVal nHeight As Long) As Long
说明
创建一幅与设备有关位图，它与指定的设备场景兼容
返回值
Long，执行成功返回位图句柄，零表示失败
参数表
参数 | 类型及说明
hdc | Long，设备场景的句柄
nWidth | Long，位图宽度，以像素为单位
nHeight | Long，位图高度，以像素为单位
注解
内存设备场景即与彩色位图兼容，也与单色位图兼容。这个函数的作用是创建一幅与当前选入hdc中的场景兼容。对一个内存场景来说，默认的位图是单色的。倘若内存设备场景有一个DIBSection选入其中，这个函数就会返回DIBSection的一个句柄。如hdc是一幅设备位图，那么结果生成的位图就肯定兼容于设备（也就是说，彩色设备生成的肯定是彩色位图） 如果nWidth和nHeight为零，返回的位图就是一个1×1的单色位图 一旦位图不再需要，一定用DeleteObject函数释放它占用的内存及资源


CreateCursor
VB声明
Declare Function CreateCursor Lib "user32" Alias "CreateCursor" (ByVal hInstance As Long, ByVal nXhotspot As Long, ByVal nYhotspot As Long, ByVal nWidth As Long, ByVal nHeight As Long, lpANDbitPlane As Any, lpXORbitPlane As Any) As Long
说明
创建一个鼠标指针
返回值
Long，执行成功返回指针的句柄，零表示失败。会设置GetLastError
参数表
参数 | 类型及说明
hInstance | Long，准备拥有指针的应用程序的实例的句柄。可用GetWindowWord函数获得拥有一个窗体或控件的一个实例的句柄
nXhotspot,nYhotspot | Long，鼠标指针图象中代表准确指针位置的X，Y坐标
nWidth | Long，指针图象的宽度。可用GetSystemMetrics函数判断一个特定设备的正确编号。VGA的编号是32
nHeight | Long，指针图象的高度。可用GetSystemMetrics函数判断一个特定设备的正确编号。VGA的编号是32
lpANDbitPlane | Any，指向AND位图数据的指针
lpXORbitPlane | Any，指向XOR位图数据的指针
注解
一旦不再需要，注意用DestroyCursor函数释放鼠标指针占用的内存及资源


CreateDIBitmap
VB声明
Declare Function CreateDIBitmap Lib "gdi32" Alias "CreateDIBitmap" (ByVal hdc As Long, lpInfoHeader As BITMAPINFOHEADER, ByVal dwUsage As Long, lpInitBits As Any, lpInitInfo As BITMAPINFO, ByVal wUsage As Long) As Long
说明
根据一幅与设备无关的位图创建一幅与设备有关的位图
返回值
Long，执行成功返回位图句柄，零表示失败
参数表
参数 | 类型及说明
hdc | Long，一个设备场景的句柄，该设备场景定义了要创建的与设备有关位图的配置信息
lpInfoHeader | BITMAPINFOHEADER，对DIB（与设备无关位图）的格式进行描述的一个结构
dwUsage | Long，如不应对位图数据进行初始化，那么设为零。如设为CBM_INIT，表示根据lpInitBits 和 lpInitInfo参数对位图进行初始化
lpInitBits | Any，指向DIB格式中的位图数据的一个指针，格式是由lpInitInfo指定的
lpInitInfo | BITMAPINFO，这个结构对lpInitBits DIB的格式及颜色进行了说明
wUsage | Long，下述常数之一： DIB_PAL_COLORS——颜色表包含对当前选定的调色板的索引 DIB_RGB_COLORS——颜色表包含了RGB颜色
注解
一旦不再需要，记住用DeleteObject函数释放位图占用的内存及资源


CreateDIBSection
VB声明
Declare Function CreateDIBSection Lib "gdi32" Alias "CreateDIBSection" (ByVal hDC As Long, pBitmapInfo As BITMAPINFO, ByVal un As Long, ByVal lplpVoid As Long, ByVal handle As Long, ByVal dw As Long) As Long
说明
创建一个DIBSection。这是一个GDI对象，可象一幅与设备有关位图那样使用。但是，它在内部作为一幅与设备无关位图保存
返回值
Long，执行成功返回DIBSection位图的句柄，零表示失败。会设置GetLastError
参数表
参数 | 类型及说明
hDC | Long，一个设备场景的句柄。如dw设为DIB_PAL_COLORS，那么DIB颜色表就会用来自逻辑调色板的颜色进行初始化
pBitmapInfo | BITMAPINFO，这个结构初始化成欲创建的那幅位图的配置数据
un | Long，下述常数之一：
 | DIB_PAL_COLORS | BITMAPINFO包含了一个16位调色板索引的数组
 | DIB_RGB_COLORS | BITMAPINFO包含了一个颜色表，其中保存有32位颜色（RGBQUAD）
lplpVoid | Long，用于载入DIBSection数据区的内存地址
handle | Long，指向一个文件映射对象的可选句柄，位图将在其中创建。如设为零，Windows会自动分配内存
dw | Long，如指定了句柄，就用这个参数指定位图数据在文件映射对象中的偏移量
注解
一旦不再需要，记住用DeleteObject函数删除DIBSection位图 如Windows分配了一个内存缓冲区，那么对象删除以后，缓冲区也会自动删除。如指定了一个文件映射对象，则不会自动将其清除 在直接访问DIB内存之前，首先必须保证Windows已完成了绘图（记住，Windows可能对绘图操作进行了排列处理）。通过调用gdiFlush函数，可确保完成所有未决的绘图操作

Top


CreateIcon
VB声明
Declare Function CreateIcon Lib "user32" Alias "CreateIcon" (ByVal hInstance As Long, ByVal nWidth As Long, ByVal nHeight As Long, ByVal nPlanes As Byte, ByVal nBitsPixel As Byte, lpANDbits As Byte, lpXORbits As Byte) As Long
说明
创建一个图标
返回值
Long，执行成功返回图标的句柄，零表示失败。会设置GetLastError
参数表
参数 | 类型及说明
hInstance | Long，准备拥有图标的应用程序的实例的句柄。可用GetWindowWord函数获得拥有一个窗体或控件的一个实例的句柄
nWidth | Long，图标图象的宽度。可用GetSystemMetrics函数判断一个特定设备的正确编号。VGA的编号是32
nHeight | Long，图标图象的高度。可用GetSystemMetrics函数判断一个特定设备的正确编号。VGA的编号是32
nPlanes | Byte，lpXORbits数据数组中的色层数量
nBitsPixel | Byte，lpXORbits数据数组中每像素的位数
lpANDbits | Byte，指向AND位图数据的指针
lpXORbits | Byte，指向XOR位图数据的指针
注解
一旦不再需要，注意用DestroyIcon函数释放鼠标指针占用的内存及资源


CreateIconIndirect
VB声明
Declare Function CreateIconIndirect Lib "user32" Alias "CreateIconIndirect" (piconinfo As ICONINFO) As Long
说明
创建一个图标
返回值
Long，执行成功返回图标的句柄，零表示失败。会设置GetLastError
参数表
参数 | 类型及说明
piconinfo | ICONINFO，这个结构包含的信息与欲创建的图标有关。图标是随同两幅参考位图创建出来的。这个函数允许我们在给定XOR和AND位图的前提下创建图标，而不是给出实际的掩模数组
注解
一旦不再需要，注意用DestroyIcon函数释放鼠标指针占用的内存及资源


DestroyCursor
VB声明
Declare Function DestroyCursor Lib "user32" Alias "DestroyCursor" (ByVal hCursor As Long) As Long
说明
清除指定的鼠标指针，并释放它占用的所有系统资源。不要用这个函数清除随同LoadCursor函数载入的系统指针资源
返回值
Long，非零表示成功，零表示失败。会设置GetLastError
参数表
参数 | 类型及说明
hCursor | Long，欲清除的指针对象的句柄


DestroyIcon
VB声明
Declare Function DestroyIcon Lib "user32" Alias "DestroyIcon" (ByVal hIcon As Long) As Long
说明
清除图标
返回值
Long，非零表示成功，零表示失败。会设置GetLastError
参数表
参数 | 类型及说明
hIcon | Long，图标句柄
注解
不要用这个函数清除随同LoadIcon函数载入的系统固有图标


DrawIcon
VB声明
Declare Function DrawIcon Lib "user32" Alias "DrawIcon" (ByVal hdc As Long, ByVal x As Long, ByVal y As Long, ByVal hIcon As Long) As Long
说明
在指定的位置画一个图标
返回值
Long，非零表示成功，零表示失败。会设置GetLastError
参数表
参数 | 类型及说明
hdc | Long，设备场景
x,y | Long，想描绘图标的位置（逻辑坐标）
hIcon | Long，欲描绘图标的句柄


DrawIconEx
VB声明
Declare Function DrawIconEx Lib "user32" Alias "DrawIconEx" (ByVal hdc As Long, ByVal xLeft As Long, ByVal yTop As Long, ByVal hIcon As Long, ByVal cxWidth As Long, ByVal cyWidth As Long, ByVal istepIfAniCur As Long, ByVal hbrFlickerFreeDraw As Long, ByVal diFlags As Long) As Long
说明
描绘一个图标或鼠标指针。与DrawIcon相比，这个函数提供了更多的功能
返回值
Long，非零表示成功，零表示失败。会设置GetLastError
参数表
参数 | 类型及说明
hdc | Long，要在其中画图的一个设备场景的句柄
xLeft,yTop | Long，图标左上角的位置，用逻辑坐标表示
hIcon | Long，要描绘的图标的句柄
cxWidth,cyWidth | Long，希望的图标宽度和高度。图标会自动缩放，与指定的值相符
istepIfAniCur | Long，如果hIcon是个动画指针，那么该参数指定描绘动画中的哪幅图象。注意Win32不能区分图标和指针
hbrFlickerFreeDraw | Long，如设为一个刷子句柄，那么函数会将图标画入一幅内存位图，并用背景色填充。随后，将图象直接复制到指定的位置。这样做可绘图时减少闪烁（因为画图过程中重现）
diFlags | Long，下述常数之一：
 | DI_COMPAT | 描绘标准的系统指针，而不是指定的图象
 | DI_DEFAULTSIZE | 忽略cxWidth和cyWidth设置，并采用原始的图标大小
 | DI_IMAGE | 绘图时使用图标的XOR部分（即图标没有透明区域）
 | DI_MASK | 绘图时使用图标的MASK部分（如单独使用，可获得图标的掩模）
 | DI_NORMAL | 用常规方式绘图（合并 DI_IMAGE 和 DI_MASK）
注解
应检查Windows95是否与指定的标志及参数兼容。Win32用户手册宣称函数与Windows 95是兼容的，但在实际运用中发现它有一定的限制

Top


ExtractAssociatedIcon
VB声明
Declare Function ExtractAssociatedIcon Lib "shell32.dll" Alias "ExtractAssociateIconA" (ByVal hInst As Long, ByVal lpIconPath As String, lpiIcon As Long) As Long
说明
这个函数可判断一个可执行程序或DLL中是否存在图标，或是否有图标与系统注册表中指定的文件存在关联。随后，它允许我们提取出那些图标
返回值
Long，如果找到任何图标，就返回图标的句柄；否则返回零
参数表
参数 | 类型及说明
hInst | Long，当前应用程序的实例句柄。也可用GetWindowWord函数取得拥有一个窗体或控件的示例的句柄
lpIconPath | String，指定一个文件名，准备从该文件中提取图标。如果文件并非执行程序或DLL本身，但通过系统注册表与一个可执行文件关联，就用这个字串装载可执行程序的名字
lpiIcon | Long，在其中装载图标在可执行文件中的资源标识符
注解
注意至少要把lpIconPath字串定义成MAX_PATH个字符的长度


ExtractIcon
VB声明
Declare Function ExtractIcon Lib "shell32.dll" Alias "ExtractIconA" (ByVal hInst As Long, ByVal lpszExeFileName As String, ByVal nIconIndex As Long) As Long
说明
判断一个可执行文件或DLL中是否有图标存在，并将其提取出来
返回值
Long，如成功，返回指向图标的句柄；如文件中不存在图标，则返回零。如果nIconIndex设为-1，就返回文件中的图标总数
参数表
参数 | 类型及说明
hInst | Long，当前应用程序的实例句柄。也可用GetWindowWord函数取得拥有一个窗体或控件的实例的句柄
lpszExeFileName | String，在其中提取图标的那个程序的全名
nIconIndex | Long，欲获取的图标的索引。如果为-1，表示取得文件中的图标总数


GetBitmapBits
VB声明
Declare Function GetBitmapBits Lib "gdi32" Alias "GetBitmapBits" (ByVal hBitmap As Long, ByVal dwCount As Long, lpBits As Any) As Long
说明
将来自位图的二进制位复制到一个缓冲区
返回值
Long，如执行成功，返回位图中的字节数量；零表示失败。会设置GetLastError
参数表
参数 | 类型及说明
hBitmap | Long，位图的句柄
dwCount | Long，欲复制的字节数。如设为零，表示取得位图中的字节数
lpBits | Any，指向容纳位图位的一个缓冲区的指针。注意事先将缓冲区至少初始化成dwCount个字节
注解
虽然这个函数能正常工作，但强烈建议使用与设备无关的位图（GetDIBits）


GetBitmapDimensionEx
VB声明
Declare Function GetBitmapDimensionEx Lib "gdi32" Alias "GetBitmapDimensionEx" (ByVal hBitmap As Long, lpDimension As SIZE) As Long
说明
取得一幅位图的宽度和高度。它们是由SetBitmapDimensionEx函数设置的。Windows不会使用位图的大小
返回值
Long，非零表示成功，零表示失败。会设置GetLastError
参数表
参数 | 类型及说明
hBitmap | Long，位图句柄
lpDimension | SIZE，这个结构用于容纳由SetBitmapDimensionEx函数设置的位图的大小。这个大小以1mm的十分之一为单位
注解
参考SetBitmapDimensionEx函数


GetDIBColorTable
VB声明
Declare Function GetDIBColorTable Lib "gdi32" Alias "GetDIBColorTable" (ByVal hDC As Long, ByVal un1 As Long, ByVal un2 As Long, pRGBQuad As RGBQUAD) As Long
说明
从选入设备场景的DIBSection中取得颜色表信息
返回值
Long，取回的颜色条目数量，零表示失败。会设置GetLastError
参数表
参数 | 类型及说明
hDC | Long，已选入了一个DIBSection对象的设备场景
un1 | Long，颜色表中欲取回的第一个条目的索引
un2 | Long，欲取回的条目数量
pRGBQuad | RGBQUAD，这个结构数组用于装载颜色表信息的第一个条目
注解
如DIBSection为每个像素使用了8个以上的二进制位，则不会再用颜色表


GetDIBits
VB声明
Declare Function GetDIBits Lib "gdi32" Alias "GetDIBits" (ByVal aHDC As Long, ByVal hBitmap As Long, ByVal nStartScan As Long, ByVal nNumScans As Long, lpBits As Any, lpBI As BITMAPINFO, ByVal wUsage As Long) As Long
说明
将来自一幅位图的二进制位复制到一幅与设备无关的位图里
返回值
Long，非零表示成功，零表示失败。在Windows 95中，返回值是返回的扫描线数量
参数表
参数 | 类型及说明
aHDC | Long，定义了与设备有关位图hBitmap的配置信息的一个设备场景的句柄
hBitmap | Long，源位图的句柄。绝对不能将这幅位图选入设备场景
nStartScan | Long，欲复制到DIB中的第一条扫描线的编号
nNumScans | Long，欲复制的扫描线数量
lpBits | Any，指向一个缓冲区的指针。这个缓冲区将用于装载采用DIB格式的信息，但不取回数据（用ByVal传递零值）
lpBI | BITMAPINFO，对lpBits DIB的格式及颜色进行说明的一个结构。在BITMAPINFOHEADER结构中，从biSize到biCompression之间的所有字段都必须初始化
wUsage | Long，下述常数之一：
 | DIB_PAL_COLORS | 在颜色表中装载一个16位所以数组，它们与当前选定的调色板有关
 | DIB_RGB_COLORS | 在颜色表中装载RGB颜色
注解
起始扫描线与起点有关。除非将BITMAPINFOHEADER结构的biHeight字段设为负值，否则起点就位于左下角

Top


GetIconInfo
VB声明
Declare Function GetIconInfo Lib "user32" Alias "GetIconInfo" (ByVal hIcon As Long, piconinfo As ICONINFO) As Long
说明
取得与图标有关的信息
返回值
Long，非零表示成功，零表示失败。会设置GetLastError
参数表
参数 | 类型及说明
hIcon | Long，图标句柄
piconinfo | ICONINFO，这个结构装载的信息与包含了XOR及AND位图的图标有关
注解
函数返回时，由ICONINFO结构载入的位图必须由应用程序删去


GetStretchBltMode
VB声明
Declare Function GetStretchBltMode Lib "gdi32" Alias "GetStretchBltMode" (ByVal hdc As Long) As Long
说明
判断StretchBlt 和 StretchDIBits函数采用的伸缩模式。伸缩模式决定了Windows如何控制在伸缩过程中剔除的扫描线
返回值
Long，取得当前的伸缩模式。零表示出错
参数表
参数 | 类型及说明
hdc | Long，设备场景的句柄
注解
参考SetStretchBltMode函数


LoadBitmap

LoadBitmap, LoadBitmapBynum
VB声明
Declare Function LoadBitmap& Lib "user32" Alias "LoadBitmapA" (ByVal hInstance As Long, ByVal lpBitmapName As String) Declare Function LoadBitmapBynum& Lib "user32" Alias "LoadBitmapA" (ByVal hInstance As Long, ByVal lpBitmapName As Long)
说明
从指定的模块或应用程序实例中载入一幅位图。LoadBitmapBynum是LoadBitmap函数的类型安全声明
返回值
Long，已载入的位图的句柄，零表示失败。会设置GetLastError
参数表
参数 | 类型及说明
hInstance | Long，一个DLL的模块句柄；或者一个实例句柄，它指定了包含位图的可执行文件
lpBitmapName | String，作为一个字串，指定欲载入的位图资源。作为一个长整数，指定欲载入的资源ID。或者一个常数，代表某幅固有系统位图。如装载一幅固有系统位图，hInstance参数应设为0。常数在api32.txt文件中用前缀 OBM_ 标志。OBM_REDUCE 引用的是标题栏右侧显示的下箭头位图，用于最小化一个窗口。参考api32.txt，其中有系统固有位图的完整列表
注解
一旦系统位图不再需要，必须用DeleteObject函数删除由这个函数取得的位图


LoadCursor

LoadCursor, LoadCursorBynum
VB声明
Declare Function LoadCursor& Lib "user32" Alias "LoadCursorA" (ByVal hInstance As Long, ByVal lpCursorName As String) Declare Function LoadCursorBynum& Lib "user32" Alias "LoadCursorA" (ByVal hInstance As Long, ByVal lpCursorName As Long)
说明
从指定的模块或应用程序实例中载入一个鼠标指针。LoadCursorBynum是LoadCursor函数的类型安全声明
返回值
Long，执行成功则返回已载入的指针的句柄；零表示失败。在Windows 95 和Win16环境中，这个函数只能载入标准尺寸的图标
参数表
参数 | 类型及说明
hInstance | Long，一个DLL的模块句柄；或者一个实例句柄，指定包含了鼠标指针的可执行程序
lpCursorName | String，作为一个字串，指定欲载入的指针资源。作为一个长整数值，指定欲载入的资源ID；或者设置一个常数，代表某幅固有系统指针。如装载的是一个固有系统指针，注意hInstance参数应设为零。在api32.txt文件中以前缀IDC_ 作为标志
注解
不要清除固有系统指针或从属于其他应用程序的指针。注意lpCursorName引用的是一个指针资源。因为假如名字引用的是一个有效的资源。即使它并非指针资源，该函数也会返回一个非零的句柄


LoadCursorFromFile
VB声明
Declare Function LoadCursorFromFile Lib "user32" Alias "LoadCursorFromFileA" (ByVal lpFileName As String) As Long
说明
在一个指针文件或一个动画指针文件（扩展名分别是.cur和.ani）的基础上创建一个指针
返回值
Long，执行成功则返回指向指针的一个句柄，零表示失败。如果失败，会将GetLastError设置为常数ERROR_FILE_NOT_FOUND
参数表
参数 | 类型及说明
lpFileName | String，包含指针的那个文件的名字
注解
如果将lpFileName定义成Long型数值（ByVal As Long），就可以（理论上）传递带OCR_ 前缀的常数，以便获取一个固有系统指针。这一做法在Windows NT 3.5下不适用


LoadIcon

LoadIcon, LoadIconBynum
VB声明
Declare Function LoadIcon& Lib "user32" Alias "LoadIconA" (ByVal hInstance As Long, ByVal lpIconName As String) Declare Function LoadIconBynum& Lib "user32" Alias "LoadIconA" (ByVal hInstance As Long, ByVal lpIconName As Long)
说明
从指定的模块或应用程序实例中载入一个图标。其中，LoadIconBynum是LoadIcon函数的类型安全声明
返回值
Long，执行成功则返回已载入的图标的句柄；零表示失败。会设置GetLastError
参数表
参数 | 类型及说明
hInstance | Long，一个DLL的模块句柄；或者一个实例句柄，指定包含了图标的可执行程序
lpIconName | String，作为一个字串，指定欲载入的图标资源。作为一个长整数值，指定欲载入的资源ID；或者设置一个常数，代表某幅固有系统图标。如装载的是一个固有系统图标，注意hInstance参数应设为零。在api32.txt文件中以前缀IDI_ 作为标志
注解
在Windows 95和Win16环境中，这个函数只能载入标准尺寸的图标。用GetSystemMetrics可以获得SM_CXICON 和 SM_CYICON标准图标设置。用LoadImage则可载入非标准尺寸的图标 文件中可能包含了同一个图标资源的多种版本。这个函数会自动挑选与当前显示模式最相配的一种


LoadImage

LoadImage, LoadImageBynum
VB声明
Declare Function LoadImage& Lib "user32" Alias "LoadImageA" (ByVal hInst As Long, ByVal lpsz As String, ByVal un1 As Long, ByVal n1 As Long, ByVal n2 As Long, ByVal un2 As Long) Declare Function LoadImageBynum& Lib "user32" Alias "LoadImageA" (ByVal hInst As Long, ByVal lpsz As Long, ByVal un1 As Long, ByVal n1 As Long, ByVal n2 As Long, ByVal un2 As Long)
说明
载入一个位图、图标或指针
返回值
Long，执行成功则返回对象的一个句柄；零表示失败
参数表
参数 | 类型及说明
hInst | Long，要从其中载入图象的DLL或应用程序模块或实例句柄。零表示装载一幅固有图象
lpsz | String，欲载入图象的名字。如指定了hInst，就用这个参数指定资源或资源的标志符（标志符是一个长整数）。如hInst为空，而且已指定了LR_LOADFROMFILE，那么这个参数代表文件名（位图、图标或指针文件）。如果是个Long型值，这个参数就代表固有位图、图标或指针的编号
un1 | Long，下述常数之一，指定了欲载入的图象类型：IMAGE_BITMAP， IMAGE_CURSOR， IMAGE_ICON
n1,n2 | Long，要求的图象宽度和高度。图象会根据情况自动伸缩。如设为零，表示用图象的默认大小
un2 | Long，下述常数的任意组合，它们都在api32.txt文件中得到了定义：
 | LR_DEFAULTCOLOR | 以常规方式载入图象
 | LR_LOADREALSIZE | 不对图象进行缩放处理。忽略n1和n2的设置
 | LR_CREATEDIBSECTION | 如果指定了IMAGE_BITMAP，就返回DIBSection的句柄，而不是位图的句柄
 | LR_DEFAULTSIZE | 如果n1和n2为零，就使用由系统定义的图象默认大小，而不是图象本身定义的大小
 | LR_LOADFROMFILE | 如hInst为零，lpsz就代表要载入适当类型的一个文件的名字，仅适用于Win95
 | LR_LOADMAP3DCOLORS | 将图象中的深灰、灰、以及浅灰像素都替换成COLOR_3DSHADOW，COLOR_3DFACE以及COLOR_3DLIGHT的当前设置
 | LR_LOADTRANSPARENT | 与图象中第一个像素相符的所有像素都由系统替换
 | LR_MONOCHROME | 将图象转换成单色
 | LR_SHARED | 将图象作为一个共享资源载入。在NT 4.0中装载固有资源时要用到这个设置

Top


MaskBlt
VB声明
Declare Function MaskBlt Lib "gdi32" Alias "MaskBlt" (ByVal hdcDest As Long, ByVal nXDest As Long, ByVal nYDest As Long, ByVal nWidth As Long, ByVal nHeight As Long, ByVal hdcSrc As Long, ByVal nXSrc As Long, ByVal nYSrc As Long, ByVal hbmMask As Long, ByVal xMask As Long, ByVal yMask As Long, ByVal dwRop As Long) As Long
说明
执行复杂的图象传输，同时进行掩模（MASK）处理
返回值
Long，非零表示成功，零表示失败。会设置GetLastError
参数表
参数 | 类型及说明
hdcDest | Long，目标设备场景
nXDest,nYDest | Long，目标图象左上角的x,y坐标
nWidth,nHeight | Long，图象在目标设备场景中的宽度和高度
hdcSrc | Long，源设备场景
nXSrc,nYSrc | Long，源图象的左上角x,y坐标
hbmMask | Long，作为掩模使用的一幅单色位图的句柄。如果dwRop代码包括一个源，那么这幅位图必须与源尺寸相同，否则必须与目标尺寸相符
xMask,yMask | Long，单色掩模位图的x,y偏移。这样便允许我们创建一幅使用了多个掩模的大型位图
dwRop | Long，一种特殊的光栅运算，在传输过程中使用
适用平台
Windows NT
注解
dwRop代码是一种非标准的光栅运算代码，由两个普通的光栅运算代码组成：一个前景代码以及一个背景代码 在掩模位图设为1的每个像素处，都在传输过程中应用前景转换处理。如对应的掩蔽位图像素为零，则应用背景转换。如果未指定掩模位图，那么这个函数就执行与BitBlt相同的操作 如果对源应用了旋转或剪切处理，则函数调用会失败 注意可用GetDeviceCaps判断这个函数是否得到了一个特定设备场景的支持

Top


PatBlt
VB声明
Declare Function PatBlt Lib "gdi32" Alias "PatBlt" (ByVal hdc As Long, ByVal x As Long, ByVal y As Long, ByVal nWidth As Long, ByVal nHeight As Long, ByVal dwRop As Long) As Long
说明
在当前选定的刷子的基础上，用一个图案填充指定的设备场景
返回值
Long，非零表示成功，零表示失败。会设置GetLastError
参数表
参数 | 类型及说明
hdc | Long，欲描绘的一个设备场景的句柄
x,y | Long，对目标DC中目标矩形左上角位置进行定义的一个点，用逻辑坐标表示
nWidth,nHeight | Long，目标矩形的宽度和高度，用逻辑坐标表示
dwRop | Long，传输过程中欲进行的光栅运算。对一个源进行引用的光栅运算也许不能在这个函数中使用
注解
可用GetDeviceCaps判断这个函数是否得到了一个特定设备场景的支持


PlgBlt
VB声明
Declare Function PlgBlt Lib "gdi32" Alias "PlgBlt" (ByVal hdcDest As Long, lpPoint As POINTAPI, ByVal hdcSrc As Long, ByVal nXSrc As Long, ByVal nYSrc As Long, ByVal nWidth As Long, ByVal nHeight As Long, ByVal hbmMask As Long, ByVal xMask As Long, ByVal yMask As Long) As Long
说明
复制一幅位图，同时将其转换成一个平行四边形。利用它可对位图进行旋转处理
返回值
Long，非零表示成功，零表示失败。会设置GetLastError
参数表
参数 | 类型及说明
hdcDest | Long，图象使用的目标设备场景
lpPoint | POINTAPI，POINTAPI结构数组中使用的第一个条目。第一个点对应于一个平行四边形左上角位置；第二个点代表右下角位置；第三个点代表左下角位置；第四个点是在前三个点的基础上导出的
hdcSrc | Long，图象的源设备场景
nXSrc,nYSrc | Long，源图象左上角的x,y坐标，采用逻辑坐标系统表示
nWidth,nHeight | Long，源图象大小，用逻辑坐标表示
hbmMask | Long，一个可选的句柄，指向一个单色掩模。如设定了这个参数，那么只有与掩模值1对应的二进制位才会传输到目的地
xMask,yMask | Long，掩模位图欲使用区域左上角的x,y坐标
适用平台
Windows NT
注解
如果对源图象应用了旋转或剪切处理，这个函数的执行就会失败。可用GetDeviceCaps判断这个函数是否得到了一个特定设备场景的支持

Top


SetBitmapBits
VB声明
Declare Function SetBitmapBits Lib "gdi32" Alias "SetBitmapBits" (ByVal hBitmap As Long, ByVal dwCount As Long, lpBits As Any) As Long
说明
将来自缓冲区的二进制位复制到一幅位图
返回值
Long，执行成功则返回字节数量，零表示失败
参数表
参数 | 类型及说明
hBitmap | Long，位图的句柄
dwCount | Long，欲复制的字节数量
lpBits | Any，指向一个缓冲区的指针。这个缓冲区包含了为位图正确格式化的位图位
注解
在Win32中，应使用与设备无关位图


SetBitmapDimensionEx
VB声明
Declare Function SetBitmapDimensionEx Lib "gdi32" Alias "SetBitmapDimensionEx" (ByVal hbm As Long, ByVal nX As Long, ByVal nY As Long, lpSize As SIZE) As Long
说明
设置一幅位图的宽度。以一毫米的十分之一为单位。Windows不使用这种信息，但也许能通过GetBitmapDimensionEx函数获取
返回值
Long，非零表示成功，零表示失败。会设置GetLastError
参数表
参数 | 类型及说明
hbm | Long，一幅位图的句柄
nX,nY | Long，位图的建议大小，以0.1mm为单位
lpSize | SIZE，用于载入前一个位图大小的结构


SetDIBits
VB声明
Declare Function SetDIBits Lib "gdi32" Alias "SetDIBits" (ByVal hdc As Long, ByVal hBitmap As Long, ByVal nStartScan As Long, ByVal nNumScans As Long, lpBits As Any, lpBI As BITMAPINFO, ByVal wUsage As Long) As Long
说明
将来自与设备无关位图的二进制位复制到一幅与设备有关的位图里
返回值
Long，执行成功则返回扫描线的数量，零表示失败。会设置GetLastError
参数表
参数 | 类型及说明
hdc | Long，指向一个设备场景的句柄，那个设备场景定义了与设备有关位图（hBitmap）的配置
hBitmap | Long，目标位图的一个句柄。这幅位图绝对不能选入一个设备场景
nStartScan | Long，lpBits数组中第一条扫描线的编号。如lpBI之BITMAPINFOHEADER部分的biHeight字段是正数，那么这条扫描线就会从位图的底部开始计算；如果是负数，就从顶部开始计算
nNumScans | Long，欲复制的扫描线数量
 | Any，指向一个缓冲区的指针。这个缓冲区包含了以DIB格式描述的位图数据；这种格式是由lpBI指定的
lpBI | BITMAPINFO，对lpBits DIB的格式和颜色进行描述的一个结构
wUsage | Long，下述常数之一
 | DIB_PAL_COLORS | 颜色表是一个整数数组，其中包含了与目前选入hdc设备场景的调色板相关的索引
 | DIB_RGB_COLORS | 颜色表包含了RG颜色
注解
用GetDeviceCaps判断设备是否支持这个函数

Top


SetDIBitsToDevice
VB声明
Declare Function SetDIBitsToDevice Lib "gdi32" Alias "SetDIBitsToDevice" (ByVal hdc As Long, ByVal x As Long, ByVal y As Long, ByVal dx As Long, ByVal dy As Long, ByVal SrcX As Long, ByVal SrcY As Long, ByVal Scan As Long, ByVal NumScans As Long, Bits As Any, BitsInfo As BITMAPINFO, ByVal wUsage As Long) As Long
说明
将一幅与设备无关位图的全部或部分数据直接复制到一个设备。这个函数在设备中定义了一个目标矩形，以便接收位图数据。它也在DIB中定义了一个源矩形，以便从中提取数据
返回值
Long，执行成功则返回扫描线的数量，零表示失败。会设置GetLastError
参数表
参数 | 类型及说明
hdc | Long，一个设备场景的句柄。该场景用于接收位图数据
x,y | Long，用逻辑坐标表示的目标矩形的起点
dx,dy | Long，用目标矩形的设备单位表示的宽度及高度
SrcX,SrcY | Long，用设备坐标表示的源矩形在DIB中的起点
Scan | Long，Bits数组中第一条扫描线的编号。如BitsInfo之BITMAPINFOHEADER部分的biHeight字段是正数，那么这条扫描线就会从位图的底部开始计算；如果是负数，就从顶部开始计算
NumScans | Long，欲复制的扫描线数量
Bits | Any，指向一个缓冲区的指针。这个缓冲区包含了以DIB格式描述的位图数据；这种格式是由BitsInfo指定的
BitsInfo | BITMAPINFO，对Bits DIB的格式和颜色进行描述的一个结构
wUsage | Long，下述常数之一
 | DIB_PAL_COLORS | 颜色表是一个整数数组，其中包含了与目前选入hdc设备场景的调色板相关的索引
 | DIB_RGB_COLORS | 颜色表包含了RG颜色
注解
用GetDeviceCaps判断设备是否支持这个函数

Top


SetStretchBltMode
VB声明
Declare Function SetStretchBltMode Lib "gdi32" Alias "SetStretchBltMode" (ByVal hdc As Long, ByVal nStretchMode As Long) As Long
说明
指定StretchBlt 和 StretchDIBits函数的伸缩模式。这种伸缩模式定义了Windows如何对伸缩过程中剔除的扫描线进行控制。对于VB窗体和控件，倘若在API绘图过程中使用这个函数，建议恢复原来的StretchBlt模式
返回值
Long，上一次伸缩模式的值，零表示失败
参数表
参数 | 类型及说明
hdc | Long，设备场景的句柄
nStretchMode | Long，新伸缩模式建立在下述任何一个常数的基础上，它们均在API32.TXT文件中得到了定义：
 | STRETCH_ANDSCANS | 默认设置。剔除的线段与剩下的线段进行AND运算。这个模式通常应用于采用了白色背景的单色位图
 | STRETCH_DELETESCANS | 剔除的线段被简单的清除。这个模式通常用于彩色位图
 | STRETCH_ORSCANS | 剔除的线段与剩下的线段进行OR运算。这个模式通常应用于采用了白色背景的单色位图
 | STRETCH_HALFTONE | 目标位图上的像素块被设为源位图上大致近似的块。这个模式要明显慢于其他模式
注解
如果要对伸缩模式有一个更深刻的印象，可想象一下对白色图象中的一条白色细线进行压缩。压缩过程中，像素会从图象中删去。为避免线段消失，在删除它们之前，有必要先对线段中的像素与邻近像素进行AND运算。为达到这个目的，应考虑选用STRETCH_ANDSCANS伸缩模式

Top


StretchBlt
VB声明
Declare Function StretchBlt Lib "gdi32" Alias "StretchBlt" (ByVal hdc As Long, ByVal x As Long, ByVal y As Long, ByVal nWidth As Long, ByVal nHeight As Long, ByVal hSrcDC As Long, ByVal xSrc As Long, ByVal ySrc As Long, ByVal nSrcWidth As Long, ByVal nSrcHeight As Long, ByVal dwRop As Long) As Long
说明
将一幅位图从一个设备场景复制到另一个。源和目标DC相互间必须兼容。这个函数会在设备场景中定义一个目标矩形，并在位图中定义一个源图象。源矩形会根据需要进行伸缩，以便与目标矩形的大小相符
返回值
Long，非零表示成功，零表示失败。会设置GetLastError
参数表
参数 | 类型及说明
hdc | Long，目标设备场景
x,y | Long，目标矩形左上角的x,y坐标，以逻辑坐标表示
nWidth,nHeight | Long，目标矩形的宽度和高度，以逻辑坐标表示
hSrcDC | Long，源设备场景。如光栅运算未指定一个源，则这个参数应为零
xSrc,ySrc | Long，用源DC的逻辑坐标表示的源矩形左上角位置
nSrcWidth,nSrcHeight | Long，分别指定用逻辑单位（以源DC为基础）传输的一幅图象的宽度和高度。如其中有一个参数的符号（指正负号）与对应的目标参数不符，位图就会在对应的轴上作镜像转换处理
dwRop | Long，传输过程中进行的光栅运算。如刷子属于光栅运算的一部分，就使用选入目标DC的刷子
注解
可用GetDeviceCaps函数判断特定的设备场景是否支持此函数 不可选择对源位图进行剪切或旋转处理，源位图也不能是一个图元文件设备场景

Top


StretchDIBits
VB声明
Declare Function StretchDIBits Lib "gdi32" Alias "StretchDIBits" (ByVal hdc As Long, ByVal x As Long, ByVal y As Long, ByVal dx As Long, ByVal dy As Long, ByVal SrcX As Long, ByVal SrcY As Long, ByVal wSrcWidth As Long, ByVal wSrcHeight As Long, lpBits As Any, lpBitsInfo As BITMAPINFO, ByVal wUsage As Long, ByVal dwRop As Long) As Long
说明
将一幅与设备无关位图的全部或部分数据直接复制到指定的设备场景。这个函数在设备场景中定义了一个目标矩形，用于接收位图数据。它也在DIB中定义了一个源矩形，以便从中提取数据。根据设备场景的StretchBlt模式（由SetStretchBltMode函数决定），源矩形会根据需要调整，以便符合目标矩形的要求
返回值
Long，如函数执行成功，返回欲复制的扫描线的数量；如返回常数GDI_ERROR，表示出错
参数表
参数 | 类型及说明
hdc | Long，一个设备场景的句柄。该场景用于接收位图数据
x,y | Long，用逻辑坐标表示的目标矩形的起点
dx,dy | Long，目标矩形的宽度及高度，以逻辑坐标表示
SrcX,SrcY | Long，用设备坐标表示的源矩形在DIB中的起点
wSrcWidth,wSrcHeight | Long，源矩形的宽度与高度，用设备坐标表示。如其中有一个参数的符号（指正负号）与对应的目标参数不符，位图就会在对应的轴上作镜像转换
lpBits | Any，指向一个缓冲区的指针。这个缓冲区包含了以DIB格式描述的位图数据；这种格式是由lpBitsInfo指定的
lpBitsInfo | BITMAPINFO，对lpBits DIB的格式和颜色进行描述的一个结构
wUsage | Long，下述常数之一
 | DIB_PAL_COLORS | 颜色表是一个整数数组，其中包含了与目前选入hdc设备场景的调色板相关的索引
 | DIB_RGB_COLORS | 颜色表包含了RG颜色
dwRop | Long，欲进行的光栅运算

Top


AbortPath
VB声明
Declare Function AbortPath Lib "gdi32" Alias "AbortPath" (ByVal hdc As Long) As Long
说明
抛弃选入指定设备场景中的所有路径。也取消目前正在进行的任何路径的创建工作
返回值
Long，非零表示成功，零表示失败。会设置GetLastError
参数表
参数 | 类型及说明
hdc | Long，设备场景


AngleArc
VB声明
Declare Function AngleArc Lib "gdi32" Alias "AngleArc" (ByVal hdc As Long, ByVal x As Long, ByVal y As Long, ByVal dwRadius As Long, ByVal eStartAngle As Double, ByVal eSweepAngle As Double) As Long
说明
用一个连接弧画一条线，参考注解
返回值
Long，非零表示成功，零表示失败
参数表
参数 | 类型及说明
hdc | Long，要在其中作图的设备场景
x,y | Long，对弧进行描述的一个圆的中心点坐标
dwRadius | Long，圆的半径
eStartAngle | Double，线同圆连接时的角度（以度数为单位）
eSweepAngle | Double，弧在圆上占据的范围（以度数为单位）
注解
AngleArc.gif (1417 字节) | 注意eStartAngle和eSweepAngle参数是以度数为单位指定的，而且应该是单精度数（Single）而不是双精度。相应的函数声明为：Declare Function AngleArc& Lib "gdi32" (ByVal hdc As Long, ByVal x As Long, ByVal y As Long, ByVal dwRadius As Long, ByVal eStartAngle As Single, ByVal eSweepAngle As Single)。 我的理解：本文开头的函数声明复制于vb的api文本查看器，此处的声明来自于我的参考资料，也不知谁对谁错。参数表的说明，按vb的api文本查看器中复制来的声明中的数据类型。请使用者注意

Top


Arc

Arc,ArcTo
VB声明
Declare Function Arc& Lib "gdi32" (ByVal hdc As Long, ByVal X1 As Long, ByVal Y1 As Long, ByVal X2 As Long, ByVal Y2 As Long, ByVal X3 As Long, ByVal Y3 As Long, ByVal X4 As Long, ByVal Y4 As Long) Declare Function ArcTo& Lib "gdi32" (ByVal hdc As Long, ByVal X1 As Long, ByVal Y1 As Long, ByVal X2 As Long, ByVal Y2 As Long, ByVal X3 As Long, ByVal Y3 As Long, ByVal X4 As Long, ByVal Y4 As Long)
说明
象注解中那样画一个圆弧。（X1,Y1）和（X2,Y2）定义了椭圆的一个范围（约束）矩形。从矩形中心点到点（X3,Y3）的一条线段与椭圆的交点标志着圆弧的起点。而到（X4,Y4）的一条线与椭圆的交点则标志着圆弧的终点。ArcTo函数会将当前画笔位置设为弧的终点，而Arc函数则不会对当前的画笔位置造成影响
返回值
Long，非零表示成功，零表示失败
参数表
参数 | 类型及说明
hdc | Long，一个显示场景的句柄
X1,Y1 | Long，指定围绕椭圆的一个矩形的左上角位置
X2,Y2 | Long，指定围绕椭圆的一个矩形的右下角位置
X3,Y3 | Long，指定圆弧起点
X4,Y4 | Long，指定圆弧终点
注解
Arc.gif (3069 字节) | 在win16和win95中，约束矩形的宽度和高度必须在3——32766间。绘图方向肯定是逆时针方向。 在win nt中：绘图方向由SetArcDirection函数决定。默认为逆时针方向
 | arc1.gif (674 字节)

Top


BeginPath
VB声明
Declare Function BeginPath Lib "gdi32" Alias "BeginPath" (ByVal hdc As Long) As Long
说明
启动一个路径分支。在这个命令后执行的GDI绘图命令会自动成为路径的一部分。对线段的连接会结合到一起。设备场景中任何现成的路径都会被清除。参考下表，其中列出的函数都可记录到路径中
返回值
Long，非零表示成功，零表示失败。会设置GetLastError
参数表
参数 | 类型及说明
hdc | Long，欲在其中记录的设备场景
合法的路径函数
函数 | Windows NT | Windows 95 | 函数 | Windows NT | Windows 95
AngleArc | Yes | No | Arc | Yes | No
ArcTo | Yes | No | Chord | Yes | No
Ellipse | Yes | No | ExtTextOut | Yes | Yes
LineTo | Yes | Yes | MoveToEx | Yes | Yes
Pie | Yes | No | PolyBezier | Yes | Yes
PolyBezierTo | Yes | Yes | PolyDraw | Yes | No
Polygon | Yes | Yes | Polyline | Yes | Yes
PolylineTo | Yes | Yes | PolyPolygon | Yes | Yes
PolyPolyline | Yes | Yes | Rectangle | Yes | No
RoundRect | Yes | No | TextOut | Yes | Yes

Top


CancelDC
VB声明
Declare Function CancelDC Lib "gdi32" Alias "CancelDC" (ByVal hdc As Long) As Long
说明
取消另一个线程里的长时间绘图操作
返回值
Long，非零表示成功，零表示失败
参数表
参数 | 类型及说明
hdc | Long，要在其中取消绘图操作的设备场景
注解
绘图操作有时可能会相当花时间。在多线程应用程序中，这个命令允许一个线程终止另一个在线程里的绘图操作


Chord
VB声明
Declare Function Chord Lib "gdi32" Alias "Chord" (ByVal As Long, ByVal X1 As Long, ByVal Y1 As Long, ByVal X2 As Long, ByVal Y2 As Long, ByVal X3 As Long, ByVal Y3 As Long, ByVal X4 As Long, ByVal Y4 As Long) As Long
说明
象注解中那样画一个弦。（X1,Y1）和（X2,Y2）定义了椭圆的一个范围（约束）矩形。点（X3,Y3）和点（X4,Y4）定义了一条线段。该线段与椭圆之间的区域就是“弦”
返回值
Long，非零表示成功，零表示失败。会设置GetLastError
参数表
参数 | 类型及说明
hdc | Long，一个显示场景的句柄
X1,Y1 | Long，指定围绕椭圆的一个矩形的左上角位置
X2,Y2 | Long，指定围绕椭圆的一个矩形的右下角位置
X3,Y3 | Long，指定与椭圆相交的一条线的一个点
X4,Y4 | Long，指定与椭圆相交的一条线的另一个点
注解
Chord.gif (1010 字节) | 在win16和win95中，约束矩形的宽度和高度必须在3——32766个单位之间。请参考Arc获得更详细的图例

Top


CloseEnhMetaFile
VB声明
Declare Function CloseEnhMetaFile Lib "gdi32" Alias "CloseEnhMetaFile" (ByVal hdc As ) As Long
说明
关闭指定的增强型图元文件设备场景，并将新建的图元文件返回一个句柄
返回值
Long，指向增强型图元文件的一个句柄。也许能用PlayEnhMetaFile函数回放图元文件。零表示出错（原文：A handle to the enhanced metafile. The PlayEnhMetaFile function may be used to play the metafile. Zero on error.）
参数表
参数 | 类型及说明
hdc | Long，由CreateEnhMetaFile函数返回的一个图元文件设备场景


CloseFigure
VB声明
Declare Function CloseFigure Lib "gdi32" Alias "CloseFigure" (ByVal hdc As Long) As Long
说明
描绘到一个路径时，关闭当前打开的图形
返回值
Long，非零表示成功，零表示失败。会设置GetLastError
参数表
参数 | 类型及说明
hdc | Long，包含了一个打开的Path分支的设备场景
注解
如准备在一个路径里描绘一系列线段，就会有一个打开的图形。调用这个函数的时候，windows会在当前位置和图形的起始处（通常是最后一个MoveToEx操作设置画笔位置的地方）画一条线。图中的这条线和第一条线会连接到一起。注意倘若自己描绘这条线，图形仍会处于打开状态——即使起点与终点相同。这样便造成了与几何画笔的差异。利用CloseFigure，线段会连接到一起——否则它们会用笔尖显示出来。一旦关闭了图形，在路径中画的下一条线就会从一幅新图形开始。打开的图形会被那些用于填充路径的函数自动关闭


CloseMetaFile
VB声明
Declare Function CloseMetaFile Lib "gdi32" Alias "CloseMetaFile" (ByVal hMF As Long) As Long
说明
关闭指定的图元文件设备场景，并向新建的图元文件返回一个句柄
返回值
Long，指向图元文件的一个句柄。也许能用PlayMetaFile回放图元文件。零表示出错
参数表
参数 | 类型及说明
hMF | Long，由CreateMetaFile函数返回的一个图元文件设备场景
注解
图元文件不再需要后，一定要用DeleteMetaFile函数删除图元文件，并释放它的资源


CopyEnhMetaFile
VB声明
Declare Function CopyEnhMetaFile Lib "gdi32" Alias "CopyEnhMetaFileA" (ByVal hemfSrc As Long, ByVal lpszFile As String) As Long
说明
制作指定增强型图元文件的一个副本（拷贝）
返回值
Long，如执行成功，返回副本的句柄。零表示失败。会设置GetLastError
参数表
参数 | 类型及说明
hemfSrc | Long，欲复制的增强型图元文件的句柄
lpszFile | String，副本的文件名（要在磁盘上创建一个新的图元文件）。可用vbNullString向这个参数传递一个NULL值，以便在内存中创建副本


CopyMetaFile
VB声明
Declare Function CopyMetaFile Lib "gdi32" Alias "CopyMetaFileA" (ByVal hMF As Long, ByVal lpFileName As String) As Long
说明
制作指定（标准）图元文件的一个副本
返回值
Long，如执行成功，则返回副本的句柄。零表示失败。会设置GetLastError
参数表
参数 | 类型及说明
hMF | Long，指向欲复制的图元文件的句柄
lpFileName | String，新图元文件的文件名。可用vbNullString向这个参数传递一个NULL值，以便在内存中创建副本


CreateBrushIndirect
VB声明
Declare Function CreateBrushIndirect Lib "gdi32" Alias "CreateBrushIndirect" (lpLogBrush As LOGBRUSH) As Long
说明
在一个LOGBRUSH数据结构的基础上创建一个刷子
返回值
Long，如执行成功，返回指向新刷子的一个句柄。零表示失败
参数表
参数 | 类型及说明
lpLogBrush | LOGBRUSH
注解
如不再需要，请用DeleteObject函数删除刷子。也请参考CreateBrush函数，它的参数与LOGBRUSH结构的字段是对应的


CreateDIBPatternBrush

CreateDIBPatternBrush,CreateDIBPatternBrushPt
VB声明
Declare Function CreateDIBPatternBrush& Lib "gdi32" (ByVal hPackedDIB As Long, ByVal wUsage As Long) Declare Function CreateDIBPatternBrushPt& Lib "gdi32" (lpPackedDIB As Any, ByVal wUsage As Long)
说明
用一幅与设备无关的位图创建一个刷子，以便指定刷子样式（图案）
返回值
Long，如执行成功，返回指向刷子的一个句柄。零表示失败
参数表
参数 | 类型及说明
hPackedDIB,lpPackedDIB | Long，hPackedDIB是指向一个内存块的全局内存句柄。那个内存块包含了一个BITMAPINFO结构，后面跟随一幅与设备无关的位图。lpPackedDIB是具有相同配置的一个内存块的地址。如指定了单色DIB，DIB颜色就会忽略，而换用文本和背景颜色
wUsage | Long，下述常数之一：
 | DIB_PAL_COLORS | DIB颜色表，包含了当前逻辑调色板的索引
 | DIB_RGB_COLORS | DIB颜色表，包含了32位的RGB色值
注解
编制win32应用程序的时候，最好使用CreateDIBPatternBrushPt


CreateEnhMetaFile
VB声明
Declare Function CreateEnhMetaFile Lib "gdi32" Alias "CreateEnhMetaFileA" (ByVal hdcRef As Long, ByVal lpFileName As String, lpRect As RECT, ByVal lpDescription As String) As Long
说明
创建一个增强型的图元文件设备场景。绘图操作也许在这个设备场景中执行。调用CloseEnhMetaFile函数关闭了这个设备场景后，会创建一个图元文件句柄，在其中包含记录下来的绘图命令序列。随后，可在任何设备场景中回放这些命令
返回值
Long，一个增强型图元文件设备场景。零表示函数执行出错。不要将这个设备场景与图元文件句柄混淆起来。图元文件设备场景用于描绘图元文件——这与GDI绘图函数作为参数使用的其他任何设备场景是一样的。调用CloseEnhMetaFile函数的时候，会获得实际的图元文件句柄
参数表
参数 | 类型及说明
hdcRef | Long，一个参考设备场景。函数会用该设备场景在图元文件中保存与创建图元文件的那个设备的分辨率有关的信息。如设为零，表示将整个显示器（屏幕）作为参考设备使用
lpFileName | String，这个图元文件的磁盘文件名。文件应有一个.EMF扩展名。可用vbNullString传递一个NULL，从而创建内存图元文件
lpRect | RECT，一个约束矩形，用于描述图元文件的大小和位置（以0.01毫米为单位）。可用它精确定义图元文件的物理尺寸
lpDescription | String，对图元文件的一段说明。包括创建应用程序的名字、一个NULL字符、对图元文件的一段说明以及两个NULL字符。如："My app" & chr$(0) & "my metafile" & chr$(0) & chr$(0)。如果不愿意包含一段说明，也可设为vbNullString
注解
与标准图元文件相比，增强型图元文件的一个优点在于它们包括了对图元文件实际大小和位置进行描述的信息，这些信息与它最开始创建时的情况相符。windows和绘图程序可读取这种信息，在任何设备上实际重现图元文件

Top


CreateHatchBrush
VB声明
Declare Function CreateHatchBrush Lib "gdi32" Alias "CreateHatchBrush" (ByVal nIndex As Long, ByVal crColor As Long) As Long
说明
创建带有阴影图案的一个刷子（阴影图案见注解）
返回值
Long，如执行成功，返回指向新刷子的一个句柄。否则返回零。注意在不需要时，用DeleteObject清除刷子
参数表
参数 | 类型及说明
nIndex | Long，象下图那样指定一种阴影类型
crColor | Long，指定刷子的RGB前景色
注解
CreateHatchBrush.gif (3416 字节)

Top


CreateMetaFile
VB声明
Declare Function CreateMetaFile Lib "gdi32" Alias "CreateMetaFileA" (ByVal lpString As String) As Long
说明
创建一个图元文件设备场景。绘图操作也许能在这个设备中执行。调用CloseMetaFile函数关闭了这个设备场景后，会创建一个图元文件句柄，其中包含了记录下来的绘图命令序列。随后，可在任何设备场景中回放这些命令
返回值
Long，指向图元文件设备场景的一个句柄。零表示出错。注意不要把这个设备场景与图元文件句柄混淆起来。图元文件设备场景用于描绘图元文件——它的用法与GDI绘图函数作为参数使用的其他任何设备场景都是一样的。以后调用了CloseMetaFile函数以后，会得到实际的图元文件句柄
参数表
参数 | 类型及说明
lpString | String，欲用来容纳图元文件的文件名。用vbNullString可传递一个零值，从而创建一个内存句柄
注解
尽管这个函数能创建基于磁盘的图元文件，但这些图元文件并非通常在windows下使用的标准“可放置”图元文件格式


CreatePatternBrush
VB声明
Declare Function CreatePatternBrush Lib "gdi32" Alias "CreatePatternBrush" (ByVal hBitmap As Long) As Long
说明
用指定了刷子图案的一幅位图创建一个刷子
返回值
Long，如执行成功，则返回新刷子的一个句柄；否则返回零
参数表
参数 | 类型及说明
hBitmap | Long，指向一幅位图的句柄。如指定了单色位图，文本和背景色就会在图案中使用
注解
一旦刷子不再需要，记得用DeleteObject函数将其删除。不要在这个函数里使用作为DIB分区创建的位图


CreatePen
VB声明
Declare Function CreatePen Lib "gdi32" Alias "CreatePen" (ByVal nPenStyle As Long, ByVal nWidth As Long, ByVal crColor As Long) As Long
说明
用指定的样式、宽度和颜色创建一个画笔
返回值
Long，如函数执行成功，就返回指向新画笔的一个句柄；否则返回零
参数表
参数 | 类型及说明
nPenStyle | Long，指定画笔样式，可以是下述常数之一
 | PS_SOLID | 画笔画出的是实线
 | PS_DASH | 画笔画出的是虚线（nWidth必须是1）
 | PS_DOT | 画笔画出的是点线（nWidth必须是1）
 | PS_DASHDOT | 画笔画出的是点划线（nWidth必须是1）
 | PS_DASHDOTDOT | 画笔画出的是点-点-划线（nWidth必须是1）
 | PS_NULL | 画笔不能画图
 | PS_INSIDEFRAME | 画笔在由椭圆、矩形、圆角矩形、饼图以及弦等生成的封闭对象框中画图。如指定的准确RGB颜色不存在，就进行抖动处理
nWidth | Long，以逻辑单位表示的画笔的宽度
crColor | Long，画笔的RGB颜色
注解
一旦不再需要画笔，记得用DeleteObject函数将其删除

Top


CreatePenIndirect
VB声明
Declare Function CreatePenIndirect Lib "gdi32" Alias "CreatePenIndirect" (lpLogPen As LOGPEN) As Long
说明
根据指定的LOGPEN结构创建一个画笔
返回值
Long，如执行成功，返回指向新画笔的一个句柄；否则返回零
参数表
参数 | 类型及说明
lpLogPen | LOGPEN，逻辑画笔结构。这个结构与CreatePen函数的参数非常接近
注解
一旦不再需要画笔，记得用DeleteObject函数将其删除


CreateSolidBrush
VB声明
Declare Function CreateSolidBrush Lib "gdi32" Alias "CreateSolidBrush" (ByVal crColor As Long) As Long
说明
用纯色创建一个刷子
返回值
Long，如执行成功，返回新刷子的一个句柄；否则返回零
参数表
参数 | 类型及说明
crColor | Long，数字的RGB彩色
注解
一旦刷子不再需要，就用DeleteObject函数将其删除


DeleteEnhMetaFile
VB声明
Declare Function DeleteEnhMetaFile Lib "gdi32" Alias "DeleteEnhMetaFile" (ByVal hemf As Long) As Long
说明
删除指定的增强型图元文件
返回值
Long，非零表示成功，零表示失败
参数表
参数 | 类型及说明
hemf | Long，增强型图元文件的句柄
注解
如图元文件是建立在一个磁盘文件基础上的，那么文件本身就不会由函数删除。这样有可能由GetEnhMetaFile函数再次将其打开


DeleteMetaFile
VB声明
Declare Function DeleteMetaFile Lib "gdi32" Alias "DeleteMetaFile" (ByVal hMF As Long) As Long
说明
删除指定的图元文件
返回值
Long，非零表示成功，零表示失败
参数表
参数 | 类型及说明
hMF | Long，图元文件的句柄
注解
如图元文件是建立在一个磁盘文件基础上的，那么文件本身就不会由函数删除。这样有可能造成由GetEnhMetaFile函数再次将其打开。然而，这个图元文件并不采用标准可放置图元文件格式


DeleteObject
VB声明
Declare Function DeleteObject Lib "gdi32" Alias "DeleteObject" (ByVal hObject As Long) As Long
说明
用这个函数删除GDI对象，比如画笔、刷子、字体、位图、区域以及调色板等等。对象使用的所有系统资源都会被释放
返回值
Long，非零表示成功，零表示失败
参数表
参数 | 类型及说明
hObject | Long，一个GDI对象的句柄
注解
不要删除一个已选入设备场景的画笔、刷子或位图。如删除以位图为基础的阴影（图案）刷子，位图不会由这个函数删除——只有刷子被删掉


DrawEdge
VB声明
Declare Function DrawEdge Lib "user32" Alias "DrawEdge" (ByVal hdc As Long, qrc As RECT, ByVal edge As Long, ByVal grfFlags As Long) As Long
说明
用指定的样式描绘一个矩形的边框
返回值
Long，TRUE（非零）表示成功，否则返回零。会设置GetLastError。（在vb里使用：推荐使用。利用这个函数，我们没有必要再使用许多3D边框和面板。所以就资源和内存的占用率来说，这个函数的效率要高得多。它可在一定程度上提升性能）
参数表
参数 | 类型及说明
hdc | Long，要在其中绘图的设备场景
qrc | RECT，要为其描绘边框的矩形
edge | Long，带有前缀BDR_的两个常数的组合。一个指定内部边框是上凸还是下凹；另一个则指定外部边框。有时能换用带EDGE_前缀的常数。
grfFlags | Long，带有BF_前缀的常数的组合
注解
由于这是一个GDI函数，所以矩形坐标是逻辑坐标


DrawEscape
VB声明
Declare Function DrawEscape Lib "gdi32" Alias "DrawEscape" (ByVal hdc As Long, ByVal nEscape As Long, ByVal cbInput As Long, ByVal lpszInData As String) As Long
说明
换码（Escape）函数将数据直接发至显示设备驱动程序（在vb里使用：能够使用。但由于Escape对设备有较强的依赖性，所以除非万不得以，尽量不要用它）
返回值
Long，非零表示成功，零表示错误（QUERYESCSUPPORT换码例外；返回TRUE表示支持特定的换码；否则返回零）
参数表
参数 | 类型及说明
hdc | Long，显示设备的设备场景
nEscape | Long，指定欲执行的换码的一个常数
cbInput | Long，输入缓冲区的长度
lpszInData | String，输入字串或缓冲区
注解
可用QUERYESCSUPPORT换码判断一个特定的换码是否得到当前显示驱动程序的支持


DrawFocusRect
VB声明
Declare Function DrawFocusRect Lib "user32" Alias "DrawFocusRect" (ByVal hdc As Long, lpRect As RECT) As Long
说明
画一个焦点矩形。这个矩形是在标志焦点的样式中通过异或运算完成的（焦点通常用一个点线表示）。如用同样的参数再次调用这个函数，就表示删除焦点矩形
返回值
Long，非零表示成功，零表示失败。会设置GetLastError
参数表
参数 | 类型及说明
hdc | Long，设备场景的句柄
lpRect | RECT，要在逻辑坐标中描绘的矩形


DrawFrameControl
VB声明
Declare Function DrawFrameControl Lib "user32" Alias "DrawFrameControl" (ByVal hDC As Long, lpRect As RECT, ByVal un1 As Long, ByVal un2 As Long) As Long
说明
这个函数用于描绘一个标准控件。例如，可描绘一个按钮或滚动条的帧（原文：This function draws a standard control. For example, you can draw the frame of a button or scrollbar.）
返回值
Long，非零表示成功，零表示失败。会设置GetLastError
参数表
参数 | 类型及说明
hDC | Long，要在其中作画的设备场景
lpRect | RECT，指定帧的位置及大小的一个矩形
un1 | Long，指定帧类型的一个常数。这些常数包括DFC_BUTTON，DFC_CAPTION，DFC_MENU，以及DFC_SCROLL
un2 | Long，一个常数，指定欲描绘的帧的状态。由带有前缀DFCS_的一个常数构成


DrawState
VB声明
Declare Function DrawState Lib "user32" Alias "DrawStateA" (ByVal hDC As Long, ByVal hBrush As Long, ByVal lpDrawStateProc As Long, ByVal lParam As Long, ByVal wParam As Long, ByVal n1 As Long, ByVal n2 As Long, ByVal n3 As Long, ByVal n4 As Long, ByVal un As Long) As Long
说明
这个函数可为一幅图象或绘图操作应用各式各样的效果
返回值
Long，TRUE（非零）表示成功，FALSE表示失败
参数表
参数 | 类型及说明
hDC | Long，要在其中绘图的设备场景
hBrush | Long，如状态为DSS_MONO（在un参数中设定），则指定一个刷子句柄
lpDrawStateProc | Long，指向一个函数地址的指针。如图象类型为DST_COMPLEX，必须设置这个参数。对于DST_TEXT，则可设可不设
lParam | Long，由图象的类型决定
wParam | Long，由图象的类型决定
n1 | Long，图象的水平位置
n2 | Long，图象的垂直位置
n3 | Long，图象的宽度。如图象类型为DST_COMPLEX，必须设置这个参数。而对于其他类型，则可以设为零。如为零，表示该参数在图象的基础上计算
n4 | Long，图象的高度。如图象类型为DST_COMPLEX，必须设置这个参数。而对于其他类型，则可以设为零。如为零，表示该参数在图象的基础上计算
un | Long，图象类型和状态的一个组合。参见下表
 | 图象类型
 | DST_BITMAP | lParam中的句柄
 | DST_COMPLEX | 绘图在由lpDrawStateProc参数指定的回调函数期间执行。lParam和wParam会传递给回调事件
 | DST_ICON | lParam包括图标句柄
 | DST_TEXT | lParam代表文字的地址（可使用一个字串别名），wParam代表字串的长度
 | DST_PREFIXTEXT | 与DST_TEXT类似，只是 & 字符指出为下各字符加上下划线
 | 图象状态常数
 | DSS_NORMAL | 普通图象
 | DSS_UNION | 图象进行抖动处理
 | DSS_DISABLED | 图象具有浮雕效果
 | DSS_MONO | 用hBrush描绘图象
 | DSS_RIGHT | 手册未正式说明——经实验证明没有什么作用（原文：Undocumented-experimentation seems to show no effect.）
注解
windows95用它获得我们应用于图象的一些视觉效果；例如，可使位图或其他图象在视觉上进入禁用或抖动状态。对于位图和图标，它在描绘位图或图标的时候应用一种效果。对于文本，既可让函数画出文本，也可在一个回调函数中执行自己的绘图操作。对于复杂的（用户自定义）图象，则必须用一个回调函数。在回调函数执行过程中，用自己的代码将自己希望的任何东西画入设备场景。在这之后，利用DrawState函数应用希望的效果

Top


Ellipse
VB声明
Declare Function Ellipse Lib "gdi32" Alias "Ellipse" (ByVal hdc As Long, ByVal X1 As Long, ByVal Y1 As Long, ByVal X2 As Long, ByVal Y2 As Long) As Long
说明
描绘一个椭圆，由指定的矩形围绕。椭圆用当前选择的画笔描绘，并用当前选择的刷子填充
返回值
Long，非零表示成功，零表示失败。会设置GetLastError
参数表
参数 | 类型及说明
hdc | Long，设备场景的句柄
X1，Y1 | Long，约束矩形采用逻辑坐标的左上角位置
X2，Y2 | Long，约束矩形采用逻辑坐标的右下角位置


EndPath
VB声明
Declare Function EndPath Lib "gdi32" Alias "EndPath" (ByVal hdc As Long) As Long
说明
停止定义一个路径。如执行成功，BeginPath函数调用和这个函数之间发生的所有绘图操作都会正式成为指定设备场景的路径
返回值
Long，非零表示成功，零表示失败。会将GetLastError设置为下述值之一：ERROR_CAN_NOT_COMPLETE 或 ERROR_INVALID_PARAMETER
参数表
参数 | 类型及说明
hdc | Long，设备场景


EnumEnhMetaFile
VB声明
Declare Function EnumEnhMetaFile Lib "gdi32" Alias "EnumEnhMetaFile" (ByVal hdc As Long, ByVal hemf As Long, ByVal lpEnhMetaFunc As Long, lpData As Any, lpRect As RECT) As Long
说明
针对一个增强型图元文件，列举其中单独的图元文件记录。每条图元文件记录都由单个GDI命令组成。可伴随PlayEnhMetaFileRecord函数使用，选择性的回放图元文件的一部分
返回值
Long，如图元文件的所有记录都列举出来，就返回TRUE（非零）；否则返回零
参数表
参数 | 类型及说明
hdc | Long，用于输出的设备场景的句柄。只有在用回调函数进行绘图操作的时候，才要求设置这个参数
hemf | Long，欲列举的一个增强型图元文件的句柄
lpEnhMetaFunc | Long，指向为每个图元文件调用的一个函数的指针
lpData | 用户自定义的值
lpRect | RECT，定义图元文件边框的一个矩形


EnumMetaFile
VB声明
Declare Function EnumMetaFile Lib "gdi32" Alias "EnumMetaFile" (ByVal hDC As Long, ByVal hMetafile As Long, ByVal lpMFEnumProc As Long, ByVal lParam As Long) As Long
说明
为一个标准的windows图元文件枚举单独的图元文件记录。每条图元文件记录都包含了单个GDI绘图命令。可与PlayMetaFileRecord函数联合使用，选择性的回放图元文件的某一部分
返回值
Long，非零表示成功，零表示失败
参数表
参数 | 类型及说明
hDC | Long，用于输出的设备场景的句柄。只有在用回调函数进行绘图操作的时候，才要求设置这个参数
hMetafile | Long，欲列举的一个标准图元文件的句柄
lpMFEnumProc | Long，指向为每个图元文件调用的一个函数的指针
lParam | Long，用户自定义的值


EnumObjects
VB声明
Declare Function EnumObjects Lib "gdi32" Alias "EnumObjects" (ByVal hDC As Long, ByVal n As Long, ByVal lpGOBJEnumProc As Long, lpVoid As Any) As Long
说明
枚举可随同指定设备场景使用的画笔和刷子
返回值
Long，如函数要枚举的对象太多，就返回-1。否则由用户自己定义
参数表
参数 | 类型及说明
hDC | Long，设备场景的句柄
n | Long，欲枚举的对象的类型。请查找带OBJ_前缀的常数，这样可得到一个对象列表。win32手册建议只使用OBJ_PEN和OBJ_BRUSH两个常数
lpGOBJEnumProc | Long，指向为每个GDI对象调用的指针
lpVoid | 枚举过程中传递给回调函数的值


ExtCreatePen
VB声明
Declare Function ExtCreatePen Lib "gdi32" Alias "ExtCreatePen" (ByVal dwPenStyle As Long, ByVal dwWidth As Long, lplb As LOGBRUSH, ByVal dwStyleCount As Long, lpStyle As Long) As Long
说明
创建一个扩展画笔（装饰或几何）
返回值
Long，如执行成功，返回一个指向扩展画笔的句柄。零表示执行出错。一旦不再需要，记得用DeleteObject将画笔删除
参数表
参数 | 类型及说明
dwPenStyle | Long，画笔样式来自下述常数组的任何一个常数的组合（OR运算）：
 | PS_COSMETIC or PS_GEOMETRIC | 画笔的类型
 | PS_ALTERNATE, PS_SOLID, PS_DASH, PS_DOT, PS_DASHDOT, PS_DASHDOTDOT, PS_NULL, PS_USERSTYLE, PS_INSIDEFRAME | 画笔的样式
 | PS_ENDCAP_??? | 画笔的笔尖
 | PS_JOIN_??? | 在图形中连接线段或在路径中连接直线的方式
dwWidth | Long，指定线宽。几何画笔的线宽肯定是1
lplb | LOGBRUSH，lbColor代表画笔颜色。对于装饰画笔，lbStyle为PS_SOLID；对于几何画笔，lbStyle则代表实际的样式。针对几何画笔，必须设置其他所有字体
dwStyleCount | Long，如指定了PS_USERSTYLE，则代表lpStyle数组中的条目数量
lpStyle | Long，指定PS_USERSTYLE的“线段/空白”对（原文：Line/space pairs for PS_USERSTYLE）

Top


ExtFloodFill
VB声明
Declare Function ExtFloodFill Lib "gdi32" Alias "ExtFloodFill" (ByVal hdc As Long, ByVal x As Long, ByVal y As Long, ByVal crColor As Long, ByVal wFillType As Long) As Long
说明
在指定的设备场景里，用当前选择的刷子填充一个区域
返回值
Long，非零表示成功，零表示失败。会设置GetLastError
参数表
参数 | 类型及说明
hdc | Long，设备场景的句柄
x,y | Long，开始填充的一个点，采用逻辑坐标表示
crColor | Long，要使用的边界颜色
wFillType | Long，欲执行的填充类型，由下述任何一个常数决定
 | FLOODFILLBORDER | 等同于FloodFill函数的功能
 | FLOODFILLSURFACE | 从指定的点向外填充，只到找到了crColor颜色（在边框采用了多种颜色时使用）
注解
如指定了FLOODFILLBORDER，那么x,y点绝对不能为crColor颜色。如指定了FLOODFILLSURFACE，那么x,y点必须是crColor颜色。这个函数只能在光栅设备中使用。可用GetDeviceCaps函数判断设备是否支持这个函数
提示
一旦指定了FLOODFILLBORDER，务必保证初始点的颜色没有crColor。如果使用的是FLOODFILLSURFACE，务必保证初始点有颜色crColor（这是函数执行失败最常见的两个原因）。注意保证初始点位于剪切区内

Top


FillPath
VB声明
Declare Function FillPath Lib "gdi32" Alias "FillPath" (ByVal hdc As Long) As Long
说明
关闭路径中任何打开的图形，并用当前刷子填充
返回值
Long，非零表示成功，零表示失败。会将GetLastError设置为下述值之一：ERROR_CAN_NOT_COMPLETE，ERROR_INVALID_PARAMETER，ERROR_NOT_ENOUGH_MEMORY
参数表
hdc Long，欲在其中操作的设备场景
注解

函数执行完毕后，选定的路径会自行清除


FillRect
VB声明
Declare Function FillRect Lib "user32" Alias "FillRect" (ByVal hdc As Long, lpRect As RECT, ByVal hBrush As Long) As Long
说明
用指定的刷子填充一个矩形
返回值
Long，非零表示成功，零表示失败。会设置GetLastError
参数表
参数 | 类型及说明
hdc | Long，设备场景的句柄
lpRect | RECT，对填充区域进行描述的一个矩形，采用逻辑坐标
hBrush | Long，欲使用的刷子的句柄
注解
矩形的右边和底边不会描绘


FlattenPath
VB声明
Declare Function FlattenPath Lib "gdi32" Alias "FlattenPath" (ByVal hdc As Long) As Long
说明
将一个路径中的所有曲线都转换成线段
返回值
Long，非零表示成功，零表示失败。会将GetLastError设置为下述值之一：ERROR_CAN_NOT_COMPLETE，ERROR_INVALID_PARAMETER，ERROR_NOT_ENOUGH_MEMORY
参数表
参数 | 类型及说明
hdc | Long，包含了路径的设备场景


FloodFill
VB声明
Declare Function FloodFill Lib "gdi32" Alias "FloodFill" (ByVal hdc As Long, ByVal x As Long, ByVal y As Long, ByVal crColor As Long) As Long
说明
用当前选定的刷子在指定的设备场景中填充一个区域。区域是由颜色crColor定义的
返回值
Long，非零表示成功，零表示失败。会设置GetLastError
参数表
参数 | 类型及说明
hdc | Long，设备场景的句柄
x,y | Long，开始填充的那个点，用逻辑坐标表示
crColor | Long，欲使用的边界颜色。由这个颜色包围的表面会被填充
注解
点x,y绝对不能有颜色crColor，而且必须在剪切区域内。这个函数只对光栅设备有效，请参考ExtFloodFill的注解


FrameRect
VB声明
Declare Function FrameRect Lib "user32" Alias "FrameRect" (ByVal hdc As Long, lpRect As RECT, ByVal hBrush As Long) As Long
说明
用指定的刷子围绕一个矩形画一个边框（组成一个帧），边框的宽度是一个逻辑单位
返回值
Long，非零表示成功，零表示失败。会设置GetLastError
参数表
参数 | 类型及说明
hdc | Long，设备场景的句柄
lpRect | RECT，对要描绘的边框进行描述的一个矩形。这等效于将画笔设成一个单位的宽度，然后用矩形函数画出一个矩形
hBrush | Long，欲使用的刷子的句柄
注解
lpRect的顶部边距值必须小于底部边距值。lpRect的左侧边距值必须小于右侧边距值


GdiComment
VB声明
Declare Function GdiComment Lib "gdi32" Alias "GdiComment" (ByVal hdc As Long, ByVal cbSize As Long, lpData As Byte) As Long
说明
为指定的增强型图元文件设备场景添加一条注释信息
返回值
Long，非零表示成功，零表示失败
参数表
参数 | 类型及说明
hdc | Long，目标增强型图元文件设备场景的句柄
cbSize | Long，欲嵌入图元文件的数据长度
lpData | Byte，一个注释结构或一个缓冲区的Long内存地址，其中包含了欲添加的注释正文
注解
尽管可在图元文件中嵌入任何专用或私有（Private）信息，但只有几种全局数据格式能够嵌入。如将缓冲区看作一个32位Long型值的数组，则全局注释的值就是下面这个样子： 第一个条目是常数GDICOMMENT_IDENTIFIER 第二个条目如下所示： 首先是一个GDICOMMENT_WINDOWS_METAFILE——在增强型图元文件中嵌入一个标准图元文件。它的后面跟随下述值之一： □ 标准图元文件的版本号 □ 一个校验和（checksum）值：所有图元文件数据的总和——包括这个值——必须是零 □ 零 □ 后面跟随的窗口图元文件的大小 GDICOMMENT_BEGINGROUP——标志一组绘图命令在增强型图元文件在中的起始处。它的后面跟随： □ 四个Long值。定义一个RECT结构。结构中包含了绘图命令的约束矩形 □ 可选的Unicode字串的长度。字串中包含对命令组的说明文字。如不想提供说明，可设为零 GDICOMMENT_ENDGROUP——标志增强型图元文件中的一组绘图命令的结尾 GDICOMMENT_MULTIFORMATS——以不同的格式嵌入一幅处理过的图象。例如，可利用这个注释在一个增强型图元文件中嵌入一个封装式PostScript图象。回放这条记录的时候，windows会重画它能描绘的第一组格式。它的后面跟随： □ 四个Long值。定义一个RECT结构。结构中包含了绘图命令的约束矩形 □ 包括在注释中的格式数量 □ 一系列EMRFORMAT结构，每种格式使用一个

Top


GdiFlush
VB声明
Declare Function GdiFlush Lib "gdi32" Alias "GdiFlush" () As Long
说明
执行任何未决的绘图操作
返回值
Long，如所有未决的绘图操作都成功完成，就返回TRUE（非零）。如任何一个操作失败，就返回零值
注解

通过成批合并绘图操作命令，win32图形子系统（GDI）可改善绘图的性能。如调用一系列绘图命令，他们都返回布尔值（TRUE表示成功，零表示失败），就可将他们置于一个内部GDI队列里。此时，函数可以立即返回。随后，GDI子系统会执行这些待决的绘图命令。可考虑一种最常见的情况。在这种情况下，系统安装了一块显示卡。卡上自带图形处理器或加速器。画图的时候，GDI只需将图形命令简单的发送给显示卡，另其完成实际的操作。如果必须等待每个绘图命令都完成并返回，系统和应用程序的性能就会受到显示卡绘图速度的极大限制。所以在这个时候，GDI将绘图命令置于一个名为“批”（Batch）的队列里。这样一来，系统和应用程序就能继续运行，同时仍然让显示卡进行绘图操作

GdiFlush命令指示应用程序进入等待状态，直到所有待决的绘图操作完成为止。如执行的是一个特殊的GDI绘图命令，它不会返回一个布尔值，那么也会面临这种情况。例如，GetPixel函数需要读取一个像素值。但除非所有待决的绘图完成，否则该函数不能可靠的完成工作


GdiGetBatchLimit
VB声明
Declare Function GdiGetBatchLimit Lib "gdi32" Alias "GdiGetBatchLimit" () As Long
说明
判断有多少个GDI绘图命令位于队列中
返回值
Long，待决绘图命令的最大数量，零表示出错。会设置GetLastError
注解

参考对GdiFlush的注解


GdiSetBatchLimit
VB声明
Declare Function GdiSetBatchLimit Lib "gdi32" Alias "GdiSetBatchLimit" (ByVal dwLimit As Long) As Long
说明
指定有多少个GDI绘图命令能够进入队列
返回值
Long，如执行成功，返回前一个限制；零表示出错。会设置GetLastError
参数表
参数 | 类型及说明
dwLimit | Long，可排队的绘图操作最大数量；0意味着恢复默认值；1表示禁止绘图命令排队
注解
参考对GdiFlush的注解


GetArcDirection
VB声明
Declare Function GetArcDirection Lib "gdi32" Alias "GetArcDirection" (ByVal hdc As Long) As Long
说明
画圆弧的时候，判断当前采用的绘图方向
返回值
Long，常数AD_COUNTERCLOCKWISE（逆时针）或AD_CLOCKWISE（顺时针），零表示出错
参数表
参数 | 类型及说明
hdc | Long，要查询的设备场景


GetBkColor
VB声明
Declare Function GetBkColor Lib "gdi32" Alias "GetBkColor" (ByVal hdc As Long) As Long
说明
取得指定设备场景当前的背景颜色
返回值
Long，当前背景色的RGB颜色值
参数表
参数 | 类型及说明
hdc | Long，欲查询背景颜色的一个设备场景


GetBkMode
VB声明
Declare Function GetBkMode Lib "gdi32" Alias "GetBkMode" (ByVal hdc As Long) As Long
说明
针对指定的设备场景，取得当前的背景填充模式
返回值
Long，下述常数之一，零意味着出错
OPAQUE | 将文本、阴影刷以及虚线画笔线段的背景设为当前的背景色
TRANSPARENT | 不修改文本、阴影刷以及虚线画笔线段的背景
参数表
参数 | 类型及说明
hdc | Long，设备场景的句柄


GetBrushOrgEx
VB声明
Declare Function GetBrushOrgEx Lib "gdi32" Alias "GetBrushOrgEx" (ByVal hDC As Long, lpPoint As POINTAPI) As Long
说明
判断指定设备场景中当前选定刷子起点
返回值
Long，非零表示成功，零表示失败。会设置GetLastError
参数表
参数 | 类型及说明
hDC | Long，设备场景的句柄
lpPoint | POINTAPI，这个结构用来装载当前刷子的起点


GetCurrentObject
VB声明
Declare Function GetCurrentObject Lib "gdi32" Alias "GetCurrentObject" (ByVal hdc As Long, ByVal uObjectType As Long) As Long
说明
用于获得指定类型的当前选定对象
返回值
Long，当前选定对象的句柄，零表示错误
参数表
参数 | 类型及说明
hdc | Long，欲查询的设备场景
uObjectType | Long，对象类型。可以是下述常数之一：OBJ_PEN，OBJ_BRUSH，OBJ_PAL，OBJ_FONT，或OBJ_BITMAP


GetCurrentPositionEx
VB声明
Declare Function GetCurrentPositionEx Lib "gdi32" Alias "GetCurrentPositionEx" (ByVal hdc As Long, lpPoint As POINTAPI) As Long
说明
在指定的设备场景中取得当前的画笔位置
返回值
Long，非零表示成功，零表示失败
参数表
参数 | 类型及说明
hdc | Long，设备场景的句柄
lpPoint | POINTAPI，用于装载当前位置


GetEnhMetaFile
VB声明
Declare Function GetEnhMetaFile Lib "gdi32" Alias "GetEnhMetaFileA" (ByVal lpszMetaFile As String) As Long
说明
取得磁盘文件中包含的一个增强型图元文件的图元文件句柄（原文：Retrieves a metafile handle to an enhanced metafile contained in a disk file）
返回值
Long，指向图元文件的句柄。零表示出错
参数表
参数 | 类型及说明
lpszMetaFile | String，包含了增强型图元文件的一个磁盘文件的名字


GetEnhMetaFileBits
VB声明
Declare Function GetEnhMetaFileBits Lib "gdi32" Alias "GetEnhMetaFileBits" (ByVal hemf As Long, ByVal cbBuffer As Long, lpbBuffer As Byte) As Long
说明
将指定的增强型图元文件复制到一个内存缓冲区里。这个函数可用于取得一个图元文件的原始数据，以便将其保存到磁盘文件中
返回值
Long，如lpbBuffer为零，则必须设置缓冲区的长度（用ByVal As Long在这种情况下传递一个NULL参数）。如执行成功，返回缓冲区实际载入的字节数；零表示执行失败
参数表
参数 | 类型及说明
hemf | Long，指向一个增强型图元文件的句柄
cbBuffer | Long，lpbBuffer缓冲区的长度
lpbBuffer | Byte，长度为cbBuffer的一个缓冲区的头一个字节。可用一个别名，将这个参数定义成ByVal As Long，以便传递一个内存地址
注解
调用了这个函数后，图元文件句柄hemf仍然有效


GetEnhMetaFileDescription
VB声明
Declare Function GetEnhMetaFileDescription Lib "gdi32" Alias "GetEnhMetaFileDescriptionA" (ByVal hemf As Long, ByVal cchBuffer As Long, ByVal lpszDescription As String) As Long
说明
返回对一个增强型图元文件的说明
返回值
Long，如lpszDescription为NULL（使用vbNullString），则必须设置缓冲区的长度。如函数执行成功，返回实际载入缓冲区的字节数；如不存在说明信息则返回零
参数表
参数 | 类型及说明
hemf | Long，目标增强型图元文件的句柄
cchBuffer | Long，lpszDescription缓冲区的长度
lpszDescription | String，指定一个预先初始化好的字串缓冲区，准备随同图元文件说明载入。参考CreateEnhMetaFile函数，了解增强型图元文件说明字串的具体格式


GetEnhMetaFileHeader
VB声明
Declare Function GetEnhMetaFileHeader Lib "gdi32" Alias "GetEnhMetaFileHeader" (ByVal hemf As Long, ByVal cbBuffer As Long, lpemh As ENHMETAHEADER) As Long
说明
取得增强型图元文件的图元文件头
返回值
Long，若lpemh为零（用ByVal As Long在这种情况下传递一个NULL参数）则必须设置缓冲区的长度。如执行成功，返回缓冲区中实际载入的字节数；零表示失败
参数表
参数 | 类型及说明
hemf | Long，指向一个增强型图元文件的句柄
cbBuffer | Long，ENHMETAHEADER结构的大小
lpemh | ENHMETAHEADER


GetEnhMetaFilePaletteEntries
VB声明
Declare Function GetEnhMetaFilePaletteEntries Lib "gdi32" Alias "GetEnhMetaFilePaletteEntries" (ByVal hemf As Long, ByVal cEntries As Long, lppe As PALETTEENTRY) As Long
说明
取得增强型图元文件的全部或部分调色板
返回值
Long，如lppe为零（用ByVal As Long在这种情况下传递一个NULL参数）则必须设置缓冲区的长度。如执行成功，返回缓冲区实际载入的条目数量；如图元文件中不存在调色板就返回一个零值。如返回GDI_ERROR，表示函数执行出错
参数表
参数 | 类型及说明
hemf | Long，增强型图元文件的句柄
cEntries | Long，欲取回的条目数量
lppe | PALETTEENTRY，一个PALETTEENTRY结构的数组，用于装载增强型图元文件的调色板条目。注意至少要包括cEntries个结构


GetMetaFile
VB声明
Declare Function GetMetaFile Lib "gdi32" Alias "GetMetaFileA" (ByVal lpFileName As String) As Long
说明
取得包含在一个磁盘文件中的图元文件的图元文件句柄
返回值
Long，指向已载入的图元文件的一个句柄，零表示错误
参数表
参数 | 类型及说明
lpFileName | String，包含了一个图元文件的磁盘文件的名称
注解
这个函数在vb里没有什么用。因为windows图元文件通常保存为可放置的图元文件格式，而该函数不能识别这种格式


GetMetaFileBitsEx
VB声明
Declare Function GetMetaFileBitsEx Lib "gdi32" Alias "GetMetaFileBitsEx" (ByVal hMF As Long, ByVal nSize As Long, lpvData As Any) As Long
说明
将指定的图元文件复制到一个内存缓冲区。这个函数可用于取得一个图元文件的原始数据，以便转存到磁盘文件
返回值
Long，如lpvData为零（在这种情况下用ByVal As Long传递一个NULL参数），那么必须指定缓冲区的长度。如执行成功，返回实际载入缓冲区的字节数，零表示出错
参数表
参数 | 类型及说明
hMF | Long，标准windows图元文件的句柄
nSize | Long，lpvData缓冲区的长度
lpvData | 任何类型，一个字节数组中的第一个条目，该数组用于装载图元文件数据。用ByVal As Long可指定空值或缓冲区的内存地址


GetMiterLimit
VB声明
Declare Function GetMiterLimit& Lib "gdi32" (ByVal hdc As Long, peLimit As Single)
说明
取得设备场景的斜率限制（Miter）设置——斜率限制是指斜角长度与线宽间的比率
返回值
Long，
参数表
参数 | 类型及说明
hdc | Long，设备场景的句柄
peLimit | Single，随同当前斜率设置载入一个Single值
注解
开头的声明来自于我的资料，而在vb的api文本查看器里的声明如下：Declare Function GetMiterLimit Lib "gdi32" Alias "GetMiterLimit" (ByVal hdc As Long, peLimit As Double) As Long，参数peLimit的类型不同，不知是谁错了。


GetNearestColor
VB声明
Declare Function GetNearestColor Lib "gdi32" Alias "GetNearestColor" (ByVal hdc As Long, ByVal crColor As Long) As Long
说明
根据设备的显示能力，取得与指定颜色最接近的一种纯色
返回值
Long，取得与指定颜色最接近的一种颜色，这种颜色可由设备场景实际显示出来（给定当前系统调色板）。如返回CLR_INVALID，表示函数执行出错。会设置GetLastError
参数表
参数 | 类型及说明
hdc | Long，设备场景的句柄
crColor | Long，欲测试的RGB颜色


GetObjectAPI
VB声明
Declare Function GetObjectAPI& Lib "gdi32" Alias "GetObjectA" (ByVal hObject As Long, ByVal nCount As Long, lpObject As Any)
说明
取得对指定对象进行说明的一个结构。windows手册建议用GetObject这个名字来引用该函数。GetObjectAPI在vb中用于避免与GetObject关键字混淆
返回值
Long，如lpObject设为零（用ByVal As Long在这种情况下传递一个NULL参数），则必须设置缓冲区的长度。如执行成功，返回载入结构内部的实际字节数；如失败，返回零值
参数表
参数 | 类型及说明
hObject | Long，画笔、刷子、字体、位图或调色板等对象的句柄
nCount | Long，欲取回的字节数。通常是由lpObject定义的那个结构的长度
lpObject | 任何类型，用于容纳对象数据的结构。针对画笔，通常是一个LOGPEN结构；针对扩展画笔，通常是EXTLOGPEN；针对字体是LOGBRUSH；针对位图是BITMAP；针对DIBSection位图是DIBSECTION；针对调色板，应指向一个整型变量，代表调色板中的条目数量


GetObjectType
VB声明
Declare Function GetObjectType Lib "gdi32" Alias "GetObjectType" (ByVal hgdiobj As Long) As Long
说明
判断由指定句柄引用的GDI对象的类型
返回值
Long，带有OBJ_前缀的一个常数，标志着一种特定的对象。零表示错误
参数表
参数 | 类型及说明
hgdiobj | Long，一个GDI对象句柄


GetPath
VB声明
Declare Function GetPath Lib "gdi32" Alias "GetPath" (ByVal hdc As Long, lpPoint As POINTAPI, lpTypes As Byte, ByVal nSize As Long) As Long
说明
取得对当前路径进行定义的一系列数据
返回值
Long，载入数组的点数（如nSize设为零，则返回要求的条目数量）。如数组空间不够大，不足以容下所有的点，就返回-1。会将GetLastError设置为下述值之一：ERROR_CAN_NOT_COMPLETE，ERROR_INVALID_PARAMETER，ERROR_BUFFER_OVERFLOW
参数表
参数 | 类型及说明
hdc | Long，包含了路径的设备场景
lpPoint | POINTAPI，一个POINTAPI结构数组中的第一个元素。这个数组为路径中的每个段（segment）都要载入坐标数据。具体的信息是采用逻辑坐标提供的
lpTypes | Byte，一个字节数组中的第一个元素；这个数组定义了与每个坐标对应的操作类型。其中包括：
 | PT_MOVETO | 坐标是一个新子路径的起始处
 | PT_LINETO | 坐标是来自前一个坐标的一条线的终点
 | PT_BEZIERTO | 肯定以三点一组的形式出现。头两个点是控制点，第三个是贝塞尔（Bezier）曲线的终点。PT_LINETO和PT_BEZIERTO也许能与PT_CLOSEFIGURE联合使用。在这种情况下，它代表一幅图象的最后一个点。将这个点与子路径的第一个连接起来后，路径就会封闭
nSize | Long，lpPoint和lpTypes数组的大小。如设为零，表示取得要求的数组大小
注解
尽管路径信息是在设备坐标的内部保存的，这个函数的所有坐标都是用逻辑坐标返回的。具体坐标取决于当前的坐标系统及转换设置。可用FlattenPath函数强迫路径中的所有点都成为PT_MOVETO和PT_LINETO类型

Top


GetPixel
VB声明
Declare Function GetPixel Lib "gdi32" Alias "GetPixel" (ByVal hdc As Long, ByVal x As Long, ByVal y As Long) As Long
说明
在指定的设备场景中取得一个像素的RGB值
返回值
Long，指定点的RGB颜色。如指定的点位于设备场景的剪切区之外，则返回CLR_INVALID
参数表
参数 | 类型及说明
hdc | Long，一个设备场景的句柄
x,y | Long，逻辑坐标中要检查的点
注解
用GetDeviceCaps判断设备是否支持本函数


GetPolyFillMode
VB声明
Declare Function GetPolyFillMode Lib "gdi32" Alias "GetPolyFillMode" (ByVal hdc As Long) As Long
说明
针对指定的设备场景，获得多边形填充模式。关于填充模式见注解
返回值
Long，常数ALTERNATE 或 WINDING。零表示失败
参数表
参数 | 类型及说明
hdc | Long，设备场景的句柄
注解
填充模式1——ALTERNATE：为判断一个点是否位于填充区，windows会从这个点到图形外部画一条假想的线。每与一条线相交，计数器就会增1。如最后一个记数是奇数，则填充这个点；如果是偶数，则保留原样不变 填充模式2——WINDING：为判断一个点是否位于填充区，windows会从这个点到图形外部画一条假想的线。windows会跟踪画出每个顶点（线段）的方向。这条假想的线每次穿过一个顶点时，而且顶点的Y方向为正，则减一个记数。如结果记数不是零，就表明该点位于填充区域


GetROP2
VB声明
Declare Function GetROP2 Lib "gdi32" Alias "GetROP2" (ByVal hdc As Long) As Long
说明
针对指定的设备场景，取得当前的绘图模式。这样可定义绘图操作如何与正在显示的图象合并起来
返回值
Long，请参考绘图模式常数表
参数表
参数 | 类型及说明
hdc | Long，设备场景的句柄
注解
这个函数只对光栅设备有效
绘图模式常数表
常数 | DrawMode | 像素值
R2_BLACK | vbBlackness | 黑色
R2_WHITE | vbWhitness | 白色
R2_NOP | vbNop | 不变
R2_NOT | vbInvert | 当前显示颜色的反色
R2_COPYPEN | vbCopyPen | 画笔颜色
R2_NOTCOPYPEN | vbNotCopyPen | R2_COPYPEN的反色
R2_MERGEPENNOT | vbMergePenNot | 显示颜色的反色与画笔颜色进行OR运算
R2_MASKPENNOT | vbMaskPenNot | 显示颜色的反色与画笔颜色进行AND运算
R2_MERGENOTPEN | vbMergeNotPen | 画笔颜色的反色与显示颜色进行OR运算
R2_MASKNOTPEN | vbMaskNotPen | 画笔颜色的反色与显示颜色进行AND运算
R2_MERGEPEN | vbMergePen | 画笔颜色与显示颜色进行OR运算
R2_NOTMERGEPEN | vbNotMergePen | R2_MERGEPEN的反色
R2_MASKPEN | vbMaskPen | 显示颜色与画笔颜色进行AND运算
R2_NOTMASKPEN | vbNotMaskPen | R2_MASKPEN的反色
R2_XORPEN | vbXorPen | 显示颜色与画笔颜色进行异或运算
R2_NOTXORPEN | vbNotXorPen | R2_XORPEN的反色

Top


GetStockObject
VB声明
Declare Function GetStockObject Lib "gdi32" Alias "GetStockObject" (ByVal nIndex As Long) As Long
说明
取得一个固有对象（Stock）。这是可由任何应用程序使用的windows标准对象之一
返回值
Long，指向指定对象的一个句柄。零表示出错
参数表
参数 | 类型及说明
nIndex | Long，下述表格中定义的任何常数之一
 | BLACK_BRUSH | 黑色刷子 | DKGRAY_BRUSH | 黑灰色刷子
 | GRAY_BRUSH | 灰色刷子 | HOLLOW_BRUSH | 凹刷子
 | LTGRAY_BRUSH | 浅灰色刷子 | NULL_BRUSH | 空刷子
 | WHITE_BRUSH | 白色刷子 | BLACK_PEN | 黑色画笔
 | NULL_PEN | 空画笔 | WHITE_PEN | 白色画笔
 | ANSI_FIXED_FONT | 采用windows（ANSI）字符集的等宽字体 | ANSI_VAR_FONT | 采用windows（ANSI）字符集的不等宽字体
 | DEVICE_DEFAULT_FONT | 设备使用的默认字体（NT） | DEFAULT_GUI_FONT | 用户界面的默认字体，包括菜单和对话框字体（Windows 95）
 | OEM_FIXED_FONT | OEM字符集的固有字体 | SYSTEM_FONT | 屏幕系统字体。这是用于菜单、对话框等等的默认不等宽字体
 | SYSTEM_FIXED_FONT | 屏幕系统字体。这是用于菜单、对话框等等的默认等宽字体（在windows 3.0之前使用） | DEFAULT_PALETTE | 默认调色板
注解
固有刷子的起点可能不会改变。不应用DeleteObject函数删除这些对象。不要对那些不具备CS_HREDRAW 和 CS_VREDRAW类样式的窗口使用DK_GRAY_BRUSH，GRAY_BRUSH 和 LTGRAY_BRUSH刷子

Top


GetSysColorBrush
VB声明
Declare Function GetSysColorBrush Lib "user32" Alias "GetSysColorBrush" (ByVal nIndex As Long) As Long
说明
为任何一种标准系统颜色取得一个刷子
返回值
Long，针对一种系统颜色的一个固有刷子的句柄。零表示出错
参数表
参数 | 类型及说明
nIndex | Long，系统颜色索引，也即带有COLOR_前缀的某个常数。参考GetSysColor
注解
不要用DeleteObject函数删除这些刷子。它们是由系统拥有的固有对象。不要将这些刷子指定成一种窗口类的默认刷子


GetWinMetaFileBits
VB声明
Declare Function GetWinMetaFileBits Lib "gdi32" Alias "GetWinMetaFileBits" (ByVal hemf As Long, ByVal cbBuffer As Long, lpbBuffer As Byte, ByVal fnMapMode As Long, ByVal hdcRef As Long) As Long
说明
通过在一个缓冲区中填充用于标准图元文件的数据，将一个增强型图元文件转换成标准windows图元文件
返回值
Long，以字节数表示的图元文件长度。如lpbBuffer为NULL（在这种情况下用一个别名指定ByVal As Long，从而传递一个NULL值）——返回字节数组的长度。零表示出错（原文：The size in bytes of the metafile. If lpbBuffer is null (use an alias with the parameter specified ByVal as Long to pass null to this function)-returns the required size of the byte array. Zero on error.）
参数表
参数 | 类型及说明
hemf | Long，欲转换的增强型图元文件的句柄。函数调用完毕后，该句柄仍然保持有效
cbBuffer | Long，目标缓冲区的长度
lpbBuffer | Byte，作为目标缓冲区使用的一个字节数组的第一个字节。这个数组的长度至少为cbBuffer个字节
fnMapMode | Long，转换时采用的映射（对应）模型。通常用MM_ANISOTROPIC创建一个可扩展的图元文件
hdcRef | Long，一个参考设备场景，用于决定新图元文件采用的参考分辨率
注解
有些增强型图元文件命令没有对应的标准图元文件命令。这些命令会转换成最接近的命令，或者丢弃。结果生成的图元文件已指定了窗口的显示范围。窗口的起点是0，0

Top


InvertRect
VB声明
Declare Function InvertRect Lib "user32" Alias "InvertRect" (ByVal hdc As Long, lpRect As RECT) As Long
说明
通过反转每个像素的值，从而反转一个设备场景中指定的矩形
返回值
Long，非零表示成功，零表示失败。会设置GetLastError
参数表
参数 | 类型及说明
hdc | Long，设备场景的句柄
lpRect | RECT，要反转的矩形，用逻辑坐标指定
注解
反转是一种光栅操作


LineDDA
VB声明
Declare Function LineDDA Lib "gdi32" Alias "LineDDA" (ByVal n1 As Long, ByVal n2 As Long, ByVal n3 As Long, ByVal n4 As Long, ByVal lpLineDDAProc As Long, ByVal lParam As Long) As Long
说明
枚举指定线段中的所有点
返回值
Long，非零表示成功，零表示失败
参数表
参数 | 类型及说明
n1,n2 | Long，线段的x,y起点坐标
n3,n4 | Long，线段的x,y终点坐标
lpLineDDAProc | Long，vb5中的一个函数地址
lParam | Long，枚举过程中传递给回调函数的用户自定义值
注解
通常用这个函数执行自定义的线段作图——例如，可将一条线中的其他每个像素都设成不同的颜色。在MM_TEXT模式下，每个点都对应于设备中的一个像素——在这种模式下，也可用这个函数进行线段中的击中测试。线段中的最后一个点不会枚举出来


LineTo
VB声明
Declare Function LineTo Lib "gdi32" Alias "LineTo" (ByVal hdc As Long, ByVal x As Long, ByVal y As Long) As Long
说明
用当前画笔画一条线，从当前位置连到一个指定的点。这个函数调用完毕，当前位置变成x,y点
返回值
Long，非零表示成功，零表示失败
参数表
参数 | 类型及说明
hdc | Long，设备场景的句柄
x,y | Long，线段终点位置，采用逻辑坐标表示。这个点不会实际画出来；它不属于线段的一部分
注解
如重复调用这个函数和一个几何画笔，从而创建一系列线段，那么除非在一个路径的场景中调用，否则不会认为这些线段已结合到一起


MoveToEx
VB声明
Declare Function MoveToEx Lib "gdi32" Alias "MoveToEx" (ByVal hdc As Long, ByVal x As Long, ByVal y As Long, lpPoint As POINTAPI) As Long
说明
为指定的设备场景指定一个新的当前画笔位置。前一个位置保存在lpPoint中
返回值
Long，非零表示成功，零表示失败
参数表
参数 | 类型及说明
hdc | Long，指向一个设备场景的句柄
x,y | Long，采用逻辑坐标表示的新画笔位置
lpPoint | POINTAPI，用于保存前一个画笔位置。可以为NULL（将参数改为ByVal As Long，以传递一个空参数）
注解
在一个路径分支中描绘的时候，这个函数会创建一个新的子路径


PaintDesktop
VB声明
Declare Function PaintDesktop Lib "user32" Alias "PaintDesktop" (ByVal hdc As Long) As Long
说明
在指定的设备场景中描绘桌面墙纸图案
返回值
Long，TRUE（非零）表示成功，否则返回零
参数表
参数 | 类型及说明
hdc | Long，要在其中填充的设备场景


PathToRegion
VB声明
Declare Function PathToRegion Lib "gdi32" Alias "PathToRegion" (ByVal hdc As Long) As Long
说明
将当前选定的路径转换到一个区域里
返回值
Long，新区域的句柄。零表示错误。会将GetLastError设为下述值之一：ERROR_CAN_NOT_COMPLETE，ERROR_INVALID_PARAMETER，ERROR_NOT_ENOUGH_MEMORY
参数表
参数 | 类型及说明
hdc | Long，包含了欲转换的路径的设备场景
注解
函数执行完毕后，路径会自动清除


Pie
VB声明
Declare Function Pie Lib "gdi32" Alias "Pie" (ByVal hdc As Long, ByVal X1 As Long, ByVal Y1 As Long, ByVal X2 As Long, ByVal Y2 As Long, ByVal X3 As Long, ByVal Y3 As Long, ByVal X4 As Long, ByVal Y4 As Long) As Long
说明
象注解里那样画一个饼图，X1，Y1，X2，Y2指定椭圆的一个约束矩形。从矩形的中心分别向X3，Y3和X4，Y4画一条线，这两条线与椭圆的交点定义了饼图占据椭圆的面积
返回值
Long，非零表示成功，零表示失败。会设置GetLastError
参数表
参数 | 类型及说明
hdc | Long，指定一个显示场景的句柄
X1,Y1 | Long，指定椭圆约束矩形的左上角位置
X2,Y2 | Long，指定椭圆约束矩形的右下角位置
X3,Y3 | Long，指定饼图的一个斜边
X4,Y4 | Long，指定饼图的另一个斜边
注解
pie1.gif (1054 字节) | 在win95和win16中，约束矩形的宽度和高度必须在3-32766之间 参考Arc函数

Top


PlayEnhMetaFile
VB声明
Declare Function PlayEnhMetaFile Lib "gdi32" Alias "PlayEnhMetaFile" (ByVal hdc As Long, ByVal hemf As Long, lpRect As RECT) As Long
说明
在指定的设备场景中画一个增强型图元文件。与标准图元文件不同，完成回放后，增强型图元文件会恢复设备场景以前的状态
返回值
Long，非零表示成功，零表示失败。会设置GetLastError
参数表
参数 | 类型及说明
hdc | Long，目标设备场景
hemf | Long，欲描绘的增强型图元文件的句柄
lpRect | RECT，一个约束矩形，定义了在哪里描绘图元文件


PlayEnhMetaFileRecord
VB声明
Declare Function PlayEnhMetaFileRecord Lib "gdi32" Alias "PlayEnhMetaFileRecord" (ByVal hdc As Long, lpHandletable As HANDLETABLE, lpEnhMetaRecord As ENHMETARECORD, ByVal nHandles As Long) As Long
说明
回放单独一条增强型图元文件记录。可与EnumEnhMetaFile函数联合使用，只回放选定的图元文件记录。这个函数的参数设置与那些由EnumMetaFile回调函数返回的值是相似的
返回值
Long，非零表示成功，零表示失败
参数表
参数 | 类型及说明
hdc | Long，欲在其中绘图的设备场景
lpHandletable | HANDLETABLE，使用的句柄的一个数组（An array of handles used.）
lpEnhMetaRecord | ENHMETARECORD，一个特定的结构（或指向结构的指针），包含了增强型图元文件记录
nHandles | Long，句柄表中的句柄数量


PlayMetaFile
VB声明
Declare Function PlayMetaFile Lib "gdi32" Alias "PlayMetaFile" (ByVal hdc As Long, ByVal hMF As Long) As Long
说明
在指定的设备场景中回放一个图元文件。图元文件中记录的GDI操作会针对设备场景而执行
返回值
Long，
参数表
参数 | 类型及说明
hdc | Long，要在其中回放图元文件的一个设备场景的句柄
hMF | Long，欲回放的一个图元文件的句柄
注解
在vb里，图元文件有能力改变一个设备场景的对象及映射模式。注意在调用这个函数之前，必须保存一个vb窗体或图片控件设备场景的状态


PlayMetaFileRecord
VB声明
Declare Function PlayMetaFileRecord Lib "gdi32" Alias "PlayMetaFileRecord" (ByVal hdc As Long, lpHandletable As HANDLETABLE, lpMetaRecord As METARECORD, ByVal nHandles As Long) As Long
说明
回放来自图元文件的单条记录（每条记录都包含了单个GDI绘图命令）。可与EnumMetaFile函数联合使用，只回放那些选定的图元文件记录。这个函数的参数与那些由EnumMetaFile回调函数返回的值相似
返回值
Long，非零表示成功，零表示失败
参数表
参数 | 类型及说明
hdc | Long，欲在其中回放图元文件记录GDI命令的一个设备场景的句柄
lpHandletable | HANDLETABLE，一个整数数组的第一个条目，该数组用于容纳图元文件使用的GDI对象的句柄
lpMetaRecord | METARECORD，指定单条图元文件记录
nHandles | Long，图元文件句柄表格中的句柄数目


PolyBezier

PolyBezier, PolyBezierTo
VB声明
Declare Function PolyBezier& Lib "gdi32" (ByVal hdc As Long, lppt As POINTAPI, ByVal cPoints As Long) Declare Function PolyBezierTo& Lib "gdi32" (ByVal hdc As Long, lppt As POINTAPI, ByVal cCount As Long)
说明
描绘一条或多条贝塞尔（Bezier）曲线。PolyBezierTo用于将当前画笔位置设为前一条曲线的终点
返回值
Long，非零表示成功，零表示失败
参数表
参数 | 类型及说明
hdc | Long，要在其中绘图的设备场景
lppt | POINTAPI，指定一个POINTAPI结构数组。其中的第一个结构指定了起点。剩下的点三个一组——包括两个控件点和一个终点 原文：An array of POINTAPI structures. The first structure specifies the starting point. The remaining points are in groups of three, consisting of two control points and an end point.
cPoints | Long，lppt数组的总点数


PolyDraw
VB声明
Declare Function PolyDraw Lib "gdi32" Alias "PolyDraw" (ByVal hdc As Long, lppt As POINTAPI, lpbTypes As Byte, ByVal cCount As Long) As Long
说明
描绘一条复杂的曲线，由线段及贝塞尔曲线组成
返回值
Long，非零表示成功，零表示失败
参数表
参数 | 类型及说明
hdc | Long，用于绘图的设备场景
lppt | POINTAPI，POINTAPI结构数组的第一个元素。这个数组用于为描绘的每一段都载入坐标数据。这些信息是用逻辑坐标提供的
lpbTypes | Byte，一个字节数组的第一个元素。这个数组定义了与每个坐标对应的操作类型。其中包括：
 | PT_MOVETO | 坐标是一幅新打开图形的起点
 | PT_LINETO | 坐标是来自前一个坐标的一条线的终点
 | PT_BEZIERTO | 以三点一组的形式出现。头两个点是控制点，第三个是贝塞尔曲线的终点。PT_LINETO和PT_BEZIERTO也许能与PT_CLOSEFIGURE联合使用。在这种情况下，它代表一幅图形的最后一个点。将这个点与图形的第一个点连接起来后，图形就会封闭
cCount | Long，lppt和lpbTypes数组的大小，设为零表示取得需要的数组大小 原文：The size of the lpPoint and lpTypes array. Set to zero to retrieve the required array size.
注解
当前的画笔位置设为最后一条线段或lppt数组中的曲线的终点

Top


Polygon
VB声明
Declare Function Polygon Lib "gdi32" Alias "Polygon" (ByVal hdc As Long, lpPoint As POINTAPI, ByVal nCount As Long) As Long
说明
描绘一个多边形，由两点或三点的任意系列构成。windows会将最后一个点与第一个点连接起来，从而封闭多边形。多边形的边框用当前选定的画笔描绘，多边形用当前选定的刷子填充
返回值
Long，非零表示成功，零表示失败。会设置GetLastError
参数表
参数 | 类型及说明
hdc | Long，用于描绘的设备场景
lpPoint | POINTAPI，在nCount POINTAPI结构数组中的第一个POINTAPI结构
nCount | Long，多边形的总点数（顶点数）
注解
GetPolyFillMode 和 SetPolyFillMode 函数决定了如何在多边形内部填充


Polyline

Polyline, PolyLineTo
VB声明
Declare Function Polyline Lib "gdi32" Alias "Polyline" (ByVal hdc As Long, lpPoint As POINTAPI, ByVal nCount As Long) As Long Declare Function PolylineTo Lib "gdi32" Alias "PolylineTo" (ByVal hdc As Long, lppt As POINTAPI, ByVal cCount As Long) As Long
说明
用当前画笔描绘一系列线段。使用PolylineTo函数时，当前位置会设为最后一条线段的终点。它不会由Polyline函数改动
返回值
Long，非零表示成功，零表示失败
参数表
参数 | 类型及说明
hdc | Long，要在其中绘图的设备场景
lpPoint | POINTAPI，nCount POINTAPI结构数组中的第一个POINTAPI结构
nCount | Long，lpPoint数组中的点数。会从第一个点到第二个点画一条线，以次类推


PolyPolygon
VB声明
Declare Function PolyPolygon Lib "gdi32" Alias "PolyPolygon" (ByVal hdc As Long, lpPoint As POINTAPI, lpPolyCounts As Long, ByVal nCount As Long) As Long
说明
用当前选定画笔描绘两个或多个多边形。根据由SetPolyFillMode函数指定的多边形填充模式，用当前选定的刷子填充它们。每个多边形都必须是封闭的
返回值
Long，非零表示成功，零表示失败。会设置GetLastError
参数表
参数 | 类型及说明
hdc | Long，要在其中绘图的设备场景
lpPoint | POINTAPI，nCount POINTAPI结构数组中的第一个POINTAPI结构
lpPolyCounts | Long，在Long值数组中的第一个条目。每个条目都包含了一定数量的点，用于构成一个封闭的多边形。lpPoint数组由一系列封闭的多边形构成，每个在lpPolyCounts数组中都有一个条目
nCount | Long，要描绘的多边形总数（就是lpPolyCounts数组的大小）。至少为2


PolyPolyline
VB声明
Declare Function PolyPolyline Lib "gdi32" Alias "PolyPolyline" (ByVal hdc As Long, lppt As POINTAPI, lpdwPolyPoints As Long, ByVal cCount As Long) As Long
说明
用当前选定画笔描绘两个或多个多边形
返回值
Long，非零表示成功，零表示失败
参数表
参数 | 类型及说明
hdc | Long，要在其中绘图的设备场景
lpPoint | POINTAPI，nCount POINTAPI结构数组中的第一个POINTAPI结构
lpdwPolyPoints | Long，在Long值数组中的第一个条目。每个条目都包含了构成一个多边形的点数。lpPoint数组由一系列多边形构成，每个在lpdwPolyPoints数组中都有一个条目
cCount | Long，要描绘的多边形总数（就是lpdwPolyPoints数组的大小）
注解
这个函数几乎与PolyPolygon函数完全一致，只是多边形不会填充，也不需要封闭


Rectangle
VB声明
Declare Function Rectangle Lib "gdi32" Alias "Rectangle" (ByVal hdc As Long, ByVal X1 As Long, ByVal Y1 As Long, ByVal X2 As Long, ByVal Y2 As Long) As Long
说明
用当前选定的画笔描绘矩形，并用当前选定的刷子进行填充
返回值
Long，非零表示成功，零表示失败。会设置GetLastError
参数表
参数 | 类型及说明
hdc | Long，设备场景的句柄
X1,Y1 | Long，指定矩形左上角位置
X2,Y2 | Long，指定矩形右下角位置


RoundRect
VB声明
Declare Function RoundRect Lib "gdi32" Alias "RoundRect" (ByVal hdc As Long, ByVal X1 As Long, ByVal Y1 As Long, ByVal X2 As Long, ByVal Y2 As Long, ByVal X3 As Long, ByVal Y3 As Long) As Long
说明
用当前选定的画笔画一个圆角矩形，并用当前选定的刷子在其中填充。X3和Y3定义了用于生成圆角的椭圆
返回值
Long，非零表示成功，零表示失败。会设置GetLastError
参数表
参数 | 类型及说明
hdc | Long，用于绘图的设备场景
X1,Y1 | Long，对矩形左上角位置进行说明的X，Y坐标
X2,Y2 | Long，对矩形右下角位置进行说明的X，Y坐标
X3 | Long，用于生成圆角效果的一个椭圆的宽度。取值范围从零（表示不加圆角），一直到矩形的宽度（全圆）
Y3 | Long，用于生成圆角效果的一个椭圆的高度。取值范围从零（表示不加圆角），一直到矩形的高度（全圆）


SelectClipPath
VB声明
Declare Function SelectClipPath Lib "gdi32" Alias "SelectClipPath" (ByVal hdc As Long, ByVal iMode As Long) As Long
说明
将设备场景当前的路径合并到剪切区域里
返回值
Long，非零表示成功，零表示失败。会将GetLastError设置为下述值之一：ERROR_CAN_NOT_COMPLETE，ERROR_INVALID_PARAMETER，ERROR_NOT_ENOUGH_MEMORY
参数表
参数 | 类型及说明
hdc | Long，包含了欲合并到剪切区域的路径的一个设备场景的句柄
iMode | Long，决定如何将路径与当前剪切区域合并到一起。可选下述常数之一：
 | RGN_AND | 新的剪切区域只包含了在路径和当前剪切区域都存在的点
 | RGN_COPY | 新剪切区域设为路径
 | RGN_DIFF | 新剪切区域只包含了当前剪切区域的点，但这些点不在路径中
 | RGN_OR | 新的剪切区域包含了在路径或当前剪切区域中的点
 | RGN_XOR | 新的剪切区域只包含了存在于路径或当前剪切区域中的点，但两地共有的点不包括在内

Top


SelectObject
VB声明
Declare Function SelectObject Lib "gdi32" Alias "SelectObject" (ByVal hdc As Long, ByVal hObject As Long) As Long
说明
每个设备场景都可能有选入其中的图形对象。其中包括位图、刷子、字体、画笔以及区域等等。一次选入设备场景的只能有一个对象。选定的对象会在设备场景的绘图操作中使用。例如，当前选定的画笔决定了在设备场景中描绘的线段颜色及样式
返回值
Long，与以前选入设备场景的相同hObject类型的一个对象的句柄，零表示出错。如选定的对象是一个区域（Region），结果就是下列常数之一：SIMPLEREGION， COMPLEXREGION 或 NULLREGION 对区域进行描述， GDI_ERROR 表示出错
参数表
参数 | 类型及说明
hdc | Long，一个设备场景的句柄
hObject | Long，一个画笔、位图、刷子、字体或区域的句柄
注解
返回值通常用于获得选入DC的对象的原始值。绘图操作完成后，原始的对象通常选回设备场景。在清除一个设备场景前，务必注意恢复原始的对象


SetArcDirection
VB声明
Declare Function SetArcDirection Lib "gdi32" Alias "SetArcDirection" (ByVal hdc As Long, ByVal ArcDirection As Long) As Long
说明
设置圆弧的描绘方向
返回值
Long，如执行成功，返回原始的圆弧方向；零意味着出错
参数表
参数 | 类型及说明
hdc | Long，要设置的设备场景
ArcDirection | Long，AD_CLOCKWISE （顺时针）或 AD_COUNTERCLOCKWISE （逆时针）
注解
可应用于下列函数：Arc， ArcTo， Chord， Ellipse， Pie， Rectangle 和 RoundRect


SetBkColor
VB声明
Declare Function SetBkColor Lib "gdi32" Alias "SetBkColor" (ByVal hdc As Long, ByVal crColor As Long) As Long
说明
为指定的设备场景设置背景颜色。背景颜色用于填充阴影刷子、虚线画笔以及字符（如背景模式为OPAQUE）中的空隙。也在位图颜色转换期间使用。参考SetBkMode
返回值
Long，前一个背景色，CLR_INVALID表示出错
参数表
参数 | 类型及说明
hdc | Long，设备场景的句柄
crColor | Long，新背景颜色的RGB颜色值
注解
背景实际是设备能够显示的最接近于 crColor 的颜色


SetBkMode
VB声明
Declare Function SetBkMode Lib "gdi32" Alias "SetBkMode" (ByVal hdc As Long, ByVal nBkMode As Long) As Long
说明
指定阴影刷子、虚线画笔以及字符中的空隙的填充方式
返回值
Long，前一个背景模式的值
参数表
参数 | 类型及说明
hdc | Long，设备场景的句柄
nBkMode | Long，下述常数之一：
 | OPAQUE | 用当前的背景色填充虚线画笔、阴影刷子以及字符的空隙
 | TRANSPARENT | 透明处理，即不作上述填充
注解
背景模式不会影响用扩展画笔描绘的线条


SetBrushOrgEx
VB声明
Declare Function SetBrushOrgEx Lib "gdi32" Alias "SetBrushOrgEx" (ByVal hdc As Long, ByVal nXOrg As Long, ByVal nYOrg As Long, lppt As POINTAPI) As Long
说明
为指定的设备场景设置当前选定刷子的起点
返回值
Long，非零表示成功，零表示失败。会设置GetLastError
参数表
参数 | 类型及说明
hdc | Long，设备场景的句柄
nXOrg,nYOrg | Long，刷子的新起点，采用设备坐标表示。取值范围在0-7之间（不需要更大的值，因为windows95下最大的刷子的尺寸是8×8；而这个函数在NT下是不必要的）
lppt | POINTAPI，用于装载前一个刷子的起点
注解
Windows NT会自动设置刷子的起点，所以不应在NT下使用这个函数
在vb里使用
注意完成以后一定要将设备场景的刷子起点设为0，0。既可明确指定坐标，也可用RestoreDC函数恢复恢复原始的DC

Top


SetEnhMetaFileBits
VB声明
Declare Function SetEnhMetaFileBits Lib "gdi32" Alias "SetEnhMetaFileBits" (ByVal cbBuffer As Long, lpData As Byte) As Long
说明
用指定内存缓冲区内包含的数据创建一个增强型图元文件。在从磁盘读入原始的图元文件数据后（最开始是由GetEnhMetaFileBits函数获得的），通常再用这个函数创建一个图元文件
返回值
Long，如执行成功，返回一个增强型图元文件句柄；否则返回零
参数表
参数 | 类型及说明
cbBuffer | Long，lpData数组的长度
lpData | Byte，一个字节数组的头一个条目，这个数组内包含了图元文件数据


SetMetaFileBitsEx
VB声明
Declare Function SetMetaFileBitsEx Lib "gdi32" Alias "SetMetaFileBitsEx" (ByVal nSize As Long, lpData As Byte) As Long
说明
用包含在指定内存缓冲区内的数据结构创建一个图元文件。在从磁盘读入原始的图元文件数据后（最开始是由GetMetaFileBitsEx函数获得的），通常再用这个函数创建一个图元文件
返回值
Long，如执行成功，返回一个标准图元文件的句柄；零意味着失败
参数表
参数 | 类型及说明
nSize | Long，lpData数组的长度
lpData | Byte，一个字节数组的头一个条目，这个数组内包含了图元文件数据


SetMiterLimit
VB声明
Declare Function SetMiterLimit& Lib "gdi32" (ByVal hdc As Long, ByVal eNewLimit As Single, peOldLimit As Single)
说明
设置设备场景当前的斜率限制
返回值
Long，非零表示成功，零表示失败。会设置GetLastError
参数表
参数 | 类型及说明
hdc | Long，欲设置的设备场景
eNewLimit | Single，新的斜率限制
peOldLimit | Single，用于容纳原始斜率限制的一个单精度值
注解
斜率限制是指斜角长度与线宽之间的比率
其他
请看vb的api文本查看器里的声明：Function SetMiterLimit Lib "gdi32" Alias "SetMiterLimit" (ByVal hdc As Long, ByVal eNewLimit As Double, peOldLimit As Double) As Long


SetPixel
VB声明
Declare Function SetPixel Lib "gdi32" Alias "SetPixel" (ByVal hdc As Long, ByVal x As Long, ByVal y As Long, ByVal crColor As Long) As Long
说明
在指定的设备场景中设置一个像素的RGB值
返回值
Long，指定点的实际RGB颜色。如设备不支持指定的准确颜色，则返回的值会与crColor有所不同。如指定的点不能设置，则会返回-1（例如，指定的点可能位于设备场景剪切区外面）。会设置GetLastError
参数表
参数 | 类型及说明
hdc | Long，设备场景的句柄
x,y | Long，要设置的点，用逻辑坐标表示
crColor | Long，指定像素的新RGB颜色
注解
可用GetDeviceCaps判断一个设备是否支持这个函数


SetPixelV
VB声明
Declare Function SetPixelV Lib "gdi32" Alias "SetPixelV" (ByVal hdc As Long, ByVal x As Long, ByVal y As Long, ByVal crColor As Long) As Long
说明
在指定的设备场景中设置一个像素的RGB值
返回值
Long，非零表示成功，零表示失败。会设置GetLastError
参数表
参数 | 类型及说明
hdc | Long，一个设备场景的句柄
x,y | Long，要设置的点，用逻辑坐标表示
crColor | Long，指定像素的新RGB颜色值
注解
这个函数比SetPixel快一些，但不会返回设置的实际颜色。可用GetDeviceCaps判断设备是否支持这个函数


SetPolyFillMode
VB声明
Declare Function SetPolyFillMode Lib "gdi32" Alias "SetPolyFillMode" (ByVal hdc As Long, ByVal nPolyFillMode As Long) As Long
说明
设置多边形的填充模式。参考GetPolyFillMode函数的注解
返回值
Long，如执行成功，返回前一种多边形填充模式。零表示出错
参数表
参数 | 类型及说明
hdc | Long，设备场景的句柄
nPolyFillMode | Long，下述常数之一：
 | ALTERNATE | 交替填充
 | WINDING | 根据绘图方向填充


SetROP2
VB声明
Declare Function SetROP2 Lib "gdi32" Alias "SetROP2" (ByVal hdc As Long, ByVal nDrawMode As Long) As Long
说明
设置指定设备场景的绘图模式。与vb的DrawMode属性完全一致
返回值
Long，如执行成功，返回前一个绘图模式；零表示出错
参数表
参数 | 类型及说明
hdc | Long，设备场景的句柄
nDrawMode | Long，设备场景的新绘图模式。参考GetROP2函数的绘图模式常数表
注解
在vb里，为一个vb窗体或图片控件使用设备场景的时候，这个函数会设置DrawMode属性


SetWinMetaFileBits
VB声明
Declare Function SetWinMetaFileBits Lib "gdi32" Alias "SetWinMetaFileBits" (ByVal cbBuffer As Long, lpbBuffer As Byte, ByVal hdcRef As Long, lpmfp As METAFILEPICT) As Long
说明
将一个标准Windows图元文件转换成增强型图元文件
返回值
Long，如执行成功，返回一个增强型图元文件（位于内存中）的句柄；零意味着出错
参数表
参数 | 类型及说明
cbBuffer | Long，lpbBuffer数组的长度
lpbBuffer | Byte，一个字节数组的头一个条目，这个数组包含了标准图元文件数据。数据是用GetMetaFileBitsEx或GetWinMetaFileBits函数获得的
hdcRef | Long，用于决定原始格式及图元文件分辨率的一个参考设备场景。可以为零，表示采用显示器分辨率
lpmfp | METAFILEPICT，定义图元文件附加参考信息的一个结构。可设为NULL（用一个别名传递NULL值，将参数定义成ByVal As Long）；此时，会假定使用当前显示器的MM_ANISOTROPIC映射模式


StrokeAndFillPath
VB声明
Declare Function StrokeAndFillPath Lib "gdi32" Alias "StrokeAndFillPath" (ByVal hdc As Long) As Long
说明
针对指定的设备场景，关闭路径上打开的所有区域。用当前画笔描绘路径的一个轮廓，并用当前刷子填充路径
返回值
Long，TRUE（非零）表示成功，否则返回零。会将GetLastError设置为下述值：ERROR_CAN_NOT_COMPLETE，ERROR_INVALID_PARAMETER，ERROR_NOT_ENOUGH_MEMORY
参数表
参数 | 类型及说明
hdc | Long，包含了要描绘和填充的那个路径的一个设备场景
注解
函数执行完后记住清除路径


StrokePath
VB声明
Declare Function StrokePath Lib "gdi32" Alias "StrokePath" (ByVal hdc As Long) As Long
说明
用当前画笔描绘一个路径的轮廓。打开的图形不会被这个函数关闭
返回值
Long，TRUE（非零）表示成功，否则返回零。会将GetLastError设置为下述值：ERROR_CAN_NOT_COMPLETE，ERROR_INVALID_PARAMETER，ERROR_NOT_ENOUGH_MEMORY
参数表
参数 | 类型及说明
hdc | Long，包含了要描绘和填充的那个路径的一个设备场景


UnrealizeObject
VB声明
Declare Function UnrealizeObject Lib "gdi32" Alias "UnrealizeObject" (ByVal hObject As Long) As Long
说明
将一个刷子对象选入设备场景之前，如刷子的起点准备用SetBrushOrgEx修改，则必须先调用本函数
返回值
Long，TRUE（非零）表示成功，否则返回零。会设置GetLastError
参数表
参数 | 类型及说明
hObject | Long，刷子或逻辑调色板的句柄
注解
Windows NT 会自动跟踪刷子的起点，所以如果对象是一个刷子，那么这个函数不会产生任何影响。在那个时候，它会返回TRUE


WidenPath
VB声明
Declare Function WidenPath Lib "gdi32" Alias "WidenPath" (ByVal hdc As Long) As Long
说明
根据选定画笔的宽度，重新定义当前选定的路径。例如，假设路径描述了一个封闭的矩形。面积为10×10像素，而且用一个3像素宽的画笔描绘。此时，加宽后的路径将由一个12×12的矩形构成
返回值
Long，TRUE（非零）表示成功，否则返回零。会将GetLastError设置为下述值：ERROR_CAN_NOT_COMPLETE，ERROR_INVALID_PARAMETER，ERROR_NOT_ENOUGH_MEMORY
参数表
参数 | 类型及说明
hdc | Long，包含路径的一个设备的句柄
注解
所有贝塞尔曲线都会由这个函数转换成线段


AbortDoc
VB声明
Declare Function AbortDoc Lib "gdi32" Alias "AbortDoc" (ByVal hdc As Long) As Long
说明
取消一份文档的打印。自上次调用StartDoc函数以来的所有输出都会被取消。如对打印机进行了配置，令其在正式打印文档之前先在打印缓冲区内对文档进行排队，那么文档的任何一部分都不会打印；否则，就可能出现文档打印到一半被取消的情况
返回值
Long，大于零表示成功，SP_ERROR表示失败。会设置GetLastError
参数表
参数 | 类型及说明
hdc | Long，设备场景的句柄
在VB里使用
如将这个函数用于由打印机对象的hDC属性指定的打印机设备场景，那么它可以正常发挥作用。然而，倘若之后调用了EndDoc方法，却有可能得到一条打印机出错消息。当大家结合API打印函数与VB打印机方法的时候，强烈建议对打印机的错误进行跟踪捕获；或干脆避免这种结合


AbortPrinter
VB声明
Declare Function AbortPrinter Lib "winspool.drv" Alias "AbortPrinter" (ByVal hPrinter As Long) As Long
说明
删除与一台打印机关联在一起的缓冲文件
返回值
Long，非零表示成功，零表示失败。会设置GetLastError
参数表
参数 | 类型及说明
hPrinter | Long，一个已打开的打印机对象的句柄（用OpenPrinter获得）
注解
如打印机没有使用后台打印缓冲文件，那么该函数将无法发挥作用。例如，后台打印程序可将数据直接发给打印机


AddForm
VB声明
Declare Function AddForm& Lib "spoolss.dll" Alias "AddFormA" (ByVal hPrinter As Long, ByVal Level As Long, pForm As FORM_INFO_1)
说明
为打印机的表单列表添加一个新表单。“表单”描述了一个页面大小及布局，提供了一种与设备无关的机制，可实现Windows NT下的纸张尺寸的标准化
返回值
Long，非零表示成功，零表示失败。会设置GetLastError
参数表
参数 | 类型及说明
hPrinter | Long，一个已打开的打印机对象的句柄（用OpenPrinter获得）
Level | Long，设为1
pForm | FORM_INFO_1，对表单进行描述的一个结构
适用平台
Windows NT
其他
在VB的API文本查看器里复制的声明如下： Declare Function AddForm Lib "winspool.drv" Alias "AddFormA" (ByVal hPrinter As Long, ByVal Level As Long, pForm As Byte) As Long


AddJob
VB声明
Declare Function AddJob Lib "winspool.drv" Alias "AddJobA" (ByVal hPrinter As Long, ByVal Level As Long, pData As Byte, ByVal cdBuf As Long, pcbNeeded As Long) As Long
说明
用于获取一个有效的路径名，以便用它为作业创建一个后台打印文件。它也会为作业分配一个作业编号
返回值
Long，非零表示成功，零表示失败。会设置GetLastError
参数表
参数 | 类型及说明
hPrinter | Long，一个已打开的打印机对象的句柄（用OpenPrinter获得）
Level | Long，设为1
pData | Byte，缓冲区会引用一个ADDJOB_INFO_1结构
cdBuf | Long，pData缓冲区中的字符数量
pcbNeeded | Long，指向一个Long型变量的指针，该变量用于保存请求的缓冲区长度，或者实际读入的字节数量
注解
调用这个函数以后，可创建指定的文件，向其中写入数据，然后用API函数ScheduleJob令其将数据发给打印机


AddMonitor
VB声明
Declare Function AddMonitor Lib "winspool.drv" Alias "AddMonitorA" (ByVal pName As String, ByVal Level As Long, pMonitors As Byte) As Long
说明
为系统添加一个打印机监视器
返回值
Long，非零表示成功，零表示失败。会设置GetLastError
参数表
参数 | 类型及说明
pName | String，欲在其中安装监视器的一个服务器的名字。对于本地（本机）监视器，请设置成vbNullString
Level | Long，设为2
pMonitors | Byte，指定一个结构中的第一个字节。那个结构又包含了一个MONITOR_INFO_2结构


AddPort
VB声明
Declare Function AddPort Lib "winspool.drv" Alias "AddPortA" (ByVal pName As String, ByVal hwnd As Long, ByVal pMonitorName As String) As Long
说明
启动“添加端口”对话框，允许用户在系统可用端口列表中加入一个新端口
返回值
Long，非零表示成功，零表示失败。会设置GetLastError
参数表
参数 | 类型及说明
pName | String，欲在其中安装端口的一个服务器的名字。对本地（本机）端口，请设置成vbNullString
hwnd | Long，指定AddPort对话框的父窗口的句柄
pMonitorName | String，用于指定端口的一个监视器的名称


AddPrinter
VB声明
Declare Function AddPrinter Lib "winspool.drv" Alias "AddPrinterA" (ByVal pName As String， ByVal Level As Long， pPrinter As Any) As Long
说明
在系统中添加一台新打印机
返回值
Long，如执行成功，返回一台新打印机的句柄；零表示失败。会设置GetLastError
参数表
参数 | 类型及说明
pName | String，欲在其中安装打印机的一个服务器的名字。对本地打印机，设为vbNullString
Level | Long，设为2
pPrinter | Any，指定一个缓冲区的第一个条目。该缓冲区包含了一个PRINTER_INFO_2结构。结构中的下述字段会设为有效值：pPrinterName， pPortName， pDriverName， pPrintProcessor 和 pDataType。也可象PRINTER_INFO_2那样设置pPrinter字段。也可以设置下述字段：Attributes， DefaultPriority， pComment， pDevMode， pLocation， pParameters， Priority， pSecurityDescriptor， pSepFile， pShareName， StartTime 和 UntilTime。而其他字段都应置空
注解
在NT下，调用者必须有足够的权限对指定服务器上的打印机进行配置


AddPrinterConnection
VB声明
Declare Function AddPrinterConnection Lib "winspool.drv" Alias "AddPrinterConnectionA" (ByVal pName As String) As Long
说明
连接指定的打印机
返回值
Long，非零表示成功，零表示失败。会设置GetLastError
参数表
参数 | 类型及说明
pName | String，网络上的一台打印机的名字


AddPrinterDriver
VB声明
Declare Function AddPrinterDriver Lib "winspool.drv" Alias "AddPrinterDriverA" (ByVal pName As String, ByVal Level As Long, pDriverInfo As Any) As Long
说明
为指定的系统添加一个打印驱动程序
返回值
Long，非零表示成功，零表示失败。会设置GetLastError
参数表
参数 | 类型及说明
pName | String，指定要在其中安装驱动程序的一台服务器的名字。对于本地系统，设为vbNullString
Level | Long，2或3（2仅适用于NT 3.51）
pDriverInfo | Any，指定一个缓冲区，其中包含了一个DRIVER_INFO_2 或 DRIVER_INFO_3结构，它们指定了要添加的驱动程序
注解
在调用这个函数之前，所有驱动程序文件都必须位于适当的目录


AddPrintProcessor
VB声明
Declare Function AddPrintProcessor Lib "winspool.drv" Alias "AddPrintProcessorA" (ByVal pName As String, ByVal pEnvironment As String, ByVal pPathName As String, ByVal pPrintProcessorName As String) As Long
说明
为指定的系统添加一个打印处理器
返回值
Long，非零表示成功，零表示失败。会设置GetLastError
参数表
参数 | 类型及说明
pName | String，指定要在其中安装驱动程序的一台服务器的名字。对于本地系统，设为vbNullString
pEnvironment | String，要在其中添加打印处理器的一个环境（如“Windows NT x86”）。对于当前（本地）系统环境，则设为vbNullString
pPathName | String，包含了打印管理器的一个文件的名字。文件必须位于打印处理器目录中
pPrintProcessorName | String，打印处理器的名字


AddPrintProvidor
VB声明
Declare Function AddPrintProvidor Lib "winspool.drv" Alias "AddPrintProvidorA" (ByVal pName As String, ByVal Level As Long, pProvidorInfo As Byte) As Long
说明
为系统添加一个打印供应商
返回值
Long，非零表示成功，零表示失败。会设置GetLastError
参数表
参数 | 类型及说明
pName | String，指出要在其中安装打印供应商的一台服务器的名字。对于本地系统，设为vbNullString
Level | Long，设为1
pProvidorInfo | Byte，包含了一个PROVIDOR_INFO_1结构的缓冲区


AdvancedDocumentProperties
VB声明
Declare Function AdvancedDocumentProperties Lib "winspool.drv" Alias "AdvancedDocumentPropertiesA" (ByVal hwnd As Long, ByVal hPrinter As Long, ByVal pDeviceName As String, pDevModeOutput As DEVMODE, pDevModeInput As DEVMODE) As Long
说明
启动打印机文档设置对话框。这个函数几乎完全等价于调用DocumentProperties函数，同时将fMode设为DM_IN_PROMPT。请参考对DocumentProperties函数的说明，了解这个函数的详细情况
返回值
Long，非零表示成功，零表示失败。会设置GetLastError
注解

将pDevModeOutput设为0后可得到要求的DEVMODE结构的大小


ClosePrinter
VB声明
Declare Function ClosePrinter Lib "winspool.drv" Alias "ClosePrinter" (ByVal hPrinter As Long) As Long
说明
关闭一个打开的打印机对象
返回值
Long，非零表示成功，零表示失败。会设置GetLastError
参数表
参数 | 类型及说明
hPrinter | Long，一个打开的打印机对象的句柄


ConfigurePort
VB声明
Declare Function ConfigurePort Lib "winspool.drv" Alias "ConfigurePortA" (ByVal pName As String, ByVal hwnd As Long, ByVal pPortName As String) As Long
说明
针对指定的端口，启动一个端口配置对话框
返回值
Long，非零表示成功，零表示失败。会设置GetLastError
参数表
参数 | 类型及说明
pName | String，欲对其端口进行配置的一台服务器的名字。对于本地系统，请设为vbNullString
hwnd | Long，对话框父窗口的句柄
pPortName | String，端口名


ConnectToPrinterDlg
VB声明
Declare Function ConnectToPrinterDlg Lib "winspool.drv" Alias "ConnectToPrinterDlg" (ByVal hwnd As Long, ByVal flags As Long) As Long
说明
启动连接打印机对话框，用它同访问网络的打印机连接
返回值
Long，已连接或选择的打印机的句柄，零意味着失败或用户取消了操作
参数表
参数 | 类型及说明
hwnd | Long，对话框的父窗口句柄
flags | Long，保留，设为零


DeleteForm
VB声明
Declare Function DeleteForm Lib "winspool.drv" Alias "DeleteFormA" (ByVal hPrinter As Long, ByVal pFormName As String) As Long
说明
从打印机可用表单列表中删除一个表单
返回值
Long，非零表示成功，零表示失败。会设置GetLastError
参数表
参数 | 类型及说明
hPrinter | Long，一个打开的打印机的名字（用OpenPrinter获得）
pFormName | String，欲删除的表单的名字
适用平台
Windows NT
注解
不能删除内建表单。请参考AddForm函数了解进一步的情况


DeleteMonitor
VB声明
Declare Function DeleteMonitor Lib "winspool.drv" Alias "DeleteMonitorA" (ByVal pName As String, ByVal pEnvironment As String, ByVal pMonitorName As String) As Long
说明
删除指定的打印监视器
返回值
Long，非零表示成功，零表示失败。会设置GetLastError
参数表
参数 | 类型及说明
pName | String，监视器所在的服务器的名字。用vbNullString指定本地系统
pEnvironment | String，欲在其中删除监视器的环境。用vbNullString指定当前系统
pMonitorName | String，欲删除监视器的名字
注解
参考AddMonitor函数，了解进一步的信息


DeletePort
VB声明
Declare Function DeletePort Lib "winspool.drv" Alias "DeletePortA" (ByVal pName As String, ByVal hwnd As Long, ByVal pPortName As String) As Long
说明
启动“删除端口”对话框，允许用户从当前系统删除一个端口
返回值
Long，非零表示成功，零表示失败。会设置GetLastError
参数表
参数 | 类型及说明
pName | String，欲在其中删除端口的服务器的名字。vbNullString表示使用本地端口
hwnd | Long，DeletePort对话框的父窗口的句柄
pPortName | String，欲删除的端口的名字
注解
如打印机已连接到端口，则函数执行会失败


DeletePrinter
VB声明
Declare Function DeletePrinter Lib "winspool.drv" Alias "DeletePrinter" (ByVal hPrinter As Long) As Long
说明
将指定的打印机标志为从系统中删除
返回值
Long，非零表示成功，零表示失败。会设置GetLastError
参数表
参数 | 类型及说明
hPrinter | Long，已打开的打印机对象的句柄
注解
除非所有待决的打印作业都已完成，否则打印机不会实际删除


DeletePrinterConnection
VB声明
Declare Function DeletePrinterConnection Lib "winspool.drv" Alias "DeletePrinterConnectionA" (ByVal pName As String) As Long
说明
删除与指定打印机的连接
返回值
Long，非零表示成功，零表示失败。会设置GetLastError
参数表
参数 | 类型及说明
pName | String，要删除的打印机连接


DeletePrinterDriver
VB声明
Declare Function DeletePrinterDriver Lib "winspool.drv" Alias "DeletePrinterDriverA" (ByVal pName As String, ByVal pEnvironment As String, ByVal pDriverName As String) As Long
说明
从系统删除一个打印机驱动程序
返回值
Long，非零表示成功，零表示失败。会设置GetLastError
参数表
参数 | 类型及说明
pName | String，服务器的名字。针对本地驱动程序设为vbNullString
pEnvironment | String，指定欲在其中删除驱动程序的一个环境（如“Windows NT x86”）。对于当前（本地）系统环境，则设为vbNullString
pDriverName | String，要删除的驱动程序的名字
注解
驱动程序文件不会从系统物理性的删除，只是不能继续使用


DeletePrintProcessor
VB声明
Declare Function DeletePrintProcessor Lib "winspool.drv" Alias "DeletePrintProcessorA" (ByVal pName As String, ByVal pEnvironment As String, ByVal pPrintProcessorName As String) As Long
说明
从指定系统删除一个打印处理器
返回值
Long，非零表示成功，零表示失败。会设置GetLastError
参数表
参数 | 类型及说明
pName | String，服务器的名字。针对本地处理器设为vbNullString
pEnvironment | String，指定欲删除打印处理器的一个环境（如“Windows NT x86”）。对于当前（本地）系统环境，则设为vbNullString
pPrintProcessorName | String，要删除的打印处理器的名字


DeletePrintProvidor
VB声明
Declare Function DeletePrintProvidor Lib "winspool.drv" Alias "DeletePrintProvidorA" (ByVal pName As String, ByVal pEnvironment As String, ByVal pPrintProvidorName As String) As Long
说明
从系统中删除一个打印供应商
返回值
Long，非零表示成功，零表示失败。会设置GetLastError
参数表
参数 | 类型及说明
pName | String，服务器的名字。针对本地服务器设为vbNullString
pEnvironment | String，指定欲删除打印供应商的一个环境（如“Windows NT x86”）。对于当前（本地）系统环境，则设为vbNullString
pPrintProvidorName | String，要删除的打印供应商的名字


DeviceCapabilities
VB声明
Declare Function DeviceCapabilities Lib "winspool.drv" Alias "DeviceCapabilitiesA" (ByVal lpDeviceName As String, ByVal lpPort As String, ByVal iIndex As Long, ByVal lpOutput As String, lpDevMode As DEVMODE) As Long
说明
利用这个函数可获得与一个设备的能力有关的信息
返回值
Long，由iIndex参数的值决定，请参考设备能力常数表。如函数执行失败，或打印机的驱动程序不支持这个函数，那么函数就会返回-1
参数表
参数 | 类型及说明
lpDeviceName | String，设备名
lpPort | String，指定连接了指定设备的那个端口
iIndex | Long，欲测试的能力。请参考设备能力常数表，其中列出了可选的值
lpOutput | String，指定一个缓冲区的地址，能力数据会装载到这个缓冲区中。在设备能力常数表中，针对每个fwCapabilities值的缓冲区的内容都进行了总结。这个表格同时总结了应将参数设为vbNullString的一些情况
lpDevMode | DEVMODE，一个DEVMODE结构的地址，或者为零。如指定了那个结构，函数会根据这个结构的设置来接收信息。如果为零，函数就会根据打印机驱动程序的默认值接收信息
注解
使用lpOutput时要注意：在许多时候，这个函数会返回一系列名称的列表。例如，假设将fwCapabilities标志设为DC_PAPERNAMES，那么就会得到一系列支持的纸张尺寸的名字。在这种情况下，lpOutput缓冲区应该是一个String变量，而且根据设备能力常数表的总结预先初始化成合适的长度。函数会在缓冲区中载入所有名称，而且每个名称在字串中都占用固定的空间。所以，我们完全能用Mid函数提取出每一个条目。 某些情况下，lpOutput需要指向一个数值数组的指针
设备能力常数表
fwCapabilities | 说明
DC_BINADJUST | 返回来自API32.TXT的某个常数。它应带有 DCBA_ 前缀，用于指定当前纸张源的正确纸张方向。仅适用于Win95
DC_BINNAMES | 如lpOutput为零，就返回由打印机支持的纸匣数量。否则，lpOutput应指向一个缓冲区（长度至少为24×纸匣数）。每24个字节都会保存一个纸匣的NULL中止名称
DC_BINS | 如lpOutput为零，就返回由打印机支持的纸匣数量。否则，lpOutput应指向一个整数数组（长度至少为纸匣数量）。这些值对应于为DEVMODE结构定义的 DMBIN_??? 常数
DC_COPIES | 返回打印机能够打印的最大副本数量
DC_DATATYPE_PRODUCED | 接收由打印机支持的一系列数据类型。这些类型可作为由StartDoc函数使用的DOCINFO结构的输出数据类型提供。如这个函数返回-1，那么支持的唯一数据类型就是 RAW 。仅适用于Win95
DC_DRIVER | 返回打印机驱动程序的版本号
DC_DUPLEX | 如打印机有双面打印功能，就返回1；否则返回0
DC_EMF_COMPLIANT | 如打印机能直接支持增强型图元文件，就返回TRUE。仅适用于Win95
DC_ENUMRESOLUTIONS | 如lpOutput为零，就返回由打印机支持的分辨率数量。否则，lpOutput应该是一个指向Long型数组的指针。该数组至少应包含（2×分辨率数量）个条目。每对条目都反映出水平和垂直分辨率（以每英寸的点数——dpi——为单位）
DC_EXTRA | 返回与具体设备有关的特殊字节，它们要为这个设备追加到DEVMODE结构后面
DC_FIELDS | 针对设备默认的DEVMODE数据结构，返回dmFields字段的值
DC_FILEDEPENDENCIES | 如lpOutput为零，就返回打印机驱动程序要求的文件数量。否则，lpOutput应指向一个至少有（64×文件数）个字节的缓冲区。每64个字节都会保存一个请求文件的NULL中止名称
DC_MAXEXTENT | 返回一个Long型值，其中包含打印机支持的最大纸张长度和宽度。其中，低字（16位）包含的是宽度数据。它们是由dmPaperWidth 和 dmPaperLength这两个DEVMODE字段的最大值
DC_MINEXTENT | 返回一个Long型值，其中包含打印机支持的最小纸张长度和宽度。其中，低字（16位）包含的是宽度数据。它们是由dmPaperWidth 和 dmPaperLength这两个DEVMODE字段的最大值
DC_ORIENTATION | 返回横向模式和纵向模式间的旋转度数。如果是零，表示驱动程序不支持横向打印模式。对于激光打印机，90度是最常见的一个设置；而对于点阵式打印机，一般都是270度
DC_PAPERNAMES | 如lpOutput为零，就返回由打印机支持的纸张尺寸数量。否则，lpOutput就应指向一个缓冲区（长度至少为64×纸张尺寸种数）。每64个字节都会装载一种支持的纸张尺寸的空中止名称
DC_PAPERS | 如lpOutput为零，就返回由打印机支持的纸张尺寸数量。否则，lpOutput就应指向一个整数数组（长度至少为纸张的尺寸种数）。值对应于为DEVMODE结构定义的 DMPAPER_??? 常数
DC_SIZE | 返回打印机DEVMODE数据结构的dmSize字段
DC_TRUETYPE | 下述常数之一：
 | DCTT_BITMAP | 设备能将TrueType字体当作图形打印
 | DCTT_DOWNLOAD | 设备能下载TrueType字体
 | DCTT_OUTLINE | 设备能下载轮廓型TrueType字体
 | DCTT_SUBDEV | 设备能取代与对应的TrueType字体兼容的内建字体
DC_VERSION | 返回设备驱动程序的规格版本号

Top


DocumentProperties
VB声明
Declare Function DocumentProperties& Lib "winspool.dll" Alias "DocumentPropertiesA" (ByVal hwnd As Long, ByVal hPrinter As Long, ByVal pDeviceName As String, ByVal pDevModeOutput As Long, ByVal pDevModeInput As Long, ByVal fMode As Long)
说明
这是一个灵活的打印机配置控制函数。该函数定义了两个DEVMODE结构，可在创建一个设备场景时为单个应用程序改变打印机设置。甚至能在文档打印期间改变打印机设置
返回值
Long，由fMode字段的值决定。如下所示： 若fMode为零，这个函数就返回DEVMODE结构的尺寸。注意这个结构可能比类型定义文件API32.TXT中规定的尺寸大 若fMode设置了DM_IN_PROMPT标志，那么打印机设置对话框就会出现。在这种情况下，返回值将是常数IDOK 或 IDCANCEL——具体由用户关闭对话框时按下的按钮决定 在其他任何情况下，该函数执行成功后会返回IDOK。而在任何情况下，如函数执行失败，都会返回一个负数
参数表
参数 | 类型及说明
hwnd | Long，对话框父窗口的句柄。这通常是当前的活动窗体
hPrinter | Long，一个已打开的打印机对象的句柄
pDeviceName | String，打印机的名字
pDevModeOutput | Long，指向一个DEVMODE数据结构的指针。请参考DocumentProperties运行模式表。注意这个指针必须引用一个足够大的缓冲区，它能同时容下专用打印机驱动程序数据，以及标准的DEVMODE结构
pDevModeInput | Long，指向一个DEVMODE数据结构的指针。请参考DocumentProperties运行模式表
fMode | Long，决定这个函数运作模式的一个标志。请参考DocumentProperties运行模式表
DocumentProperties运行模式表
常数标志 | 运行模式
无 | 不使用pDevModeInput。pDevModeOutput可能为零。函数会返回由这两个参数引用的DEVMODE结构需要的大小
DM_IN_BUFFER | pDevModeInput缓冲区应载入打印机驱动程序的新位置。在调用这个函数判断应使用结构中的哪些字段前，应设置结构的dmFields字段
DM_IN_PROMPT | 显示出打印机设置对话框，以便用户指定输出时采用的打印机设置。如指定了DM_IN_BUFFER，那么在显示对话框前，输入缓冲区中指定的任何字段都会与当前的打印机DEVMODE结构合并起来
DM_OUT_BUFFER | 令打印机设置信息输出到由pDevModeOutput参数指定的缓冲区。这些设置由两个输入标志决定，而且由此反映了原始的输入结构、当前的打印机设置以及用户在打印机设置对话框中作出的任何修改。如未指定这个标志，lpdmOutput参数就可以设为零

Top


EndDocAPI
VB声明
Declare Function EndDocAPI& Lib "gdi32" Alias "EndDoc" (ByVal hDC As Long)
说明
结束一个成功的打印作业
返回值
Long，大于零表示成功，小于或等于零表示失败。会设置GetLastError
参数表
参数 | 类型及说明
hDC | Long，设备场景的句柄


EndDocPrinter
VB声明
Declare Function EndDocPrinter Lib "winspool.drv" Alias "EndDocPrinter" (ByVal hPrinter As Long) As Long
说明
在后台打印程序的级别指定一个文档的结束
返回值
Long，非零表示成功，零表示失败。会设置GetLastError
参数表
参数 | 类型及说明
hPrinter | Long，一个已打开的打印机的句柄（用用OpenPrinter获得）
注解
在应用程序的级别并非特别有用。后台打印程序用它标识打印作业中一个文档的结束


EndPage
VB声明
Declare Function EndPage Lib "gdi32" Alias "EndPage" (ByVal hdc As Long) As Long
说明
用这个函数完成一个页面的打印，并准备设备场景，以便打印下一个页
返回值
Long，大于零表示成功，小于或等于零表示失败。会设置GetLastError
参数表
参数 | 类型及说明
hdc | Long，设备场景的句柄
在VB里使用
使用VB的打印机对象时，应该使用NewPage方法来代替这个函数
注解
这个函数的执行可能相当耗时——具体取决于正在进行的绘图操作的复杂程度、使用什么操作系统以及打印机与本机连接还是与远程主机连接。为了让用户能随时取消打印，在执行期间，这个函数会定时调用由API调用SetAbortProc指定的取消例程


EndPagePrinter
VB声明
Declare Function EndPagePrinter Lib "winspool.drv" Alias "EndPagePrinter" (ByVal hPrinter As Long) As Long
说明
指定一个页在打印作业中的结尾
返回值
Long，非零表示成功，零表示失败。会设置GetLastError
参数表
参数 | 类型及说明
hPrinter | Long，一个已打开的打印机对象的句柄（用OpenPrinter获得）
注解
在应用程序的级别并非特别有用，后台打印程序用它在实际打印机数据中标识一个页的结尾


EnumForms
VB声明
Declare Function EnumForms Lib "winspool.drv" Alias "EnumFormsA" (ByVal hPrinter As Long, ByVal Level As Long, pForm As Byte, ByVal cbBuf As Long, pcbNeeded As Long, pcReturned As Long) As Long
说明
枚举一台打印机可用的表单
返回值
Long，非零表示成功，零表示失败。会设置GetLastError
参数表
参数 | 类型及说明
hPrinter | Long，一个已打开的打印机对象的句柄（用OpenPrinter获得）
Level | Long，设为1
pForm | Byte，一个包含FORM_INFO_1结构的缓冲区
cbBuf | Long，pForm缓冲区中的字符数量
pcbNeeded | Long，指向一个Long型变量的指针，该变量用于保存请求的缓冲区长度，或者实际读入的字节数量
pcReturned | Long，载入缓冲区的结构数量（用于那些能返回多个结构的函数）
适用平台
Windows NT
注解
参考AddForm函数，了解进一步的情况


EnumJobs
VB声明
Declare Function EnumJobs Lib "winspool.drv" Alias "EnumJobsA" (ByVal hPrinter As Long, ByVal FirstJob As Long, ByVal NoJobs As Long, ByVal Level As Long, pJob As Byte, ByVal cdBuf As Long, pcbNeeded As Long, pcReturned As Long) As Long
说明
枚举打印队列中的作业
返回值
Long，非零表示成功，零表示失败。会设置GetLastError
参数表
参数 | 类型及说明
hPrinter | Long，一个已打开的打印机对象的句柄（用OpenPrinter获得）
FirstJob | Long，作业列表中要枚举的第一个作业的索引（注意编号从0开始）
NoJobs | Long，要枚举的作业数量
Level | Long，1或2
pJob | Byte，包含 JOB_INFO_1 或 JOB_INFO_2 结构的缓冲区
cbBuf | Long，pJob缓冲区中的字符数量
pcbNeeded | Long，指向一个Long型变量的指针，该变量用于保存请求的缓冲区长度，或者实际读入的字节数量
pcReturned | Long，载入缓冲区的结构数量（用于那些能返回多个结构的函数）
适用平台


EnumMonitors
VB声明
Declare Function EnumMonitors Lib "winspool.drv" Alias "EnumMonitorsA" (ByVal pName As String, ByVal Level As Long, pMonitors As Byte, ByVal cbBuf As Long, pcbNeeded As Long, pcReturned As Long) As Long
说明
枚举可用的打印监视器
返回值
Long，非零表示成功，零表示失败。会设置GetLastError
参数表
参数 | 类型及说明
pName | String，服务器的名字。用vbNullString指定本地系统
Level | Long，设为1
pMonitors | Byte，包含MONINTOR_INFO_1结构的缓冲区
cbBuf | Long，pMonitors缓冲区中的字符数量
pcbNeeded | Long，指向一个Long型变量的指针，该变量用于保存请求的缓冲区长度，或者实际读入的字节数量
pcReturned | Long，载入缓冲区的结构数量（用于那些能返回多个结构的函数）
注解
MONINTOR_INFO_1结构有一个字段包含了打印监视器的名字


EnumPorts
VB声明
Declare Function EnumPorts Lib "winspool.drv" Alias "EnumPortsA" (ByVal pName As String, ByVal Level As Long, ByVal lpbPorts As Long, ByVal cbBuf As Long, pcbNeeded As Long, pcReturned As Long) As Long
说明
枚举一个系统可用的端口
返回值
Long，非零表示成功，零表示失败。会设置GetLastError
参数表
参数 | 类型及说明
pName | String，指定服务器的名字。用vbNullString指定本地系统
Level | Long，1或2（1用于NT 3.51），分别指定PORT_INFO_1 或 PORT_INFO_2
lpbPorts | Long，包含PORT_INFO_1 或 PORT_INFO_2结构的缓冲区
cbBuf | Long，lpbPorts缓冲区中的字符数量
pcbNeeded | Long，指向一个Long型变量的指针，该变量用于保存请求的缓冲区长度，或者实际读入的字节数量
pcReturned | Long，载入缓冲区的结构数量（用于那些能返回多个结构的函数）
注解
参考AddPort函数，了解进一步的情况


EnumPrinterDrivers
VB声明
Declare Function EnumPrinterDrivers Lib "winspool.drv" Alias "EnumPrinterDriversA" (ByVal pName As String, ByVal pEnvironment As String, ByVal Level As Long, pDriverInfo As Byte, ByVal cdBuf As Long, pcbNeeded As Long, pcRetruned As Long) As Long
说明
枚举指定系统中已安装的打印机驱动程序
返回值
Long，非零表示成功，零表示失败。会设置GetLastError
参数表
参数 | 类型及说明
pName | String，指定服务器的名字。用vbNullString指定本地系统
pEnvironment | String，欲在其中对驱动程序进行枚举的环境（如：Windows NT x86）。如设为vbNullString，表示使用当前（本地）系统环境
Level | Long，1，2或3（3仅适用于Windows 95和NT 4.0）
pDriverInfo | Byte，包含DRIVER_INFO_1， DRIVER_INFO_2 或 DRIVER_INFO_3结构的缓冲区
cbBuf | Long，pDriverInfo缓冲区中的字符数量
pcbNeeded | Long，指向一个Long型变量的指针，该变量用于保存请求的缓冲区长度，或者实际读入的字节数量
pcReturned | Long，载入缓冲区的结构数量（用于那些能返回多个结构的函数）


EnumPrinters
VB声明
Declare Function EnumPrinters Lib "winspool.drv" Alias "EnumPrintersA" (ByVal flags As Long, ByVal name As String, ByVal Level As Long, pPrinterEnum As Byte, ByVal cdBuf As Long, pcbNeeded As Long, pcReturned As Long) As Long
说明
枚举系统中安装的打印机
返回值
Long，非零表示成功，零表示失败。会设置GetLastError
参数表
参数 | 类型及说明
flags | Long，一个或多个下述标志
 | PRINTER_ENUM_LOCAL | 枚举本地打印机（包括Windows 95中的网络打印机）。名字会被忽略
 | PRINTER_ENUM_NAME | 枚举由name参数指定的打印机。其中的名字可以是一个供应商、域或服务器。如name为NULL，则枚举出可用的打印机
 | PRINTER_ENUM_SHARE | 枚举共享打印机（必须同其他常数组合使用）
 | PRINTER_ENUM_CONNECTIONS | 枚举网络连接列表中的打印机（即使目前没有连接——仅适用于NT）
 | PRINTER_ENUM_NETWORK | 枚举通过网络连接的打印机。级别（Level）必须为1。仅适用于NT
 | PRINTER_ENUM_REMOTE | 枚举通过网络连接的打印机和打印服务器。级别必须为1。仅适用于NT
name | String，vbNullString表示枚举同本机连接的打印机。否则由标志和级别决定
Level | Long，1，2，4或5（4仅适用于NT；5仅适用于Win95和NT 4.0），指定欲枚举的结构的类型。如果是1，则name参数由标志设置决定。如果是2或5，那么name就代表欲对其打印机进行枚举的服务器的名字；或者为vbNullString。如果是4，那么只有PRINTER_ENUM_LOCAL和PRINTER_ENUM_CONNECTIONS才有效。名字必须是vbNullString
pPrinterEnum | Byte，包含PRINTER_ENUM_x结构的缓冲区，其中的x代表级别（Level）
cbBuf | Long，pPrinterEnum缓冲区中的字符数量
pcbNeeded | Long，指向一个Long型变量的指针，该变量用于保存请求的缓冲区长度，或者实际读入的字节数量
pcReturned | Long，载入缓冲区的结构数量（用于那些能返回多个结构的函数）
注解
第4和第5级将它们的结构建立在系统注册表的基础上，而且比第2级快得多。后者要求每台打印机都处于打开状态 请参考微软Win32手册，了解这个函数进一步的情况

Top


EnumPrintProcessorDatatypes
VB声明
Declare Function EnumPrintProcessorDatatypes Lib "winspool.drv" Alias "EnumPrintProcessorDatatypesA" (ByVal pName As String, ByVal pPrintProcessorName As String, ByVal Level As Long, pDatatypes As Byte, ByVal cdBuf As Long, pcbNeeded As Long, pcRetruned As Long) As Long
说明
枚举由一个打印处理器支持的数据类型
返回值
Long，非零表示成功，零表示失败。会设置GetLastError
参数表
参数 | 类型及说明
pName | String，指定服务器的名字。用vbNullString表示使用本地系统
pPrintProcessorName | String，欲对其数据类型进行枚举的打印处理器的名字
Level | Long，设为1
pDatatypes | Byte，包含DATATYPES_INFO_1结构的缓冲区
cbBuf | Long，pDatatypes缓冲区中的字符数量
pcbNeeded | Long，指向一个Long型变量的指针，该变量用于保存请求的缓冲区长度，或者实际读入的字节数量
pcReturned | Long，载入缓冲区的结构数量（用于那些能返回多个结构的函数）
注解
DATATYPES_INFO_1结构包含了单个字段，其中保存了数据类型的名称


EnumPrintProcessors
VB声明
Declare Function EnumPrintProcessors Lib "winspool.drv" Alias "EnumPrintProcessorsA" (ByVal pName As String, ByVal pEnvironment As String, ByVal Level As Long, pPrintProcessorInfo As Byte, ByVal cdBuf As Long, pcbNeeded As Long, pcReturned As Long) As Long
说明
枚举系统中可用的打印处理器
返回值
Long，非零表示成功，零表示失败。会设置GetLastError
参数表
参数 | 类型及说明
pName | String，指定服务器的名字。用vbNullString表示使用本地系统
pEnvironment | String，欲枚举的打印处理器的环境（如：Windows NT x86）。如设为vbNullString，表示使用当前（本地）系统环境
Level | Long，设为1
pPrintProcessorInfo | Byte，包含PRINTPROCESSOR_INFO_1结构的缓冲区
cbBuf | Long，pPrintProcessorInfo缓冲区中的字符数量
pcbNeeded | Long，指向一个Long型变量的指针，该变量用于保存请求的缓冲区长度，或者实际读入的字节数量
pcReturned | Long，载入缓冲区的结构数量（用于那些能返回多个结构的函数）


Escape
VB声明
Declare Function Escape Lib "gdi32" Alias "Escape" (ByVal hdc As Long, ByVal nEscape As Long, ByVal nCount As Long, ByVal lpInData As String, lpOutData As Any) As Long
说明
一个灵活的设备控制函数
返回值
Long，对于QUERYESCSUPPORT，如支持指定的换码，则返回TRUE（非零）；否则返回零。对于PASSTHROUGH，大于零值表示成功；如指定的换码不支持，则返回零；如果出错，则返回负值
参数表
参数 | 类型及说明
hdc | Long，设备场景的句柄
nEscape | Long，换码数量，由API32.TXT文件中的一个常数定义。这决定了具体的运作方式。请参考注解
nCount | Long，lpInData缓冲区的大小，用字节数表示
lpInData | String，由换码类型决定。对于QUERYESCSUPPORT，这代表指向一个整数变量的指针，那个变量包含了要测试的换码值。对于PASSTHROUGH，这代表指向一个数据块的指针，那个数据块包含于要发送数据的头16位字节数量中。数据块剩余的部分包含了要发送给打印机的实际数据缓冲区
lpOutData | Any，指定一个输出缓冲区，它的具体使用由换码决定。它不由QUERYESCSUPPORT或PASSTHROUGH使用，而且应设为NULL（ByVal 0&）
注解
只有两个换码在Win32环境中经常用到。请用QUERYESCSUPPORT换码判断一个换码是否得到了驱动程序的支持。用PASSTHROUGH换码将原始数据直接发给一台打印机。其他换码在Win32仍然得到了支持，但目的只是为了与Win16保持兼容


FindClosePrinterChangeNotification
VB声明
Declare Function FindClosePrinterChangeNotification Lib "winspool.drv" Alias "FindClosePrinterChangeNotification" (ByVal hChange As Long) As Long
说明
关闭用FindFirstPrinterChangeNotification函数获取的一个打印机通告对象
返回值
Long，非零表示成功，零表示失败。会设置GetLastError
参数表
参数 | 类型及说明
hChange | Long，欲关闭的打印机通告对象句柄
适用平台
Windows NT


FindFirstPrinterChangeNotification
VB声明
Declare Function FindFirstPrinterChangeNotification& Lib "winspool.dll" (ByVal hPrinter As Long, ByVal fdwFlags As Long, ByVal fdwOptions As Long, pPrinterNotifyOptions As Byte)
说明
创建一个新的改变通告对象，以便我们注意打印机状态的各种变化
返回值
Long，执行成功则返回改变通告对象的句柄。INVALID_HANDLE_VALUE表示失败。会设置GetLastError
参数表
参数 | 类型及说明
hPrinter | Long，一个已打开的打印机对象的句柄（用OpenPrinter获得）
fdwFlags | Long，来自API32.TXT文件的、带有PRINTER_CHANGE_??前缀的某个常数，它们对要观察的对象进行了描述。如pPrinterNotifyOptions不为零，那么可将这个参数设为零
fdwOptions | Long，保留，设为零
pPrinterNotifyOptions | Byte，指定一个缓冲区，其中包含了一个PRINTER_NOTIFY_OPTIONS结构。而这个结构又包含了指向一个或多个PRINTER_NOTIFY_OPTIONS_TYPE结构的指针。可将这个参数设为零（将声明方式改为ByVal As Long并传递零值），以便用fdwFlags字段指定想观察的变化
适用平台
Windows NT
其他
以下的声明是从VB的API文本查看器里复制的： Declare Function FindFirstPrinterChangeNotification Lib "winspool.drv" Alias "FindFirstPrinterChangeNotification" (ByVal hPrinter As Long, ByVal fdwFlags As Long, ByVal fdwOptions As Long, ByVal pPrinterNotifyOptions As String) As Long


FindNextPrinterChangeNotification
VB声明
Declare Function FindNextPrinterChangeNotification& Lib "winspool.dll" (ByVal hChange As Long, pdwChange As Long, ByVal pvReserved As Long, ByVal ppPrinterNotifyInfo As Long)
说明
用这个函数判断触发一次打印机改变通告信号的原因
返回值
Long，非零表示成功，零表示失败。会设置GetLastError
参数表
参数 | 类型及说明
hChange | Long，一个打印机通告改变对象的句柄
pdwChange | Long，指定用于装载特定标志的一个Long型值，该标志标志着信号的来源。请在API32.TXT文件中寻找以PRINTER_CHANGE_???前缀开头的常数
pvReserved | Long，指定一个PRINTER_NOTIFY_OPTIONS结构的地址。如这个结构的Flags字段设为PRINTER_NOTIFY_OPTIONS_REFRESH，那么ppPrinterNotifyInfo缓冲区就会载入正在监视的所有事件的状态——并不仅是那些触发了通告信号的事件。结构中所有其他字段会被忽略。可设为NULL（零），表示只返回与状态改变有关信息
ppPrinterNotifyInfo | Long，由系统分配的一个缓冲区的地址。完成后，应该用FreePrinterNotifyInfo函数将这个缓冲区删除。缓冲区内包含了一个PRINTER_NOTIFY_INFO结构，其后跟随一系列PRINTER_NOTIFY_INFO_DATA结构（具体数量由第一个结构决定）
适用平台
Windows NT
其他
在VB的API文本查看器中复制的声明如下： Declare Function FindNextPrinterChangeNotification Lib "winspool.drv" Alias "FindNextPrinterChangeNotification" (ByVal hChange As Long, pdwChange As Long, ByVal pvReserved As String, ByVal ppPrinterNotifyInfo As Long) As Long

Top


FreePrinterNotifyInfo
VB声明
Declare Function FreePrinterNotifyInfo Lib "winspool.drv" (ByVal addr As Long) As Long
说明
释放由FindNextPrinterChangeNotification函数分配的一个缓冲区
返回值
Long，非零表示成功，零表示失败。会设置GetLastError
参数表
参数 | 类型及说明
addr | Long，指定由FindNextPrinterChangeNotification函数分配的一个系统缓冲区的地址
适用平台
Windows NT


GetForm
VB声明
Declare Function GetForm Lib "winspool.drv" Alias "GetFormA" (ByVal hPrinter As Long, ByVal pFormName As String, ByVal Level As Long, pForm As Byte, ByVal cbBuf As Long, pcbNeeded As Long) As Long
说明
取得与指定表单有关的信息
返回值
Long，非零表示成功，零表示失败。会设置GetLastError
参数表
参数 | 类型及说明
hPrinter | Long，一个已打开的打印机的句柄（用OpenPrinter获得）
pFormName | String，想获取信息的一个表单的名字
Level | Long，设为1
pForm | Byte，包含FORM_INFO_1结构的缓冲区
cbBuf | Long，pForm缓冲区中的字符数量
pcbNeeded | Long，指向一个Long型变量的指针，该变量用于保存请求的缓冲区长度，或者实际读入的字节数量
适用平台
Windows NT


GetJob
VB声明
Declare Function GetJob Lib "winspool.drv" Alias "GetJobA" (ByVal hPrinter As Long, ByVal JobId As Long, ByVal Level As Long, pJob As Byte, ByVal cdBuf As Long, pcbNeeded As Long) As Long
说明
获取与指定作业有关的信息
返回值
Long，非零表示成功，零表示失败。会设置GetLastError
参数表
参数 | 类型及说明
hPrinter | Long，一个已打开的打印机的句柄（用OpenPrinter获得）
JobId | Long，作业编号
Level | Long，1或2
pJob | Byte，包含JOB_INFO_1 或 JOB_INFO_2结构的缓冲区，结构中包含了与打印作业有关的信息
cbBuf | Long，pJob缓冲区中的字符数量
pcbNeeded | Long，指向一个Long型变量的指针，该变量用于保存请求的缓冲区长度，或者实际读入的字节数量


GetPrinter
VB声明
Declare Function GetPrinter Lib "winspool.drv" Alias "GetPrinterA" (ByVal hPrinter As Long, ByVal Level As Long, pPrinter As Any, ByVal cbBuf As Long, pcbNeeded As Long) As Long
说明
取得与指定打印机有关的信息
返回值
Long，非零表示成功，零表示失败。会设置GetLastError
参数表
参数 | 类型及说明
hPrinter | Long，一个已打开的打印机的句柄（用OpenPrinter获得）
Level | Long，1，2，3（仅适用于NT），4（仅适用于NT），或者5（仅适用于Windows 95 和 NT 4.0）
pPrinter | Any，包含PRINTER_INFO_x结构的缓冲区。x代表级别
cbBuf | Long，pPrinterEnum缓冲区中的字符数量
pcbNeeded | Long，指向一个Long型变量的指针，该变量用于保存请求的缓冲区长度，或者实际读入的字节数量
注解
只有在发出调用的应用程序有足够的权限时，PRINTER_INFO_x结构中的一些字段才能够被读取。这种权限由系统当前的安全设置决定


GetPrinterData
VB声明
Declare Function GetPrinterData Lib "winspool.drv" Alias "GetPrinterDataA" (ByVal hPrinter As Long, ByVal pValueName As String, pType As Long, pData As Byte, ByVal nSize As Long, pcbNeeded As Long) As Long
说明
为打印机设置注册表配置信息
返回值
Long，非零表示成功，零表示失败。会设置GetLastError
参数表
参数 | 类型及说明
hPrinter | Long，一个已打开的打印机的句柄（用OpenPrinter获得）
pValueName | String，欲设置的注册表值的名称
pType | Long，指定数据类型。使用来自API32.TXT的、以REG_??开头的一个常数
pData | Byte，指定一个Byte数组以接收数据
nSize | Long，以字节表示的pData数组的长度
pcbNeeded | Long，指向一个Long型变量的指针，该变量用于保存请求的缓冲区长度，或者实际读入的字节数量


GetPrinterDriver
VB声明
Declare Function GetPrinterDriver Lib "winspool.drv" Alias "GetPrinterDriverA" (ByVal hPrinter As Long, ByVal pEnvironment As String, ByVal Level As Long, pDriverInfo As Byte, ByVal cdBuf As Long, pcbNeeded As Long) As Long
说明
针对指定的打印机，获取与打印机驱动程序有关的信息
返回值
Long，非零表示成功，零表示失败。会设置GetLastError
参数表
参数 | 类型及说明
hPrinter | Long，一个已打开的打印机的句柄（用OpenPrinter获得）
pEnvironment | String，欲获取的驱动程序环境（如：Windows NT x86）。如设为vbNullString，表示使用当前（本地）系统环境
Level | Long，1，2或3（仅适用于Windows 95 和 NT 4.0）
pDriverInfo | Byte，载入一个 DRIVER_INFO_x结构的缓冲区。其中的x代表级别（Level）设置
cbBuf | Long，pDriverInfo缓冲区中的字符数量
pcbNeeded | Long，指向一个Long型变量的指针，该变量用于保存请求的缓冲区长度，或者实际读入的字节数量


GetPrinterDriverDirectory
VB声明
Declare Function GetPrinterDriverDirectory Lib "winspool.drv" Alias "GetPrinterDriverDirectoryA" (ByVal pName As String, ByVal pEnvironment As String, ByVal Level As Long, pDriverDirectory As Byte, ByVal cdBuf As Long, pcbNeeded As Long) As Long
说明
判断指定系统中包含了打印机驱动程序的目录是什么
返回值
Long，非零表示成功，零表示失败。会设置GetLastError
参数表
参数 | 类型及说明
pName | String，服务器的名字。如设为vbNullString，表示使用本地系统
pEnvironment | String，欲在其中获取目录的一个环境（如：Windows NT x86）。vbNullString表示使用当前（本地）系统环境
Level | Long，设为1
pDriverDirectory | Byte，指定一个缓冲区，其中会载入打印机驱动程序目录的完整路径名。可定义成ByVal As String，以便将字节数组分配给一个字串，从而避免执行ANSI到Unicode格式的转换
cbBuf | Long，pDriverDirectory缓冲区中的字符数量
pcbNeeded | Long，指向一个Long型变量的指针，该变量用于保存请求的缓冲区长度，或者实际读入的字节数量


GetPrintProcessorDirectory
VB声明
Declare Function GetPrintProcessorDirectory Lib "winspool.drv" Alias "GetPrintProcessorDirectoryA" (ByVal pName As String, ByVal pEnvironment As String, ByVal Level As Long, ByVal pPrintProcessorInfo As String, ByVal cdBuf As Long, pcbNeeded As Long) As Long
说明
判断指定系统中包含了打印机处理器驱动程序及文件的目录
返回值
Long，非零表示成功，零表示失败。会设置GetLastError
参数表
参数 | 类型及说明
pName | String，指定服务器的名字。设置成vbNullString则表示使用本地系统
pEnvironment | String，欲在其中获取目录的一个环境（如：Windows NT x86）。用vbNullString表示使用当前（本地）系统环境
Level | Long，设为1
pPrintProcessorInfo | String，指定一个缓冲区，其中载入打印机处理器目录的完整路径。可定义成ByVal As String，以便将字节数组分配给一个字串，从而取消进行ANSI到Unicode转换的必要
cbBuf | Long，pPrintProcessorInfo缓冲区中的字符数量
pcbNeeded | Long，指向一个Long型变量的指针，该变量用于保存请求的缓冲区长度，或者实际读入的字节数量


OpenPrinter
VB声明
Declare Function OpenPrinter Lib "winspool.drv" Alias "OpenPrinterA" (ByVal pPrinterName As String, phPrinter As Long, pDefault As PRINTER_DEFAULTS) As Long
说明
打开指定的打印机，并获取打印机的句柄
返回值
Long，非零表示成功，零表示失败。会设置GetLastError
参数表
参数 | 类型及说明
pPrinterName | String，要打开的打印机的名字
phPrinter | Long，用于装载打印机的句柄
pDefault | PRINTER_DEFAULTS，这个结构保存要载入的打印机信息


PrinterMessageBox
VB声明
Declare Function PrinterMessageBox Lib "winspool.drv" Alias "PrinterMessageBoxA" (ByVal hPrinter As Long, ByVal error As Long, ByVal hwnd As Long, ByVal pText As String, ByVal pCaption As String, ByVal dwType As Long) As Long
说明
在拥有指定打印作业的系统上显示一个打印机出错消息框。如一名用户在远程登录，这种做法便相当有用
返回值
Long，IDOK， IDRETRY 或 IDCANCEL；由用户的输入决定（如消息框在远程系统显示，则肯定是IDOK）
参数表
参数 | 类型及说明
hPrinter | Long，出现错误的打印机的句柄
error | Long，ERROR_OUT_OF_PAPER（缺纸）或ERROR_NOT_READY（未就绪）
hwnd | Long，指定消息框的父窗口。可以为NULL
pText | Long，欲显示的消息正文
pCaption | Long，消息框的标题
dwType | Long，指定任何一个标准的MessageBox标志。建议使用MB_ICONSTOP 或 MB_RETRYCANCEL 或 MB_SETFOREGROUND
适用平台
Windows NT


PrinterProperties
VB声明
Declare Function PrinterProperties Lib "winspool.drv" Alias "PrinterProperties" (ByVal hwnd As Long, ByVal hPrinter As Long) As Long
说明
启动打印机属性对话框，以便对打印机进行配置
返回值
Long，非零表示成功，零表示失败。会设置GetLastError
参数表
参数 | 类型及说明
hwnd | Long，对话框的父窗口
hPrinter | Long，一个已打开的打印机的句柄
注解
如打印机打开的时候没有使用足够的访问权限，对话框的有些功能也许会禁止使用


ReadPrinter
VB声明
Declare Function ReadPrinter Lib "winspool.drv" Alias "ReadPrinter" (ByVal hPrinter As Long, pBuf As Any, ByVal cdBuf As Long, pNoBytesRead As Long) As Long
说明
从打印机读入数据
返回值
Long，非零表示成功，零表示失败。会设置GetLastError
参数表
参数 | 类型及说明
hPrinter | Long，一个已打开的打印机的句柄（用OpenPrinter获得）
pBuf | Any，指定一个缓冲区或结构，用于装载来自打印机的数据
cdBuf | Long，欲读入的缓冲区大小或字节数
pNoBytesRead | Long，用于装载实际读取字节数的一个变量
注解
为使这个函数正常使用，端口必须是双向的


ResetDC
VB声明
Declare Function ResetDC Lib "gdi32" Alias "ResetDCA" (ByVal hdc As Long, lpInitData As DEVMODE) As Long
说明
根据提供的DEVMODE结构，对一个设备场景进行重设。这样便允许我们在打印期间改变打印机的配置。利用这个函数，可将文档中的某个页改为横向打印。可试着用DocumentProperties函数取得一个设备的默认DEVMODE结构
返回值
Long，执行成功则返回设备场景的句柄，零表示失败
参数表
参数 | 类型及说明
hdc | Long，设备场景的句柄
lpInitData | DEVMODE，指定一个缓冲区的第一个字节。该缓冲区包含了用于那个设备的一个有效DEVMODE结构。记住在这个缓冲区中包括设备专用的数据区
注解
这个函数可成功用于由VB的Printer对象的hDC属性返回的设备场景上 注意一定要正确设置lpdm的dmFields字段 这个函数在StartPage 和 EndPage之间会被禁用——即只能在页与页之间调用这个函数，不能在页内调用 驱动程序、设备和输出端口不可以用这个函数更改


ResetPrinter
VB声明
Declare Function ResetPrinter Lib "winspool.drv" Alias "ResetPrinterA" (ByVal hPrinter As Long, pDefault As PRINTER_DEFAULTS) As Long
说明
改变指定打印机的默认数据类型及文档设置
返回值
Long，非零表示成功，零表示失败。会设置GetLastError
参数表
参数 | 类型及说明
hPrinter | Long，欲修改的一台打印机的句柄
pDefault | PRINTER_DEFAULTS，定义了打印机新设置的一个结构。参考OpenPrinter函数的说明，了解这个结构进一步的细节。结构中的DesiredAccess字段会被忽略
适用平台
Windows NT


ScheduleJob
VB声明
Declare Function ScheduleJob Lib "winspool.drv" Alias "ScheduleJob" (ByVal hPrinter As Long, ByVal JobId As Long) As Long
说明
提交一个要打印的作业
返回值
Long，非零表示成功，零表示失败。会设置GetLastError
参数表
参数 | 类型及说明
hPrinter | Long，一台已打开的打印机句柄
JobId | Long，以前用AddJob函数获得的作业编号
注解
参考AddJob函数以获得进一步的信息


SetAbortProc
VB声明
Declare Function SetAbortProc Lib "gdi32" Alias "SetAbortProc" (ByVal hDC As Long, ByVal lpAbortProc As Long) As Long
说明
我们可以为Windows提供一个特殊的函数，令其在扩展打印操作过程中调用。这个函数叫“取消函数”。其结果告诉Windows是继续打印操作，还是立即取消 SetAbortProc函数的作用是为windows指定取消函数的地址。由于VB不支持函数地址的概念，所以要使用特定的通用回调定制控件，否则就不能使用这个函数
返回值
Long，如结果大于零，表示执行成功；SP_ERROR表示出错。会设置GetLastError
参数表
参数 | 类型及说明
hDC | Long，一个设备场景的句柄。
lpAbortProc | Long，一个取消函数的地址
在VB里使用
如随同VB的打印机对象使用这个函数，就可能干扰正常的VB打印机制。这个函数的确可以在VB环境中使用，但有可能造成打印机出错。因此，在下一次使用Printer.NewPage方法的时候，有必要用适当的机制捕获这种错误。如果在自己的程序中为VB的Printer对象设置了一个取消函数，那么建议您完整测试代码 如果在自己创建的一个设备场景中打印，那么这个函数的使用没有丝毫问题


SetForm
VB声明
Declare Function SetForm& Lib "spoolss.dll" Alias "SetFormA" (ByVal hPrinter As Long, ByVal pFormName As String, ByVal Level As Long, pForm As Byte)
说明
为指定的表单设置信息
返回值
Long，非零表示成功，零表示失败。会设置GetLastError
参数表
参数 | 类型及说明
hPrinter | Long，指定一个打开打印机的句柄（用OpenPrinter取得）
pFormName | String，欲设置的表单的名字
Level | Long，设为1
pForm | Byte，包含一个有效FORM_INFO_1结构的缓冲区
适用平台
Windows NT
注解
请参考AddForm函数。


SetJob
VB声明
Declare Function SetJob Lib "winspool.drv" Alias "SetJobA" (ByVal hPrinter As Long, ByVal JobId As Long, ByVal Level As Long, pJob As Byte, ByVal Command As Long) As Long
说明
对一个打印作业的状态进行控制
返回值
Long，非零表示成功，零表示失败。会设置GetLastError
参数表
参数 | 类型及说明
hPrinter | Long，指定一个打开打印机的句柄（用OpenPrinter取得）
JobId | Long，要修改的作业的编号
Level | Long，0，1或2
pJob | Byte，指定一个缓冲区。如级别（Level）设为1或2，那该缓冲区就包含了一个JOB_INFO_1或JOB_INFO_2结构。如级别为0，缓冲区为NULL（变成ByVal As Long，以便传递零值）。如指定了一个结构，则来自那个结构的信息会用于改变打印作业的设置（除JobId，pPrinterName，pMachineName，pDriverName，Size，Submitte以及Time字段外）
Command | Long，下述常数之一：
 | JOB_CONTROL_CANCEL | 取消作业
 | JOB_CONTROL_PAUSE | 暂停作业
 | JOB_CONTROL_RESTART | 重新启动一个已开始打印的作业
 | JOB_CONTROL_RESUME | 恢复一个暂停的作业


SetPrinter
VB声明
Declare Function SetPrinter Lib "winspool.drv" Alias "SetPrinterA" (ByVal hPrinter As Long, ByVal Level As Long, pPrinter As Byte, ByVal Command As Long) As Long
说明
对一台打印机的状态进行控制
返回值
Long，非零表示成功，零表示失败。会设置GetLastError
参数表
参数 | 类型及说明
hPrinter | Long，指定一个已打开的打印机的句柄（用OpenPrinter取得）
Level | Long，0，2或3（4或5用于windows95，5或6用于NT 4.0）。如Command不是零，则这个参数必须是零
pPrinter | Byte，包含一个PRINTER_INFO_x的结构的缓冲区，其中的x代表级别的设定（Level）。假如级别为零，并且Command设为PRINTER_CONTROL_SET_STATUS，那缓冲区就包含了一个PRINTER_CONTROL_STATUS结构。否则，如级别为零，就设为NULL（要把声明变成ByVal As Long，以便传递零值）
Command | Long，下述值之一：
 | 零 | 根据PRINTER_INFO_x结构改变打印机
 | PRINTER_CONTROL_PAUSE | 暂停打印机
 | PRINTER_CONTROL_PURGE | 删除打印机的所有作业
 | PRINTER_CONTROL_RESUME | 恢复一台暂停的打印机
 | PRINTER_CONTROL_SET_STATUS | 载入打印机的PRINTER_CONTROL_STATUS结构（不可在NT 3.51下使用）
注解
在PRINTER_INFO_2结构的基础上设置打印机状态时，pServerName，AveragePPM，Status和cJobs字段都会被忽略


SetPrinterData
VB声明
Declare Function SetPrinterData Lib "winspool.drv" Alias "SetPrinterDataA" (ByVal hPrinter As Long, ByVal pValueName As String, ByVal dwType As Long, pData As Byte, ByVal cbData As Long) As Long
说明
设置打印机的注册表配置信息
返回值
Long，ERROR_SUCCESS表示成功，一个错误值表示失败。
参数表
参数 | 类型及说明
hPrinter | Long，指定一个已打开的打印机的句柄（用OpenPrinter取得）
pValueName | String，欲设置的注册表值名
dwType | Long，定义数据的类型，使用来自API32.txt文件的、以REG_起头的一个常数
pData | Byte，指定一个缓冲区的第一个条目，缓冲区中包含了要设置的适当的数据类型
cbData | Long，缓冲区pData的长度


StartDoc
VB声明
Declare Function StartDoc Lib "gdi32" Alias "StartDocA" (ByVal hdc As Long, lpdi As DOCINFO) As Long
说明
开始一个打印作业
返回值
Long，如执行成功，返回文档的作业编号，常数SP_ERROR失败。会设置GetLastError
参数表
参数 | 类型及说明
hdc | Long，设备场景的句柄
lpdi | DOCINFO，对文档定义的一个结构


StartDocPrinter
VB声明
Declare Function StartDocPrinter Lib "winspool.drv" Alias "StartDocPrinterA" (ByVal hPrinter As Long, ByVal Level As Long, pDocInfo As Byte) As Long
说明
在后台打印的级别启动一个新文档
返回值
Long，非零表示成功，零表示失败。
参数表
参数 | 类型及说明
hPrinter | Long，指定一个已打开的打印机的句柄（用OpenPrinter取得）
Level | Long，1或2（仅用于win95）
pDocInfo | Byte，包含一个DOC_INFO_1或DOC_INFO_2结构的缓冲区
注解
在应用程序的级别并非特别有用。后台打印程序用它标识一个文档的开始


StartPage
VB声明
Declare Function StartPage Lib "gdi32" Alias "StartPage" (ByVal hdc As Long) As Long
说明
打印一个新页前要先调用这个函数
返回值
Long，非零表示成功，零表示失败
参数表
参数 | 类型及说明
hdc | Long，一个设备场景的句柄
在VB里使用
操作VB的打印机对象时，注意不要使用这个函数


StartPagePrinter
VB声明
Declare Function StartPagePrinter Lib "winspool.drv" Alias "StartPagePrinter" (ByVal hPrinter As Long) As Long
说明
在打印作业中指定一个新页的开始
返回值
Long，非零表示成功，零表示失败。会设置GetLastError
参数表
参数 | 类型及说明
hPrinter | Long，指定一个已打开的打印机的句柄（用OpenPrinter取得）
注解
在应用程序的级别并非特别有用。后台打印程序用它在实际的打印机数据中标识一个文档的开始


WritePrinter
VB声明
Declare Function WritePrinter Lib "winspool.drv" Alias "WritePrinter" (ByVal hPrinter As Long, pBuf As Any, ByVal cdBuf As Long, pcWritten As Long) As Long
说明
将发送目录中的数据写入打印机
返回值
Long，非零表示成功，零表示失败。会设置GetLastError
参数表
参数 | 类型及说明
hPrinter | Long，指定一个已打开的打印机的句柄（用OpenPrinter取得）
pBuf | Any，包含了要写入打印机的数据的一个缓冲区或结构
cdBuf | Long，pBuf缓冲区的长度
pcWritten | Long，指定一个Long型变量，用于装载实际写入的字节数


AddFontResource
VB声明
Declare Function AddFontResource Lib "gdi32" Alias "AddFontResourceA" (ByVal lpFileName As String) As Long
说明
在Windows系统中添加一种字体资源。添加完毕后，该字体即可由任何Windows应用程序调用
返回值
Long，添加的字体数量，零表示失败。会设置GetLastError
参数表
参数 | 类型及说明
lpFileName | String，字体资源文件的文件名。可以是.FON， .FNT， .TTF 或 .FOT文件
注解

添加了一种资源后必须调用下述API函数：
di% = SendMessageBynum(HWND_BROADCAST, WM_FONTCHANGE, x, y)
其中，HWND_BROADCAST、WM_FONTCHANGE使用来自API32.TXT文件的值。这样便可告诉所有Windows应用程序字体列表已发生了变化

示例
Call AddFontResource("myfont.ttf")
Call SendMessage(HWND_BROADCAST, WM_FONTCHANGE, 0, 0)


CombineRgn
VB声明
Declare Function CombineRgn Lib "gdi32" Alias "CombineRgn" (ByVal hDestRgn As Long, ByVal hSrcRgn1 As Long, ByVal hSrcRgn2 As Long, ByVal nCombineMode As Long) As Long
说明
将两个区域组合为一个新区域
返回值
Long，下列常数之一： COMPLEXREGION：区域有互相交叠的边界 SIMPLEREGION：区域边界没有互相交叠 NULLREGION：区域为空 ERRORAPI：不能创建组合区域
参数表
参数 | 类型及说明
hDestRgn | Long，包含组合结果的区域句柄
hSrcRgn1 | Long，源区域1
hSrcRgn2 | Long，源区域2
nCombineMode | Long，组合两区域的方法。可设为下述常数
 | RGN_AND | hDestRgn被设置为两个源区域的交集
 | RGN_COPY | hDestRgn被设置为hSrcRgn1的拷贝
 | RGN_DIFF | hDestRgn被设置为hSrcRgn1中与hSrcRgn2不相交的部分
 | RGN_OR | hDestRgn被设置为两个区域的并集
 | RGN_XOR | hDestRgn被设置为除两个源区域OR之外的部分

Top


CombineTransform
VB声明
Declare Function CombineTransform Lib "gdi32" Alias "CombineTransform" (lpxformResult As xform, lpxform1 As xform, lpxform2 As xform) As Long
说明
驱动世界转换。它相当于依顺序进行两次转换
返回值
Long，执行成功为TRUE（非零），失败则为零
参数表
参数 | 类型及说明
lpxformResult | xform，保存转换结果的结构
lpxform1 | xform，按顺序的第一个结构
xform | xform，按顺序的第二个结构
适用平台
Windows NT


CreateCompatibleDC
VB声明
Declare Function CreateCompatibleDC Lib "gdi32" Alias "CreateCompatibleDC" (ByVal hdc As Long) As Long
说明
创建一个与特定设备场景一致的内存设备场景
返回值
Long，新设备场景句柄，若出错则为零
参数表
参数 | 类型及说明
hdc | Long，设备场景句柄。新的设备场景将与它一致。也可能为0以创建一个与屏幕一致的设备场景
注解
在绘制之前，先要为该设备场景选定一个位图。不再需要时，该设备场景可用DeleteDC函数删除。删除前，其所有对象应回复初始状态


CreateDC

CreateDC, CreateDCBynum
VB声明
Declare Function CreateDC& Lib "gdi32" Alias "CreateDCA" (ByVal lpDriverName As String, ByVal lpDeviceName As String, ByVal lpOutput As String, lpInitData As DEVMODE)
Declare Function CreateDCBynum& Lib "gdi32" Alias "CreateDCA" (ByVal lpDriverName As String, ByVal lpDeviceName As String, ByVal lpOutput As String, lpInitData As Long)
说明
为专门设备创建设备场景
返回值
Long，新设备场景句柄，若出错则为零
参数表
参数 | 类型及说明
lpDriverName | String，用vbNullString传递null值给该参数，除非：1、用DISPLAY，是获取整个屏幕的设备场景；2、用WINSPOOL，则是访问打印驱动
lpDeviceName | String，所用专门设备的名称。该名由打印管理器分配显示
lpOutput | String，用vbNullString传递null值给该参数
lpInitData | DEVMODE，这个结构保存初始值。用CreateDCBynum传递0（NULL）值则适用默认设置
注解

在绘制之前，先要为该设备场景选定一个位图。不再需要时，该设备场景可用DeleteDC函数删除。删除前，其所有对象应回复初始状态。若有设备初始设置可用DocumentProperties API函数载入DEVMODE结构。使用屏幕设备场景（DISPLAY）时要小心，因为它会干扰其他应用程序的外观

示例：靠近屏幕左上角画一个矩形
dc& = CreateDCBynum("DISPLAY", vbNullString, vbNullString, 0)
dl& = Rectangle(dc&, 5, 5, 100, 100)

Top


CreateEllipticRgn
VB声明
Declare Function CreateEllipticRgn Lib "gdi32" Alias "CreateEllipticRgn" (ByVal X1 As Long, ByVal Y1 As Long, ByVal X2 As Long, ByVal Y2 As Long) As Long
说明
创建一个椭圆，该椭圆与X1，Y1和X2，Y2坐标点确定的矩形内切
返回值
Long，执行成功则为区域句柄，失败则为零
参数表
参数 | 类型及说明
X1,Y1 | Long，矩形左上角X，Y坐标
X2,Y2 | Long，矩形右下角X，Y坐标
注解
不用时一定要用DeleteObject函数删除区域。用Ellipse API函数绘出的椭圆与该椭圆区域不完全相同，因为本函数的绘图计算不包括矩形的下边和右边


CreateEllipticRgnIndirect
VB声明
Declare Function CreateEllipticRgnIndirect Lib "gdi32" Alias "CreateEllipticRgnIndirect" (lpRect As Rect) As Long
说明
创建一个内切于特定矩形的椭圆区域
返回值
Long，执行成功则返回区域句柄，失败则为零
参数表
参数 | 类型及说明
lpRect | Long，定义要创建的椭圆区域尺寸的矩形
注解
不用时一定要用DeleteObject函数删除该区域


CreateFont
VB声明
Declare Function CreateFont Lib "gdi32" Alias "CreateFontA" (ByVal H As Long, ByVal W As Long, ByVal E As Long, ByVal O As Long, ByVal W As Long, ByVal I As Long, ByVal u As Long, ByVal S As Long, ByVal C As Long, ByVal OP As Long, ByVal CP As Long, ByVal Q As Long, ByVal PAF As Long, ByVal F As String) As Long
说明
用指定的属性创建一种逻辑字体
返回值
Long，执行成功则返回逻辑字体的句柄，零表示失败。会设置GetLastError
参数表
参数 | 类型及说明
H | Long，IfHeight
W | Long，IfWidth
E | Long，IfEscapement
O | Long，IfOrientation
W | Long，IfWeight
I | Long，IfItalic
u | Long，IfUnderline
S | Long，IfStrikeOut
C | Long，IfCharSet
OP | Long，IfOutputPrecision
CP | Long，IfClipPrecision
Q | Long，IfQuality
PAF | Long，IfPitchAndFamily
F | String，IfFaceName
注解
VB的字体属性在选择字体的时候显得更有效

Top


CreateFontIndirect
VB声明
Declare Function CreateFontIndirect Lib "gdi32" Alias "CreateFontIndirectA" (lpLogFont As LOGFONT) As Long
说明
用指定的属性创建一种逻辑字体
返回值
Long，执行成功则返回逻辑字体句柄，零表示失败
参数表
参数 | 类型及说明
lpLogFont | LOGFONT，这个结构定义了逻辑字体请求的属性
注解
VB的字体属性在选择字体的时候显得更有效


CreateIC
VB声明
Declare Function CreateIC Lib "gdi32" Alias "CreateICA" (ByVal lpDriverName As String, ByVal lpDeviceName As String, ByVal lpOutput As String, lpInitData As DEVMODE) As Long
说明
为专用设备创建一个信息场景。信息场景可用来快速获取某设备的信息而无须创建设备场景这样的系统开销。它可作为参数传递给GetDeviceCaps一类的信息函数以替代设备场景参数
返回值
Long，执行成功为信息场景句柄，失败则为零
参数表
参数 | 类型及说明
lpDriverName | String，用vbNullString传递null值给该参数，除非：1、用DISPLAY，是获取整个屏幕的设备场景；2、用WINSPOOL，则是访问打印驱动
lpDeviceName | String，所用专门设备的名称。该名由打印管理器分配显示
lpOutput | String，用vbNullString传递null值给该参数
lpInitData | DEVMODE，这个结构保存初始值
注解
Long，不用时一定要用DeleteDC函数删除设备场景。进一步的说明参考CreateDC函数
示例：为一个名为“Color Stylus”的打印机取回信息场景
dc& = CreateICBynum("WINSPOOL", "Color Stylus", vbNullString,0)


CreatePolygonRgn
VB声明
Declare Function CreatePolygonRgn Lib "gdi32" Alias "CreatePolygonRgn" (lpPoint As POINTAPI, ByVal nCount As Long, ByVal nPolyFillMode As Long) As Long
说明
创建一个由一系列点围成的区域。windows在需要时自动将最后点与第一点相连以封闭多边形
返回值
Long，执行成功为创建的区域句柄，失败则为0
参数表
参数 | 类型及说明
lpPoint | POINTAPI，nCount个POINTAPI结构中的第一个POINTAPI结构
nCount | Long，多边形的点数
nPolyFillMode | Long，描述多边形填充模式。可为ALTERNATE 或 WINDING常数。参考SetPolyFillMode函数对多边形填充模式的解释
注解
不用时一定要用DeleteObject函数删除该区域


CreatePolyPolygonRgn
VB声明
Declare Function CreatePolyPolygonRgn Lib "gdi32" Alias "CreatePolyPolygonRgn" (lpPoint As POINTAPI, lpPolyCounts As Long, ByVal nCount As Long, ByVal nPolyFillMode As Long) As Long
说明
创建由多个多边形构成的区域。每个多边形都应是封闭的
返回值
Long，执行成功则为创建区域的句柄，失败则为零
参数表
参数 | 类型及说明
lpPoint | POINTAPI，nCount个POINTAPI结构中的第一个POINTAPI结构
lpPolyCounts | Long，长整数阵列的第一个入口。每个入口包含构成一个封闭多边形的点数。lpPoint阵列组成了一系列多边形，每个多边形在lpPolyCounts中有一个入口
nCount | Long，多边形的点数
nPolyFillMode | Long，描述多边形填充模式。可为ALTERNATE 或 WINDING常数。参考SetPolyFillMode函数对多边形填充模式的解释
注解
不用时一定要用DeleteObject函数删除该区域


CreateRectRgn
VB声明
Declare Function CreateRectRgn Lib "gdi32" Alias "CreateRectRgn" (ByVal X1 As Long, ByVal Y1 As Long, ByVal X2 As Long, ByVal Y2 As Long) As Long
说明
创建一个由点X1，Y1和X2，Y2描述的矩形区域
返回值
Long，执行成功为区域句柄，失败则为零
参数表
参数 | 类型及说明
X1,Y1 | Long，矩形左上角X，Y坐标
X2,Y2 | Long，矩形右下角X，Y坐标
注解
不用时一定要用DeleteObject函数删除该区域 这个矩形的下边和右边不包含在区域之内


CreateRectRgnIndirect
VB声明
Declare Function CreateRectRgnIndirect Lib "gdi32" Alias "CreateRectRgnIndirect" (lpRect As ) As Long
说明
创建一个由lpRect确定的矩形区域
返回值
Long，执行成功则为区域句柄，失败则为0
参数表
参数 | 类型及说明
lpRect | RECT，要用来创建区域的矩形
注解
参考CreateRectRgn的注解


CreateRoundRectRgn
VB声明
Declare Function CreateRoundRectRgn Lib "gdi32" Alias "CreateRoundRectRgn" (ByVal X1 As Long, ByVal Y1 As Long, ByVal X2 As Long, ByVal Y2 As Long, ByVal X3 As Long, ByVal Y3 As Long) As Long
说明
创建一个圆角矩形，该矩形由X1，Y1-X2，Y2确定，并由X3，Y3确定的椭圆描述圆角弧度
返回值
Long，执行成功则为区域句柄，失败则为0
参数表
参数 | 类型及说明
X1,Y1 | Long，矩形左上角的X，Y坐标
X2,Y2 | Long，矩形右下角的X，Y坐标
X3 | Long，圆角椭圆的宽。其范围从0（没有圆角）到矩形宽（全圆）
Y3 | Long，圆角椭圆的高。其范围从0（没有圆角）到矩形高（全圆）
注解
不用时一定要用DeleteObject函数删除该区域 用该函数创建的区域与用RoundRect API函数画的圆角矩形不完全相同，因为本矩形的右边和下边不包括在区域之内


CreateScalableFontResource
VB声明
Declare Function CreateScalableFontResource Lib "gdi32" Alias "CreateScalableFontResourceA" (ByVal fHidden As Long, ByVal lpszResourceFile As String, ByVal lpszFontFile As String, ByVal lpszCurrentPath As String) As Long
说明
为一种TureType字体创建一个资源文件，以便能用API函数AddFontResource将其加入Windows系统。字体信息本身并不复制到字体资源文件中；相反，资源文件中包含了欲使用的TureType文件的名字
返回值
Long，非零表示成功，零表示失败。会设置GetLastError
参数表
参数 | 类型及说明
fHidden | Long，如果是零，表示创建一个普通的字体资源；如果是1，表示创建一个只读字体资源，它只能在文档中嵌入使用
lpszResourceFile | String，欲创建的资源文件的名字。普通文件使用.FOT扩展名，只读文件使用.FOR扩展名
lpszFontFile | String，TureType字体文件文件的文件名。如果其中包含了一个路径，就到指定的路径寻找字体文件，同时不使用lpszCurrentPath参数指定的位置。而且在调用AddFontResource函数之前，会将字体复制到Windows的SYSTEM目录
lpszCurrentPath | String，由lpszFontFile参数决定


DeleteDC
VB声明
Declare Function DeleteDC Lib "gdi32" Alias "DeleteDC" (ByVal hdc As Long) As Long
说明
删除专用设备场景或信息场景，释放所有相关窗口资源。不要将它用于GetDC函数取回的设备场景
返回值
Long，执行成功则为非零，失败则为零
参数表
参数 | 类型及说明
hdc | Long，将要删除的设备场景
注解
若有对象被选入设备场景，则在调用本函数前应将它们选出。为此，可将初始对象回选入DC，也可用SaveDC， RestoreDC函数对回复DC为其创建时的状态
在vb里使用
不要将它用于由vb hdc属性获取的设备场景句柄


DPtoLP
VB声明
Declare Function DPtoLP Lib "gdi32" Alias "DPtoLP" (ByVal hdc As Long, lpPoint As POINTAPI, ByVal nCount As Long) As Long
说明
将点阵从设备坐标转换到专用设备场景逻辑坐标
返回值
Long，执行成功为非零值，失败则为零
参数表
参数 | 类型及说明
hdc | Long，确定逻辑坐标系统的设备场景句柄
lpPoint | POINTAPI，包含有设备坐标点的一个或多个POINTAPI结构的第一入口。每个入口都将被转换为逻辑坐标（若为世界转换则转换为世界坐标）
nCount | Long，lpPoint阵列中的入口数


DrawText
VB声明
Declare Function DrawText Lib "user32" Alias "DrawTextA" (ByVal hdc As Long, ByVal lpStr As String, ByVal nCount As Long, lpRect As RECT, ByVal wFormat As Long) As Long
说明
将文本描绘到指定的矩形中
返回值
Long，描绘文字的高度
参数表
参数 | 类型及说明
hdc | Long，欲在其中显示文字的一个设备场景的句柄
lpStr | String，欲描绘的文本字串
nCount | Long，欲描绘的字符数量。如果要描绘整个字串（直到空中止符），则可将这个参数设为-1
lpRect | RECT，指定用于绘图的一个格式化矩形（采用逻辑坐标）
wFormat | Long，一个标志位数组，决定了以何种形式执行绘图。参考下面总结的常数类型列表
 | 标志常数 | 说明
 | DT_BOTTOM | 必须同时指定DT_SINGLE。指示文本对齐格式化矩形的底边
 | DT_CALCRECT | 象下面这样计算格式化矩形：多行绘图时矩形的底边根据需要进行延展，以便容下所有文字；单行绘图时，延展矩形的右侧。不描绘文字。由lpRect参数指定的矩形会载入计算出来的值
 | DT_CENTER | 文本垂直居中
 | DT_EXPANDTABS | 描绘文字的时候，对制表站进行扩展。默认的制表站间距是8个字符。但是，可用DT_TABSTOP标志改变这项设定
 | DT_EXTERNALLEADING | 计算文本行高度的时候，使用当前字体的外部间距属性（the external leading attribute）
 | DT_LEFT | 文本左对齐
 | DT_NOCLIP | 描绘文字时不剪切到指定的矩形
 | DT_NOPREFIX | 通常，函数认为 & 字符表示应为下一个字符加上下划线。该标志禁止这种行为
 | DT_RIGHT | 文本右对齐
 | DT_SINGLELINE | 只画单行
 | DT_TABSTOP | 指定新的制表站间距，采用这个整数的高8位
 | DT_TOP | 必须同时指定DT_SINGLE。指示文本对齐格式化矩形的顶部
 | DT_VCENTER | 必须同时指定DT_SINGLE。指示文本对齐格式化矩形的中部
 | DT_WORDBREAK | 进行自动换行。如用SetTextAlign函数设置了TA_UPDATECP标志，这里的设置则无效

Top


DrawTextEx
VB声明
Declare Function DrawTextEx Lib "user32" Alias "DrawTextExA" (ByVal hDC As Long, ByVal lpsz As String, ByVal n As Long, lpRect As RECT, ByVal un As Long, lpDrawTextParams As DRAWTEXTPARAMS) As Long
说明
与DrawText相似，只是加入了更多的功能
返回值
Long，描绘文字的高度
参数表
参数 | 类型及说明
hDC | Long，要在其中绘图的一个设备场景的句柄
lpsz | String，欲描绘的文本字串
n | Long，欲描绘的字符数量。如果要描绘整个字串（直到空中止符），则可将这个参数设为-1
lpRect | RECT，指定用于绘图的一个格式化矩形（采用逻辑坐标）
un | Long，一个标志位。决定了以何种形式执行绘图。参考DrawText的wFormat参数和下表。其中下表列出的是新增的常数
 | 标志常数 | 说明
 | DT_EDITCONTROL | 对一个多行编辑控件进行模拟。不显示部分可见的行
 | DT_ENDELLIPSES | 倘若字串不能在矩形里全部容下，就在末尾显示省略号
 | DT_PATHELLIPSES | 如字串包含了 \ 字符，就用省略号替换字串内容，使其能在矩形中全部容下。例如，一个很长的路径名可能换成这样显示——c:\windows\...\doc\readme.txt
 | DT_MODIFYSTRING | 如指定了DT_ENDELLIPSES 或 DT_PATHELLIPSES，就会对字串进行修改，使其与实际显示的字串相符
 | DT_RTLREADING | 如选入设备场景的字体属于希伯来或阿拉伯语系，就从右到左描绘文字
lpDrawTextParams | DRAWTEXTPARAMS，这个结构包含了附加的绘图参数

Top


EnumFontFamilies
VB声明
Declare Function EnumFontFamilies Lib "gdi32" Alias "EnumFontFamiliesA" (ByVal hdc As Long, ByVal lpszFamily As String, ByVal lpEnumFontFamProc As Long, ByVal lParam As Long) As Long
说明
列举指定设备可用的字体
返回值
Long，由回调函数返回的前一个值
参数表
参数 | 类型及说明
hdc | Long，设备场景的句柄
lpszFamily | String，欲枚举的字体家族。如指定 vbNullString，可枚举出每种可用字体家族中的一种字体
lpEnumFontFamProc | Long，欲调用的函数地址。这个地址是用 AddressOf 运算符为来自一个标准模块的函数进行操作，或者利用某个回调控件得到
lParam | Long，指定希望传递给回调函数的一个用户自定义值
注解
这个函数取代了API函数 EnumFonts，因为它能对TureType字体样式说明进行控制 只有实际存在的字体才会列举出来，那些可由GDI合成的字体不会列出


EnumFontFamiliesEx
VB声明
Declare Function EnumFontFamiliesEx Lib "gdi32" Alias "EnumFontFamiliesExA" (ByVal hdc As Long, lpLogFont As LOGFONT, ByVal lpEnumFontProc As Long, ByVal lParam As Long, ByVal dw As Long) As Long
说明
根据一个LOGFONT结构提供的信息，列举指定设备可用的字体
返回值
Long，由回调函数返回的前一个值
参数表
参数 | 类型及说明
hdc | Long，设备场景的句柄
lpLogFont | LOGFONT，这个结构指定了欲枚举的字体。此时用到的字段包括：lfCharSet， lfFaceName 和 lfPitchAndFamily。其他所有字段都会忽略
lpEnumFontFamProc | Long，欲调用的函数地址。这个地址是用 AddressOf 运算符为来自一个标准模块的函数进行操作，或者利用某个回调控件得到
lParam | Long，指定希望传递给回调函数的一个用户自定义值
dw | Long，保留，设为零
注解
参见EnumFontFamilies函数的注解


EqualRgn
VB声明
Declare Function EqualRgn Lib "gdi32" Alias "EqualRgn" (ByVal hSrcRgn1 As Long, ByVal hSrcRgn2 As Long) As Long
说明
确定两个区域是否相等
返回值
Long，若两区域相等为非零值。若不等为0。若有一个区域无效则返回ERRORAPI
参数表
参数 | 类型及说明
hSrcRgn1 | Long，一个区域的句柄
hSrcRgn2 | Long，区域句柄


ExcludeClipRect
VB声明
Declare Function ExcludeClipRect Lib "gdi32" Alias "ExcludeClipRect" (ByVal hdc As Long, ByVal X1 As Long, ByVal Y1 As Long, ByVal X2 As Long, ByVal Y2 As Long) As Long
说明
从专用设备场景的剪裁区中去掉一个由点X1，Y1和X2，Y2确定的矩形区。矩形内不能进行绘图
返回值
Long，返回以下常数之一以描述所得剪裁区： COMPLEXREGION：区域边界互相交叠 SIMPLEREGION：区域边界没有互相交叠 NULLREGION：区域为空 ERRORAPI：发生了错误
参数表
参数 | 类型及说明
hdc | Long，要修改的设备场景
X1,Y1 | Long，矩形（逻辑坐标）左上角的X，Y坐标
X2,Y2 | Long，矩形（逻辑坐标）右下角的X，Y坐标，矩形的右边和下边不会从剪裁区中移走


ExcludeUpdateRgn
VB声明
Declare Function ExcludeUpdateRgn Lib "user32" Alias "ExcludeUpdateRgn" (ByVal hdc As Long, ByVal hwnd As Long) As Long
说明
从专用设备场景剪裁区去掉指定窗口的刷新区域。这防止对无效区绘图（该无效区将推迟一点再刷新）
返回值
Long，见ExcludeClipRect函数返回值
参数表
参数 | 类型及说明
hdc | Long，设备场景，其剪裁区将被修改以排除hwnd窗口的刷新区
hwnd | Long，窗口句柄
在vb中使用
设您要完成一个较长或复杂的绘图操作，该函数可允许您避免画到现在没有遮盖而随后即将画的区域。这可提高性能并消除闪烁效果


ExtCreateRegion
VB声明
Declare Function ExtCreateRegion Lib "gdi32" Alias "ExtCreateRegion" (lpXform As xform, ByVal nCount As Long, lpRgnData As RGNDATA) As Long
说明
根据世界转换修改区域
返回值
Long，执行成功为已转换区域的句柄，失败则为0
参数表
参数 | 类型及说明
lpXform | xform，将用于由lpRgnData指定区域的转换
nCount | Long，lpRgnData数据结构或缓冲区的字节数
lpRgnData | RGNDATA，用GetRegionData定义区域时载入的一个结构
注解
在win95下，只有缩放和平移转换才能用该函数。它不支持旋转和剪切


ExtSelectClipRgn
VB声明
Declare Function ExtSelectClipRgn Lib "gdi32" Alias "ExtSelectClipRgn" (ByVal hdc As Long, ByVal hRgn As Long, ByVal fnMode As Long) As Long
说明
将指定区域组合到设备场景的当前剪裁区
返回值
Long，返回下列常数之一，以描述所得剪裁区： COMPLEXREGION：区域边界互相交叠 SIMPLEREGION：区域边界没有互相交叠 NULLREGION：区域为空 ERRORAPI：发生了错误
参数表
参数 | 类型及说明
hdc | Long，剪裁区将被修改的设备场景的句柄
hRgn | Long，源区域句柄。若fnMode为RGN_COPY，它可为NULL
fnMode | Long，下列常数之一：
 | RGN_AND | 新剪裁区包括即属hRgn又属当前剪裁区的部分
 | RGN_COPY | 新剪裁区为hRgn区域
 | RGN_DIFF | 新剪裁区为当前剪裁区除掉其在hRgn区内的部分
 | RGN_OR | 新剪裁区包括属hRgn或当前属当前剪裁区的部分
 | RGN_XOR | 新剪裁区包括属hRgn或当前属当前剪裁区的部分，但要除去同属两者的部分
注解
本函数对hRgn区域没有影响，执行后可毁去（destroy）该区域

Top


FillRgn
VB声明
Declare Function FillRgn Lib "gdi32" Alias "FillRgn" (ByVal hdc As Long, ByVal hRgn As Long, ByVal hBrush As Long) As Long
说明
用指定刷子填充指定区域
返回值
Long，执行成功为非零值，失败则为0
参数表
参数 | 类型及说明
hdc | Long，设备场景句柄
hRgn | Long，以数据设备坐标填充的区域句柄
hBrush | Long，要用的刷子的句柄


FrameRgn
VB声明
Declare Function FrameRgn Lib "gdi32" Alias "FrameRgn" (ByVal hdc As Long, ByVal hRgn As Long, ByVal hBrush As Long, ByVal nWidth As Long, ByVal nHeight As Long) As Long
说明
用指定刷子围绕指定区域画一个外框
返回值
Long，执行成功返回非零值，失败为0
参数表
参数 | 类型及说明
hdc | Long，设备场景句柄
hRgn | Long，将数据设备坐标填充的区域句柄
hBrush | Long，将用的刷子句柄
nWidth | Long，垂直边框宽度（以设备单元为单位）
nHeight | Long，水平边框高度（以设备单元为单位）


GetBoundsRect
VB声明
Declare Function GetBoundsRect Lib "gdi32" Alias "GetBoundsRect" (ByVal hdc As Long, lprcBounds As RECT, ByVal flags As Long) As Long
说明
获取指定设备场景的边界矩形。每个设备场景都有一个边界矩形，程序员可用它来堆放表示当前图象边界的信息
返回值
Long，出错为0，否则为下列常数之一： DCB_SET：边界矩形非空 DCB_RESET：边界矩形为空 DCB_ENABLE：边界矩形正被堆放 DCB_DISABLE：边界矩形当前没有被堆放
参数表
参数 | 类型及说明
hdc | Long，边界矩形对应的设备场景
lprcBounds | RECT，装载设备场景hdc的当前边界矩形
flags | Long，可设为常数DCB_RESET以清除边界矩形，否则设为零
注解
详情参考SetBoundsRect


GetClipBox
VB声明
Declare Function GetClipBox Lib "gdi32" Alias "GetClipBox" (ByVal hdc As Long, lpRect As RECT) As Long
说明
获取完全包含指定设备场景剪裁区的最小矩形
返回值
Long，返回下列常数之一，以描述所得剪裁区： COMPLEXREGION：区域边界互相交叠 SIMPLEREGION：区域边界没有互相交叠 NULLREGION：区域为空 ERRORAPI：发生了错误
参数表
参数 | 类型及说明
hdc | Long，设备场景句柄
lpRect | RECT，装载包含设备场景剪裁区的矩形


GetClipRgn
VB声明
Declare Function GetClipRgn Lib "gdi32" Alias "GetClipRgn" (ByVal hdc As Long, ByVal hRgn As Long) As Long
说明
获取设备场景当前剪裁区
返回值
Long，下列常数之一： 1——执行成功，剪裁区存在 0——执行成功，没有定义剪裁区 -1——出错
参数表
参数 | 类型及说明
hdc | Long，想要访问的设备场景剪裁区
hRgn | Long，已存在的区域句柄。该区域将被设为设备场景当前剪裁区
注解
hRgn装载剪裁区拷贝。它后面的改变不影响剪裁区。该函数只能载入由应用程序设置的剪裁区，那些由BeginPaint一类函数设置的内部剪裁区不能被函数访问


GetDC
VB声明
Declare Function GetDC Lib "user32" Alias "GetDC" (ByVal hwnd As Long) As Long
说明
获取指定窗口的设备场景
返回值
Long，指定窗口的设备场景句柄，出错则为0
参数表
参数 | 类型及说明
hwnd | Long，将获取其设备场景的窗口的句柄。若为0，则要获取整个屏幕的DC
注解
若窗口所属类具有CS_OWNDC， CS_CLASSDC 或 CS_PARENTDC样式，则获取的设备场景属窗口或类专有。vb的窗体和图片框控件也是这种情况，它用该函数取得的结果和控件的hdc属性相同（在autoredraw为FALSE时）。您无须考虑取回的窗体或图片框控件设备场景的默认状态，特别是绘图对象。另外，默认状态随着窗体和控件autoredraw属性的设置而不同。在设备场景释放前您必须回复其状态为初始值。对于没有CS_OWNDC， CS_CLASSDC 或 CS_PARENTDC样式的窗口的设备场景，可从通用windows缓存中获取，其状态为默认值。缓存中可用设备场景数量是有限的，因此只要可能就释放设备场景 用本函数获取的设备场景一定要用ReleaseDC函数释放，不能用DeleteDC


GetDCEx
VB声明
Declare Function GetDCEx Lib "user32" Alias "GetDCEx" (ByVal hwnd As Long, ByVal hrgnclip As Long, ByVal fdwOptions As Long) As Long
说明
为指定窗口获取设备场景。相比GetDC，本函数提供了更多的选项
返回值
Long，执行成功为指定窗口设备场景句柄。出错则为0
参数表
参数 | 类型及说明
hwnd | Long，窗口句柄
hrgnclip | Long，窗口剪裁区
fdwOptions | Long，标志字。根据下列常数设置各位：
 | DCX_CACHE | 不管窗口类的样式，从windows缓存获取设备场景
 | DCX_CLIPCHILREN | 所有可见的子窗口区都要从DC的剪裁区中排除
 | DCX_CLIPSIBLINGS | 窗口hWnd上的所有可见兄弟窗口都要从DC的剪裁区中排除
 | DCX_EXCLUDERGN | 从DC剪裁区中排除由hrgnclip指定的区域
 | DCX_EXCLUDEUPDATE | 从设备场景剪裁区中排除刷新区域
 | DCX_INTERSECTRGN | 由hrgnclip指定的区域与设备场景剪裁区相交
 | DCX_INTERSECTUPDATE | 指定区域与设备场景刷新区域相交
 | DCX_LOCKWINDOWUPDATE | 该标志为允许向窗口绘图，即使它由于LockWindowUpdate的调用被锁住
 | DCX_NORESETATTRS | 设备场景释放后不被重置为默认状态
 | DCX_PARENTCLIP | 放弃CS_PARENTDC类样式设置。DC的起点设为hWnd窗口的左上角
 | DCX_WINDOW | A device context is returned for the entire window rectangle rather than just the client area of the window
 | DCX_VALIDATE | Combine with DCX_INTERSECTUPDATE, validates the clipping region
注解
若窗口所属类具有CS_OWNDC， CS_CLASSDC 或 CS_PARENTDC样式，则获取的设备场景属窗口或类专有。这时，设备场景状态不能从初值修改。vb的窗体和控件通常是这种情况。否则，置DCX_CACHE位以从通用windows缓冲区恢复设备场景。若不置该位，则函数返回0。DC的状态位默认设置。从缓存获取的设备场景用过后要用ReleaseDC函数释放以防止系统死锁，因为windows只有5个缓存DC可用 其他情况参见GetDC函数注解

Top


GetDCOrgEx
VB声明
Declare Function GetDCOrgEx Lib "gdi32" Alias "GetDCOrgEx" (ByVal hdc As Long, lpPoint As POINTAPI) As Long
说明
获取指定设备场景起点位置（以屏幕坐标表示）。例如，设DC起点为窗口客户区左上角，则该函数返回值为该角在屏幕中的位置（以屏幕像素坐标表示）
返回值
Long，执行成功为非零值，否则为零
参数表
参数 | 类型及说明
hdc | Long，设备场景句柄
lpPoint | POINTAPI，装载设备场景起点的屏幕坐标
示例：在窗体模块中使用时，该代码装载窗体客户区左上角坐标（以屏幕坐标表示）。它也是窗体hDC属性的起点
Dim dl&
Dim pt As POINTAPI
dl& = GetDCOrgEx(hDC, pt)


GetDeviceCaps
VB声明
Declare Function GetDeviceCaps Lib "gdi32" Alias "GetDeviceCaps" (ByVal hdc As Long, ByVal nIndex As Long) As Long
说明
根据指定设备场景代表的设备的功能返回信息
返回值
Long，参见GetDeviceCaps索引表
参数表
参数 | 类型及说明
hdc | Long，要查询其设备的信息的设备场景
nIndex | Long，根据GetDeviceCaps索引表所示常数确定返回信息的类型


GetGraphicsMode
VB声明
Declare Function GetGraphicsMode Lib "gdi32" Alias "GetGraphicsMode" (ByVal hdc As Long) As Long
说明
确定是否允许增强图形模式（世界转换）
返回值
Long，下列常数之一： GM_COMPATIBLE：图形模式兼容win16 GM_ADVANCED：允许世界转换
参数表
参数 | 类型及说明
hdc | Long，其模式将被测试的设备场景
注解
只有Windows NT支持世界转换


GetMapMode
VB声明
Declare Function GetMapMode Lib "gdi32" Alias "GetMapMode" (ByVal hdc As Long) As Long
说明
为特定设备场景调入映象模式
返回值
Long，当前设备场景的映象模式。关于映象模式的说明参见SetMapMode函数
参数表
参数 | 类型及说明
hdc | Long，其模式将被测试的设备场景


GetRegionData
VB声明
Declare Function GetRegionData Lib "gdi32" Alias "GetRegionDataA" (ByVal hRgn As Long, ByVal dwCount As Long, lpRgnData As RgnData) As Long
说明
装入描述一个区域信息的RgnData结构或缓冲区
返回值
Long，如果结构足够大以装入区域的数据，返回1；出错时返回0。如果lpRgnData不够大，不能装入区域数据，则返回需要的结构大小
参数表
参数 | 类型及说明
hRgn | Long，包含信息的区域的句柄
dwCount | Long，RgnData结构的大小
lpRgnData | RgnData，这个结构用以装入区域信息
注解
RgnData是一个描述区域的定长结构。Buffer是存放区域数据的缓冲区。缓冲区实际需要的大小取决于区域的复杂程度（显然，1字节是永远不够的）。有两个选择： 1、将RgnData重定义为永远不会用到的一个大尺寸。这是需要的，因为vb不允许动态重定义结构的大小 2、分配一个字节数组并用它来代替RgnData结构。这要求将As RgnData换为As Byte来改变函数的API声明，并且传送字节数组的第一个元素 如果以后要访问RGNDATAHEADER结构的元素，需要用一个内存拷贝例程将数据从缓冲区拷贝到一个特别定义的RGNDATAHEADER结构中


GetRgnBox
VB声明
Declare Function GetRgnBox Lib "gdi32" Alias "GetRgnBox" (ByVal hRgn As Long, lpRect As RECT) As Long
说明
获取完全包含指定区域的最小矩形
返回值
Long，下列常数之一，以描述当前剪裁区： COMPLEXREGION：该区域有互相交叠的边界 SIMPLEREGION：该区域边界没有互相交叠 NULLREGION：区域为空 ERRORAPI：发生了错误
参数表
参数 | 类型及说明
hRgn | Long，区域句柄
lpRect | RECT，矩形结构，装载完全包含指定区域的矩形


GetUpdateRgn
VB声明
Declare Function GetUpdateRgn Lib "user32" Alias "GetUpdateRgn" (ByVal hwnd As Long, ByVal hRgn As Long, ByVal fErase As Long) As Long
说明
确定指定窗口的刷新区域。该区域当前无效，需要刷新
返回值
Long，下列常数之一，以描述当前剪裁区： COMPLEXREGION：该区域有互相交叠的边界 SIMPLEREGION：该区域边界没有互相交叠 NULLREGION：区域为空 ERRORAPI：发生了错误
参数表
参数 | 类型及说明
hwnd | Long，将确定刷新区域的窗口的句柄
hRgn | Long，装载hwnd窗口刷新区域的区域句柄
fErase | Long，为非零值表示窗口背景应擦除，客户区外的窗口部分是被重画 原文：TRUE (nonzero) to specify that the window background should be erased and parts of the window outside of the client area should be redrawn.


GetViewportExtEx
VB声明
Declare Function GetViewportExtEx Lib "gdi32" Alias "GetViewportExtEx" (ByVal hdc As Long, lpSize As SIZE) As Long
说明
获取设备场景视口（viewport）范围
返回值
Long，执行成功为非零值，失败为0
参数表
参数 | 类型及说明
hdc | Long，设备场景句柄
lpSize | SIZE，装载DC视口水平和垂直范围（以设备单元表示）的结构


GetViewportOrgEx
VB声明
Declare Function GetViewportOrgEx Lib "gdi32" Alias "GetViewportOrgEx" (ByVal hdc As Long, lpPoint As POINTAPI) As Long
说明
获取设备场景视口起点
返回值
Long，执行成功为非零值，失败为0
参数表
参数 | 类型及说明
hdc | Long，设备场景句柄
lpPoint | POINTAPI，装载视口起点的结构


GetWindowDC
VB声明
Declare Function GetWindowDC Lib "user32" Alias "GetWindowDC" (ByVal hwnd As Long) As Long
说明
获取整个窗口（包括边框、滚动条、标题栏、菜单等）的设备场景
返回值
Long，执行成功为窗口设备场景，失败则为0
参数表
参数 | 类型及说明
hwnd | Long，将获取其设备场景的窗口
注解
不推荐在vb里使用这个函数。用完后一定要用ReleaseDC函数释放场景


GetWindowExtEx
VB声明
Declare Function GetWindowExtEx Lib "gdi32" Alias "GetWindowExtEx" (ByVal hdc As Long, lpSize As SIZE) As Long
说明
获取指定设备场景的窗口范围
返回值
Long，执行成功为非零值，失败为0
参数表
参数 | 类型及说明
hdc | Long，设备场景句柄
lpSize | SIZE，装载设备场景逻辑窗口水平和垂直范围（以逻辑单元表示）的结构


GetWindowOrgEx
VB声明
Declare Function GetWindowOrgEx Lib "gdi32" Alias "GetWindowOrgEx" (ByVal hdc As Long, lpPoint As POINTAPI) As Long
说明
获取指定设备场景的逻辑窗口的起点
返回值
Long，执行成功为非零值，失败为0
参数表
参数 | 类型及说明
hdc | Long，设备场景句柄
lpPoint | POINTAPI，装载逻辑窗口起点的结构


GetWindowRgn
VB声明
Declare Function GetWindowRgn Lib "user32" Alias "GetWindowRgn" (ByVal hWnd As Long, ByVal hRgn As Long) As Long
说明
根据以前 SetWindowRgn 函数的定义获取窗口区域
返回值
Long，下列常数之一，以描述当前剪裁区： COMPLEXREGION：该区域有互相交叠的边界 SIMPLEREGION：该区域边界没有互相交叠 NULLREGION：区域为空 ERRORAPI：发生了错误
参数表
参数 | 类型及说明
hWnd | Long，要获取区域的窗口
hRgn | Long，区域句柄，若已设置有一个区域，则装载当前窗口区域的拷贝
注解
参考SetWindowRgn函数


GetWorldTransform
VB声明
Declare Function GetWorldTransform Lib "gdi32" Alias "GetWorldTransform" (ByVal hdc As Long, lpXform As xform) As Long
说明
如果有世界转换，为设备场景获取当前世界转换
返回值
Long，执行成功为非零值，失败为0
参数表
参数 | 类型及说明
hdc | Long，设备场景句柄
lpXform | xform，装载设备场景当前世界转换的结构
适用平台
Windows NT


IntersectClipRect
VB声明
Declare Function IntersectClipRect Lib "gdi32" Alias "IntersectClipRect" (ByVal hdc As Long, ByVal X1 As Long, ByVal Y1 As Long, ByVal X2 As Long, ByVal Y2 As Long) As Long
说明
为指定设备定义一个新的剪裁区，该区为当前剪裁区与由点X1，Y1和X2，Y2定义的矩形的交集
返回值
Long，下列常数之一，以描述当前剪裁区： COMPLEXREGION：该区域有互相交叠的边界 SIMPLEREGION：该区域边界没有互相交叠 NULLREGION：区域为空 ERRORAPI：发生了错误
参数表
参数 | 类型及说明
hdc | Long，设备场景
X1,Y1 | Long，矩形左上角X，Y坐标
X2,Y2 | Long，矩形右下角X，Y坐标


InvalidateRgn
VB声明
Declare Function InvalidateRgn Lib "user32" Alias "InvalidateRgn" (ByVal hwnd As Long, ByVal hRgn As Long, ByVal bErase As Long) As Long
说明
使窗口指定区域不活动，并将它加入窗口刷新区，使之可随后被重画
返回值
Long，TRUE
参数表
参数 | 类型及说明
hwnd | Long，窗口句柄
hRgn | Long，不活动区域句柄，该区域以窗口客户坐标定义。若该句柄为0，则将使整个窗口客户区不活动
bErase | Long，为非零值则表示要在刷新前擦除
注解
若bErase为TRUE，则刷新前整个刷新区都将被擦除而不只是定义的区域


InvertRgn
VB声明
Declare Function InvertRgn Lib "gdi32" Alias "InvertRgn" (ByVal hdc As Long, ByVal hRgn As Long) As Long
说明
通过颠倒每个像素值反转设备场景指定区域
返回值
Long，执行成功为非零值，失败为零
参数表
参数 | 类型及说明
hdc | Long，设备场景句柄
hRgn | Long，将反转的设备区域


LPtoDP
VB声明
Declare Function LPtoDP Lib "gdi32" Alias "LPtoDP" (ByVal hdc As Long, lpPoint As POINTAPI, ByVal nCount As Long) As Long
说明
将点阵从指定设备场景逻辑坐标转换为设备坐标
返回值
Long，执行成功为非零值，失败为0
参数表
参数 | 类型及说明
hdc | Long，定义了逻辑坐标系统的设备场景句柄
lpPoint | POINTAPI，包含逻辑坐标的点的一个或多个POINTAPI结构的第一入口，每个入口将被转换为设备坐标
nCount | Long，lpPoint阵列中的入口数
注解
若存在世界转换，lpPoint阵列中的点则是以世界坐标表示的


ModifyWorldTransform
VB声明
Declare Function ModifyWorldTransform Lib "gdi32" Alias "ModifyWorldTransform" (ByVal hdc As Long, lpXform As xform, ByVal iMode As Long) As Long
说明
根据指定的模式修改世界转换
返回值
Long，执行成功为非零值，失败为0
参数表
参数 | 类型及说明
hdc | Long，设备场景，其世界坐标将被修改
lpXform | xform，这个结构内含根据iMode参数附加的转换
iMode | Long，下列常数之一：
 | MWT_IDENTITY | 设置世界转换为默认的特性转换（用该特性转换时，世界转换无效），忽略lpXform参数
 | MWT_LEFTMULTIPLY | lpXform转换被当前转换乘，乘积设为新的世界转换
 | MWT_RIGHTMULTIPLY | 当前转换被lpXform转换乘，乘积设为新的世界转换
注解
与一般的乘法不同，矩阵乘法的结果与矩阵顺序有关。在MWT_LEFTMULTIPLY模式，lpXform为左边的操作数。请参考高等代数相关书籍。 调用本函数前先应调用SetGraphicsMode函数设置GM_ADVANCED图形模式
适用平台
Windows NT

Top


OffsetClipRgn
VB声明
Declare Function OffsetClipRgn Lib "gdi32" Alias "OffsetClipRgn" (ByVal hdc As Long, ByVal x As Long, ByVal y As Long) As Long
说明
按指定量平移设备场景剪裁区
返回值
Long，下列常数之一，以描述当前剪裁区： COMPLEXREGION：该区域有互相交叠的边界 SIMPLEREGION：该区域边界没有互相交叠 NULLREGION：区域为空 ERRORAPI：发生了错误
参数表
参数 | 类型及说明
hdc | Long，设备场景
x | Long，以逻辑单元表示的水平偏移
y | Long，以逻辑单元表示的垂直偏移


OffsetRgn
VB声明
Declare Function OffsetRgn Lib "gdi32" Alias "OffsetRgn" (ByVal hRgn As Long, ByVal x As Long, ByVal y As Long) As Long
说明
按指定偏移量平移指定区域
返回值
Long，下列常数之一，以描述当前剪裁区： COMPLEXREGION：该区域有互相交叠的边界 SIMPLEREGION：该区域边界没有互相交叠 NULLREGION：区域为空 ERRORAPI：发生了错误
参数表
参数 | 类型及说明
hRgn | Long，区域句柄
x | Long，以逻辑坐标表示的水平偏移量
y | Long，以逻辑坐标表示的垂直偏移量


OffsetViewportOrgEx
VB声明
Declare Function OffsetViewportOrgEx Lib "gdi32" Alias "OffsetViewportOrgEx" (ByVal hdc As Long, ByVal nX As Long, ByVal nY As Long, lpPoint As POINTAPI) As Long
说明
平移设备场景视口区域
返回值
Long，执行成功为非零值，失败为0
参数表
参数 | 类型及说明
hdc | Long，设备场景句柄
nX,nY | Long，将加到视口起点的水平和垂直偏移量（以设备坐标表示）
lpPoint | POINTAPI，装载设备场景视口原先的起点的结构，以设备坐标表示


OffsetWindowOrgEx
VB声明
Declare Function OffsetWindowOrgEx Lib "gdi32" Alias "OffsetWindowOrgEx" (ByVal hdc As Long, ByVal nX As Long, ByVal nY As Long, lpPoint As POINTAPI) As Long
说明
平移指定设备场景窗口起点
返回值
Long，执行成功为非零值，失败为0
参数表
参数 | 类型及说明
hdc | Long，设备场景句柄
nX,nY | Long，以逻辑坐标表示的窗口起点
lpPoint | POINTAPI，装载DC窗口原有的起点的的结构，以逻辑坐标表示


PaintRgn
VB声明
Declare Function PaintRgn Lib "gdi32" Alias "PaintRgn" (ByVal hdc As Long, ByVal hRgn As Long) As Long
说明
用当前刷子背景色填充指定区域
返回值
Long，执行成功为非零值，失败为0
参数表
参数 | 类型及说明
hdc | Long，设备场景句柄
hRgn | Long，将填充的区域句柄


PtInRegion
VB声明
Declare Function PtInRegion Lib "gdi32" Alias "PtInRegion" (ByVal hRgn As Long, ByVal x As Long, ByVal y As Long) As Long
说明
确定点是否在指定区域内
返回值
Long，若点在区域内为非零值，否则为0
参数表
参数 | 类型及说明
hRgn | Long，区域句柄
x | Long，以逻辑坐标表示的点的X坐标
y | Long，以逻辑坐标表示的点的Y坐标
在vb里使用
在测试复杂图象时非常有用


PtVisible
VB声明
Declare Function PtVisible Lib "gdi32" Alias "PtVisible" (ByVal hdc As Long, ByVal x As Long, ByVal y As Long) As Long
说明
确定指定点是否可见（即，点是否在设备场景剪裁区内）
返回值
Long，若点在指定设备场景剪裁区内为非零值，否则为0
参数表
参数 | 类型及说明
hdc | Long，设备场景句柄
x | Long，要检查的点的x,y坐标
y


RectInRegion
VB声明
Declare Function RectInRegion Lib "gdi32" Alias "RectInRegion" (ByVal hRgn As Long, lpRect As RECT) As Long
说明
确定矩形是否有部分在指定区域内
返回值
Long，若矩形有部分在指定区域内为非零值，否则为0
参数表
参数 | 类型及说明
hRgn | Long，区域句柄
lpRect | RECT，要测试的矩形结构
注解
矩形的底边和右边不包括在lpRect内


RectVisible
VB声明
Declare Function RectVisible Lib "gdi32" Alias "RectVisible" (ByVal hdc As Long, lpRect As RECT) As Long
说明
确定指定矩形是否有部分可见（是否在设备场景剪裁区内）
返回值
Long，矩形有部分在指定设备场景剪裁区内为非零值，否则为零
参数表
参数 | 类型及说明
hdc | Long，设备场景句柄
lpRect | RECT，用于测试是否可见的矩形（用逻辑坐标）
注解
矩形的底边和右边不包括在lpRect内


ReleaseDC
VB声明
Declare Function ReleaseDC Lib "user32" Alias "ReleaseDC" (ByVal hwnd As Long, ByVal hdc As Long) As Long
说明
释放由调用GetDC或GetWindowDC函数获取的指定设备场景。它对类或私有设备场景无效（但这样的调用不会造成损害）
返回值
Long，执行成功为1，否则为0
参数表
参数 | 类型及说明
hwnd | Long，要释放的设备场景相关的窗口句柄
hdc | Long，要释放的设备场景句柄
注解
对那些用CreateDC一类的DC创建函数生成的设备场景，不要用本函数


RestoreDC
VB声明
Declare Function RestoreDC Lib "gdi32" Alias "RestoreDC" (ByVal hdc As Long, ByVal nSavedDC As Long) As Long
说明
从设备场景堆栈恢复一个原先保存的设备场景
返回值
Long，执行成功为非零值，失败为0
参数表
参数 | 类型及说明
hdc | Long，将恢复的设备场景句柄
nSavedDC | Long，将恢复的设备场景ID号，它由SaveDC函数返回。若为-1，则恢复最近的设备场景
注解
若nSavedDC所指的不是栈顶的DC，则栈中nSavedDC之上的所有设备场景都要从栈中移出，详情参见SaveDC函数


SaveDC
VB声明
Declare Function SaveDC Lib "gdi32" Alias "SaveDC" (ByVal hdc As Long) As Long
说明
将指定设备场景状态保存到Windows设备场景堆栈。DC的映射模式、窗口和视口缩放、剪裁区、所选对象列表都要保存。本函数通常在要对设备场景作临时改动时使用，DC属性可用RestoreDC函数恢复
返回值
Long，一个代表该设备场景的整数，据此可用RestoreDC函数恢复。出错则为0
参数表
参数 | 类型及说明
hdc | Long，要保存的设备场景句柄
注解
设备场景被保存到内部堆栈，这意味着可多次保存一个设备场景状态。例如，您可在进入某个函数时保存设备场景，在其中完成某些api调用，再保存一次，作更多的调用后，恢复前一状态，再作其他api函数调用，最后退出该函数前恢复原有设备场景状态。可保存的设备场景个数仅受限于内存大小


ScaleViewportExtEx
VB声明
Declare Function ScaleViewportExtEx Lib "gdi32" Alias "ScaleViewportExtEx" (ByVal hdc As Long, ByVal nXnum As Long, ByVal nXdenom As Long, ByVal nYnum As Long, ByVal nYdenom As Long, lpSize As SIZE) As Long
说明
缩放设备场景视口的范围
返回值
Long，执行成功为非零值，失败为0
参数表
参数 | 类型及说明
hdc | Long，设备场景句柄
nXnum,nYnum | Long，当前X，Y范围将与本数值相乘
nXdenom,nYdenom | Long，当前X，Y范围将被本数值除
lpSize | SIZE，装载原有水平和垂直视口范围的结构
注解
本函数仅在MM_ISOTROPIC 和 MM_ANISOTROPIC映射模式下有效，在MM_ISOTROPIC模式，要在设置视口范围之前设置窗口范围


ScaleWindowExtEx
VB声明
Declare Function ScaleWindowExtEx Lib "gdi32" Alias "ScaleWindowExtEx" (ByVal hdc As Long, ByVal nXnum As Long, ByVal nXdenom As Long, ByVal nYnum As Long, ByVal nYdenom As Long, lpSize As SIZE) As Long
说明
缩放指定设备场景窗口范围
返回值
Long，执行成功为非零值，失败为0
参数表
参数 | 类型及说明
hdc | Long，设备场景句柄
nXnum,nYnum | Long，当前X，Y范围将与本数值相乘
nXdenom,nYdenom | Long，当前X，Y范围将被本数值除
lpSize | SIZE，装载原有水平和垂直视口范围的结构
注解
本函数仅在MM_ISOTROPIC 和 MM_ANISOTROPIC映射模式下有效，在MM_ISOTROPIC模式，要在设置视口范围之前设置窗口范围


ScrollDC
VB声明
Declare Function ScrollDC Lib "user32" Alias "ScrollDC" (ByVal hdc As Long, ByVal dx As Long, ByVal dy As Long, lprcScroll As RECT, lprcClip As RECT, ByVal hrgnUpdate As Long, lprcUpdate As RECT) As Long
说明
在窗口（由设备场景代表）中水平和（或）垂直滚动矩形
返回值
Long，执行成功为非零值，失败为0，并设置GetLastError
参数表
参数 | 类型及说明
hdc | Long，设备场景句柄
dx | Long，将滚动的水平单位
dy | Long，将滚动的垂直单位
lprcScroll | RECT，要滚动的矩形
lprcClip | RECT，定义剪裁区的矩形，滚动只能在该区内进行
hrgnUpdate | Long，该区域设置为客户坐标系统中不被滚动操作覆盖的区，也可为0，则表示没有设置刷新区域
lprcUpdate | RECT，该矩形为客户坐标系统中不被滚动操作覆盖的区，也可为0（要求修改vb声明使之能接收lprcUpdate为长整型参数）
注解
若hrgnUpdate和lprcUpdate都为NULL，windows将不能为该DC计算刷新区


SelectClipRgn
VB声明
Declare Function SelectClipRgn Lib "gdi32" Alias "SelectClipRgn" (ByVal hdc As Long, ByVal hRgn As Long) As Long
说明
为指定设备场景选择新的剪裁区
返回值
Long，下列常数之一，以描述当前剪裁区： COMPLEXREGION：该区域有互相交叠的边界 SIMPLEREGION：该区域边界没有互相交叠 NULLREGION：区域为空 ERRORAPI：发生了错误（保留原有剪裁区）
参数表
参数 | 类型及说明
hdc | Long，将设置新剪裁区的设备场景
hRgn | Long，将为设备场景设置剪裁区的句柄，该区域使用设备坐标
注解
该函数拷贝剪裁区；这样同一剪裁区可用于多个设备场景，删除它不会影响每个设备场景的剪裁区。某些打印机文本和图形有不同的坐标系统，这时，应选用精度高的坐标系统——例如，点阵打印机用抖动算法，其文本精度比图形精度高，则应选用文本坐标系统 若使用WM_PAINT消息的子类，处理该消息使您用本函数增加的剪裁区不能超过窗口的不活动区


SetBoundsRect
VB声明
Declare Function SetBoundsRect Lib "gdi32" Alias "SetBoundsRect" (ByVal hdc As Long, lprcBounds As RECT, ByVal flags As Long) As Long
说明
设置指定设备场景的边界矩形。每个设备场景都有一个边界矩形，编程者可用来堆放表示当前图象边界的信息。当允许边界矩形堆放时，每次windows向设备场景绘图，绘图位置都与边界矩形比较，若有必要就要扩展边界矩形以包括绘图位置。这提供了一种方法可确定设备场景的哪些部分已画了
返回值
Long，调用本函数前的边界设置： DCB_SET：边界矩形不为空 DCB_RESET：边界矩形为空 DCB_ENABLE：边界矩形已被堆放 DCB_DISABLE：边界矩形没被堆放
参数表
参数 | 类型及说明
hdc | Long，边界矩形对应的设备场景
lprcBounds | RECT，用于设置边界矩形的矩形
flags | Long，标志集合，可用下列常数组合而成
 | DCB_ACCUMULATE | 新的边界矩形由当前边界矩形和lprcBounds联合而成
 | DCB_DISABLE | 关闭边界堆放，该值为默认值
 | DCB_ENABLE | 打开边界堆放
 | DCB_RESET | 清除原有边界矩形，用DCB_ACCUMULATE设置新的边界矩形为lprcBounds

Top


SetGraphicsMode
VB声明
Declare Function SetGraphicsMode Lib "gdi32" Alias "SetGraphicsMode" (ByVal hdc As Long, ByVal iMode As Long) As Long
说明
允许或禁止增强图形模式，以提供某些支持（包括世界转换）
返回值
Long，执行成功为原来的图形模式，失败为0
参数表
参数 | 类型及说明
hdc | Long，将为其设置模式的设备场景
iMode | Long，下列值之一： GM_COMPATIBLE：设置win16兼容模式 GM_ADVANCED：允许增强图形模式，包括世界转换
注解
只有Windows NT支持世界转换 若您已进入增强图形模式并已设置有世界转换，则您在将图形模式改回GM_COMPATIBLE之前，必须用SetWorldTransform或ModifyWorldTransform函数将世界转换改回默认的特性转换。关于特性转换更多的信息参考ModifyWorldTransform


SetMapMode
VB声明
Declare Function SetMapMode Lib "gdi32" Alias "SetMapMode" (ByVal hdc As Long, ByVal nMapMode As Long) As Long
说明
设置指定设备场景的映射模式
返回值
Long，执行成功为设备场景原来的映射模式，失败为0
参数表
参数 | 类型及说明
hdc | Long，设备场景句柄
nMapMode | Long，下列常数之一：
 | MM_ANISOTROPIC | 视口和窗口范围可完全任意
 | MM_HIENGLISH | 逻辑单元为0.001 inch，起点在左下角
 | MM_HIMETRIC | 逻辑单元为0.01 millimeter，起点在左下角
 | MM_ISOTROPIC | 视口和窗口范围任意，只是x和y逻辑单元尺寸要相同
 | MM_LOENGLISH | 逻辑单元为0.01 inch，起点在左下角
 | MM_HIMETRIC | 逻辑单元为0.1 millimeter，起点在左下角
 | MM_TEXT | 逻辑单元为一个像素
 | MM_TWIPS | 逻辑单元为1 twip (1/1440 inch)，起点在左下角


SetRectRgn
VB声明
Declare Function SetRectRgn Lib "gdi32" Alias "SetRectRgn" (ByVal hRgn As Long, ByVal X1 As Long, ByVal Y1 As Long, ByVal X2 As Long, ByVal Y2 As Long) As Long
说明
设置区域为X1，Y1和X2，Y2描述的矩形
返回值
Long，执行成功为非零值，失败为0
参数表
参数 | 类型及说明
hRgn | Long，该区域将被设置为指定矩形
X1,Y1 | Long，矩形左上角X，Y坐标
X2,Y2 | Long，矩形右下角X，Y坐标
注解
本函数与CreateRectRgn相同，只是它是设置一个已存在区域而不是创建一个新区域 矩形的底和右边不包括在区域内


SetViewportExtEx
VB声明
Declare Function SetViewportExtEx Lib "gdi32" Alias "SetViewportExtEx" (ByVal hdc As Long, ByVal nX As Long, ByVal nY As Long, lpSize As SIZE) As Long
说明
设置设备场景视口范围
返回值
Long，执行成功为非零值，失败为0
参数表
参数 | 类型及说明
hdc | Long，设备场景句柄
nX,nY | Long，视口水平和垂直范围
lpSize | SIZE，装载DC视口原来的水平和垂直范围（以设备单元表示）的结构
注解
本函数只在MM_ISOTROPIC和MM_ANISOTROPIC映射模式下有效。在MM_ISOTROPIC模式下，设置视口范围必须在窗口范围之前


SetViewportOrgEx
VB声明
Declare Function SetViewportOrgEx Lib "gdi32" Alias "SetViewportOrgEx" (ByVal hdc As Long, ByVal nX As Long, ByVal nY As Long, lpPoint As POINTAPI) As Long
说明
设置设备场景视口起点
返回值
Long，执行成功为非零值，失败为0
参数表
参数 | 类型及说明
hdc | Long，设备场景句柄
nX,nY | Long，以设备坐标表示的视口起点
lpPoint | POINTAPI，装载DC视口原来的起点的结构


SetWindowExtEx
VB声明
Declare Function SetWindowExtEx Lib "gdi32" Alias "SetWindowExtEx" (ByVal hdc As Long, ByVal nX As Long, ByVal nY As Long, lpSize As SIZE) As Long
说明
设置指定设备场景窗口范围
返回值
Long，执行成功为非零值，失败为0
参数表
参数 | 类型及说明
hdc | Long，设备场景句柄
nX,nY | Long，窗口水平和垂直范围
lpSize | SIZE，装载设备场景原来的水平和垂直窗口范围（以逻辑单元表示）的结构
注解
本函数只在MM_ISOTROPIC和MM_ANISOTROPIC映射模式下有效。在MM_ISOTROPIC模式下，设置视口范围必须在窗口范围之前


SetWindowOrgEx
VB声明
Declare Function SetWindowOrgEx Lib "gdi32" Alias "SetWindowOrgEx" (ByVal hdc As Long, ByVal nX As Long, ByVal nY As Long, lpPoint As POINTAPI) As Long
说明
设置指定设备场景窗口起点
返回值
Long，执行成功为非零值，失败为0
参数表
参数 | 类型及说明
hdc | Long，设备场景句柄
nX,nY | Long，以逻辑坐标表示的窗口起点
lpPoint | POINTAPI，装载原来窗口起点的结构


SetWindowRgn
VB声明
Declare Function SetWindowRgn Lib "user32" Alias "SetWindowRgn" (ByVal hWnd As Long, ByVal hRgn As Long, ByVal bRedraw As Boolean) As Long
说明
这是那些很难有人注意到的对编程者来说是个巨大的宝藏的隐含的API函数中的一个。本函数允许您改变窗口的区域。 通常所有窗口都是矩形的——窗口一旦存在就含有一个矩形区域。本函数允许您放弃该区域。这意味着您可以创建圆的、星形的窗口，也可以将它分为两个或许多部分——实际上可以是任何形状
返回值
Long，执行成功为非零值，失败为0
参数表
参数 | 类型及说明
hWnd | Long，将设置其区域的窗口
hRgn | Long，将设置的区域的句柄，一旦设置了该区域，就不能使用或修改该区域句柄，也不要删除它
bRedraw | Boolean，若为TRUE，则立即重画窗口
注解
为区域指定的所有坐标都以窗口坐标（不是客户坐标）表示，它们以整个窗口（包括标题栏和边框）的左上角为起点


SetWorldTransform
VB声明
Declare Function SetWorldTransform Lib "gdi32" Alias "SetWorldTransform" (ByVal hdc As Long, lpXform As xform) As Long
说明
设置世界转换
返回值
Long，执行成功为非零值，失败为0
参数表
参数 | 类型及说明
hdc | Long，设备场景
lpXform | xform，一个包含将用世界转换的结构
注解
适用于Windows NT 在使用世界转换前必须调用SetGraphicsMode函数设置图形模式为GM_ADVANCED模式


ValidateRgn
VB声明
Declare Function ValidateRgn Lib "user32" Alias "ValidateRgn" (ByVal hwnd As Long, ByVal hRgn As Long) As Long
说明
激活窗口中指定区域，把它从刷新区移走
返回值
Long，执行成功为非零值，失败为0
参数表
参数 | 类型及说明
hwnd | Long，窗口句柄
hRgn | Long，定义要激活区的区域句柄，该区域以窗口客户坐标表示


WindowFromDC
VB声明
Declare Function WindowFromDC Lib "user32" Alias "WindowFromDC" (ByVal hdc As Long) As Long
说明
取回与某一设备场景相关的窗口的句柄
返回值
Long，执行成功为设备场景对应的窗口的句柄，失败为0
参数表
参数 | 类型及说明
hdc | Long，设备场景句柄


CallNamedPipe
VB声明
Declare Function CallNamedPipe Lib "kernel32" Alias "CallNamedPipeA" (ByVal lpNamedPipeName As String, lpInBuffer As Any, ByVal nInBufferSize As Long, lpOutBuffer As Any, ByVal nOutBufferSize As Long, lpBytesRead As Long, ByVal nTimeOut As Long) As Long
说明
这个函数由一个希望通过管道通信的一个客户进程调用。如有可能，它就同一个管道连接（在必要的情况下等候管道可用）。随后，它对指定的数据进行读写，然后将管道关闭
返回值
Long，非零表示成功，零表示失败。会设置GetLastError
参数表
参数 | 类型及说明
lpNamedPipeName | String，欲打开管道的名称
lpInBuffer | Any，包含了要写入管道的数据的一个内存缓冲区
nInBufferSize | Long，lpInBuffer缓冲区中的字符数量
lpOutBuffer | Any，指定一个内存缓冲区，用于装载从管道中读出的数据
nOutBufferSize | Long，指定一个长整数变量，用于装载来自管道的数据
lpBytesRead | Long，指定从管道中读出的字节数。会阅读单条消息。如lpOutBuffer的容量不够大，不能容下整条消息，则函数会返回FALSE，而且GetLastError会设为ERROR_MORE_DATA（消息中留下的任何字节都会丢失）
nTimeOut | Long，下述常数之一：
 | NMPWAIT_NOWAIT | 如管道不可用，则立即返回一个错误
 | NMPWAIT_WAIT_FOREVER | 永远等候管道可用
 | NMPWAIT_USE_DEFAULT_WAIT | 使用管道的默认超时设置，这个设置是用CreateNamedPipe函数指定的

Top


CancelWaitableTimer
VB声明
Declare Function CancelWaitableTimer Lib "kernel32" (ByVal hTimer As Long)
说明
这个函数用于取消一个可以等待下去的计时器操作。计时器保持它当前的状态，而且除非用SetWaitableTimer函数明确启动，否则它不会重新启动
返回值
Long，非零表示成功，零表示失败。会设置GetLastError
参数表
参数 | 类型及说明
hTimer | Long，可等待计时器的句柄
适用平台
Windows NT


ConnectNamedPipe
VB声明
Declare Function ConnectNamedPipe Lib "kernel32" Alias "ConnectNamedPipe" (ByVal hNamedPipe As Long, lpOverlapped As OVERLAPPED) As Long
说明
指示一台服务器等待下去，直至客户机同一个命名管道连接
返回值
Long，如lpOverlapped为NULL，那么： □ 如管道已连接，就返回Ture（非零）；如发生错误，或者管道已经连接，就返回零（GetLastError此时会返回ERROR_PIPE_CONNECTED） □ lpOverlapped有效，就返回零；如管道已经连接，GetLastError会返回ERROR_PIPE_CONNECTED；如重叠操作成功完成，就返回ERROR_IO_PENDING。在这两种情况下，倘若一个客户已关闭了管道，且服务器尚未用DisconnectNamedPipe函数同客户断开连接，那么GetLastError都会返回ERROR_NO_DATA
参数表
参数 | 类型及说明
hNamedPipe | Long，管道的句柄
lpOverlapped | OVERLAPPED，如设为NULL（传递ByVal As Long），表示将线程挂起，直到一个客户同管道连接为止。否则就立即返回；此时，如管道尚未连接，客户同管道连接时就会触发lpOverlapped结构中的事件对象。随后，可用一个等待函数来监视连接
适用平台
Windows NT
注解
可用这个函数将一个管道换成同另一个客户连接，但首先必须用DisconnectNamedPipe函数断开同当前进程的连接


CreateEvent
VB声明
Declare Function CreateEvent Lib "kernel32" Alias "CreateEventA" (lpEventAttributes As SECURITY_ATTRIBUTES, ByVal bManualReset As Long, ByVal bInitialState As Long, ByVal lpName As String) As Long
说明
创建一个事件对象
返回值
Long，如执行成功，返回事件对象句柄；零表示出错。会设置GetLastError。即使返回一个有效的句柄，但同时指出指定的名字已经存在，GetLastError也会设为ERROR_ALREADY_EXISTS
参数表
参数 | 类型及说明
lpEventAttributes | SECURITY_ATTRIBUTES，指定一个结构，用于设置对象的安全特性。如变成ByVal As Long，并传递零值，则表明使用对象默认的安全设置
bManualReset | Long，如果为TRUE，表示创建一个人工重设事件；如果为FALSE，表示创建一个自动重设事件
bInitialState | Long，如事件应内部进入触发状态，则为TRUE
lpName | String，指定事件对象的名字。用vbNullString创建一个未命名事件对象。如已经存在拥有这个名字的一个事件，则现有的命名事件就会打开。这个名字可能不与一个现有互斥体、信号机、可等待计时器或文件映射的名字相符
注解
一旦不再需要，注意一定要用CloseHandle关闭事件句柄。如对象的所有句柄都已关闭，对象也会自动删除


CreateMailslot
VB声明
Declare Function CreateMailslot Lib "kernel32" Alias "CreateMailslotA" (ByVal lpName As String, ByVal nMaxMessageSize As Long, ByVal lReadTimeout As Long, lpSecurityAttributes As SECURITY_ATTRIBUTES) As Long
说明
创建一个邮路。返回的句柄由邮路服务器使用（收件人）
返回值
Long，如执行成功，返回邮路的句柄；INVALID_HANDLE_VALUE表示失败。会设置GetLastError
参数表
参数 | 类型及说明
lpName | String，指定邮路的名字，采用的形式如下：\\.\邮路\[路径\]邮路名
nMaxMessageSize | Long，指定一个邮路消息的最大长度。零表示无限长。请注意，对于穿越一个网络域到多个邮路的广播消息，最大长度是400
lReadTimeout | Long，等待指定的数据时，用这个参数指定邮路使用的默认超时设置，以毫秒为单位。零表示不等待。常数MAILSLOT_WAIT_FOREVER表示一直等到数据到达
lpSecurityAttributes | SECURITY_ATTRIBUTES，指定一个结构，或传递零值（将参数声明为ByVal As Long，并传递零值），表示使用不允许继承的默认描述符


CreateMutex
VB声明
Declare Function CreateMutex Lib "kernel32" Alias "CreateMutexA" (lpMutexAttributes As SECURITY_ATTRIBUTES, ByVal bInitialOwner As Long, ByVal lpName As String) As Long
说明
创建一个互斥体（MUTEX）
返回值
Long，如执行成功，就返回互斥体对象的句柄；零表示出错。会设置GetLastError。即使返回的是一个有效句柄，但倘若指定的名字已经存在，GetLastError也会设为ERROR_ALREADY_EXISTS
参数表
参数 | 类型及说明
lpMutexAttributes | SECURITY_ATTRIBUTES，指定一个SECURITY_ATTRIBUTES结构，或传递零值（将参数声明为ByVal As Long，并传递零值），表示使用不允许继承的默认描述符
bInitialOwner | Long，如创建进程希望立即拥有互斥体，则设为TRUE。一个互斥体同时只能由一个线程拥有
lpName | String，指定互斥体对象的名字。用vbNullString创建一个未命名的互斥体对象。如已经存在拥有这个名字的一个事件，则打开现有的已命名互斥体。这个名字可能不与现有的事件、信号机、可等待计时器或文件映射相符
注解
一旦不再需要，注意必须用CloseHandle函数将互斥体句柄关闭。从属于它的所有句柄都被关闭后，就会删除对象 进程中止前，一定要释放互斥体，如不慎未采取这个措施，就会将这个互斥体标记为废弃，并自动释放所有权。共享这个互斥体的其他应用程序也许仍然能够用它，但会接收到一个废弃状态信息，指出上一个所有进程未能正常关闭。这种状况是否会造成影响取决于涉及到的具体应用程序


CreateNamedPipe
VB声明
Declare Function CreateNamedPipe Lib "kernel32" Alias "CreateNamedPipeA" (ByVal lpName As String, ByVal dwOpenMode As Long, ByVal dwPipeMode As Long, ByVal nMaxInstances As Long, ByVal nOutBufferSize As Long, ByVal nInBufferSize As Long, ByVal nDefaultTimeOut As Long, lpSecurityAttributes As SECURITY_ATTRIBUTES) As Long
说明
创建一个命名管道。返回的句柄由管道的服务器端使用
返回值
Long，如执行成功，返回管道的句柄。INVALID_HANDLE_VALUE表示失败。会设置GetLastError
参数表
参数 | 类型及说明
lpName | String，指定管道名，采用的形式是：\\.\管道\管道名。最多可达256个字符的长度，而且不用区分大小写。如果存在指定名字的一个管道，则创建那个管道的一个新实例
dwOpenMode | Long，下述常数组的一个组合
 | 下述常数之一（对于管道的所有实例都要一样）：
 | PIPE_ACCESS_DUPLEX | 管道是双向的
 | PIPE_ACCESS_INBOUND | 数据从客户端流到服务器端
 | PIPE_ACCESS_OUTBOUND | 数据从服务器端流到客户端
 | 下述常数的任意组合
 | FILE_FLAG_WRITE_THROUGH | 在网络中建立的字节型管道内，强迫数据在每次读写操作的时候通过网络传输。否则传输就可能延迟
 | FILE_FLAG_OVERLAPPED | 允许（但不要求）用这个管道进行异步（重叠式）操作
 | 常数WRITE_DAC， WRITE_OWNER 和 ACCESS_ SYSTEM_SECURITY提供了附加的安全选项
dwPipeMode | Long，下述常数组的一个组合：
 | 下述常数之一（管道的所有实例都必须指定相同的常数）
 | PIPE_TYPE_BYTE | 数据作为一个连续的字节数据流写入管道
 | PIPE_TYPE_MESSAGE | 数据用数据块（名为“消息”或“报文”）的形式写入管道
 | 下述常数之一：
 | PIPE_READMODE_PIPE | 数据以单独字节的形式从管道中读出
 | PIPE_READMODE_MESSAGE | 数据以名为“消息”的数据块形式从管道中读出（要求指定PIPE_TYPE_MESSAGE）
 | 下述常数之一：
 | PIPE_WAIT | 同步操作在等待的时候挂起线程
 | PIPE_NOWAIT（不推荐！） | 同步操作立即返回。这样可为异步传输提供一种落后的实现方法，已由Win32的重叠式传输机制取代了
nMaxInstances | Long，这个管道能够创建的最大实例数量。必须是1到常数PIPE_UNLIMITED_INSTANCES间的一个值。它对于管道的所有实例来说都应是相同的
nOutBufferSize | Long，建议的输出缓冲区长度；零表示用默认设置
nInBufferSize | Long，建议的输入缓冲区长度；零表示用默认设置
nDefaultTimeOut | Long，管道的默认等待超时。对一个管道的所有实例来说都应相同
lpSecurityAttributes | SECURITY_ATTRIBUTES，指定一个SECURITY_ATTRIBUTES结构，或者传递零值（将参数声明为ByVal As Long，并传递零值），以便使用不允许继承的一个默认描述符
适用平台
Windows NT

Top


CreatePipe
VB声明
Declare Function CreatePipe Lib "kernel32" Alias "CreatePipe" (phReadPipe As Long, phWritePipe As Long, lpPipeAttributes As SECURITY_ATTRIBUTES, ByVal nSize As Long) As Long
说明
创建一个匿名管道
返回值
Long，非零表示成功，零表示失败。会设置GetLastError
参数表
参数 | 类型及说明
phReadPipe | Long，指定一个变量，设为管道读入（输出）端的一个句柄
phWritePipe | Long，指定一个变量，设为管道写入（输入）端的一个句柄
lpPipeAttributes | SECURITY_ATTRIBUTES，指定一个SECURITY_ATTRIBUTES结构，或者传递零值（将参数声明为ByVal As Long，并传递零值），以便使用不允许继承的一个默认描述符
nSize | Long，管道缓冲区的建议大小。零表示用默认值
注解
匿名管道不允许异步操作，所以如在一个管道中写入数据，且缓冲区已满，那么除非另一个进程从管道中读出数据，从而腾出了缓冲区的空间，否则写入函数不会返回


CreateProcess
VB声明
Declare Function CreateProcess Lib "kernel32" Alias "CreateProcessA" (ByVal lpApplicationName As String, ByVal lpCommandLine As String, lpProcessAttributes As SECURITY_ATTRIBUTES, lpThreadAttributes As SECURITY_ATTRIBUTES, ByVal bInheritHandles As Long, ByVal dwCreationFlags As Long, lpEnvironment As Any, ByVal lpCurrentDriectory As String, lpStartupInfo As STARTUPINFO, lpProcessInformation As PROCESS_INFORMATION) As Long
说明
创建一个新进程（比如执行一个程序）
返回值
Long，非零表示成功，零表示失败。会设置GetLastError
参数表
参数 | 类型及说明
lpApplicationName | String，要执行的应用程序的名字。可设为vbNullString；在这种情况下，应用程序的名字应在lpCommandLine参数的起始处出现
lpCommandLine | String，要执行的命令行。可用GetCommandLine函数取得一个进程使用的命令行。Windows会尽可能地根据下述搜索顺序来查找执行文件： （1）包含了父进程执行文件的目录 （2）父进程当前的目录 （3）由GetSystemDirectory返回的系统目录 （4）仅适于windows NT：16位系统目录 （5）由GetWindowDirectory返回的Windows目录 （6）由PATH环境变量指定的目录
lpProcessAttributes | SECURITY_ATTRIBUTES，指定一个SECURITY_ATTRIBUTES结构，或传递零值（将参数声明为ByVal As Long，并传递零值）——表示采用不允许继承的默认描述符。该参数定义了进程的安全特性
lpThreadAttributes | SECURITY_ATTRIBUTES，指定一个SECURITY_ATTRIBUTES结构，或传递零值（将参数声明为ByVal As Long，并传递零值）——表示采用不允许继承的默认描述符。该参数定义了进程之主线程的安全特性
bInheritHandles | Long，TRUE表示允许当前进程中的所有句柄都由新建的子进程继承
dwCreationFlags | Long，来自API32.TXT文件的一个或多个下述常数之一，它们都带有前缀CREATE_。下面这些用于VB程序员：
 | CREATE_SEPARATE_WOW_VDM（仅适用于NT） | 启动一个16位的Windows应用程序时，强迫它在自己的内存空间运行
 | CREATE_SHARED_WOW_VDM（仅适用于NT） | 启动一个16位的Windows应用程序时，强迫它在共享的16位虚拟机（VM）内运行
 | CREATE_SUSPENDED | 立即挂起新进程。除非调用了ResumeThread函数函数，否则它不会恢复运行
 | 也可能是下述常数之一，用于指定优先级
 | IDLE_PRIORITY_CLASS | 新进程应该有非常低的优先级——只有在系统空闲的时候才能运行。基本值是4
 | HIGH_PRIORITY_CLASS | 新进程有非常高的优先级，它优先于大多数应用程序。基本值是13。注意尽量避免采用这个优先级
 | NORMAL_PRIORITY_CLASS | 标准优先级。如进程位于前台，则基本值是9；如在后台，则优先值是7
 | 不要在VB中使用REALTIME_PRIORITY_CLASS
lpEnvironment | Any，指向一个环境块的指针（环境缓冲区的头一个字符，或者环境块的地址）
lpCurrentDriectory | String，新进程的当前目录路径。调用函数的时候，可用vbNullString指定当前目录
lpStartupInfo | STARTUPINFO，指定一个STARTUPINFO结构，其中包含了创建进程时使用的附加信息
lpProcessInformation | PROCESS_INFORMATION，该结构用于容纳新进程的进程和线程标识符。大多数情况下，一旦这个函数返回，父应用程序都会关闭两个句柄。

Top


CreateSemaphore
VB声明
Declare Function CreateSemaphore Lib "kernel32" Alias "CreateSemaphoreA" (lpSemaphoreAttributes As SECURITY_ATTRIBUTES, ByVal lInitialCount As Long, ByVal lMaximumCount As Long, ByVal lpName As String) As Long
说明
创建一个新的信号机
返回值
Long，如执行成功，返回信号机对象的句柄；零表示出错。会设置GetLastError。即使返回一个有效的句柄，但倘若它指出同名的一个信号机已经存在，那么GetLastError也会返回ERROR_ALREADY_EXISTS
参数表
参数 | 类型及说明
lpSemaphoreAttributes | SECURITY_ATTRIBUTES，指定一个SECURITY_ATTRIBUTES结构，或传递零值（将参数声明为ByVal As Long，并传递零值）——表示采用不允许继承的默认描述符。该参数定义了信号机的安全特性
lInitialCount | Long，设置信号机的初始计数。可设置零到lMaximumCount之间的一个值
lMaximumCount | Long，设置信号机的最大计数
lpName | String，指定信号机对象的名称。用vbNullString可创建一个未命名的信号机对象。如果已经存在拥有这个名字的一个信号机，就直接打开现成的信号机。这个名字可能不与一个现有的互斥体、事件、可等待计时器或文件映射的名称相符
注解
一旦不再需要，一定记住用CloseHandle关闭信号机的句柄。它的所有句柄都关闭以后，对象自己也会删除 一旦值大于零，信号机就会触发（发出信号）。ReleaseSemaphore函数的作用是增加信号机的计数。如果成功，就调用信号机上的一个等待函数来减少它的计数


CreateWaitableTimer
VB声明
Declare Function CreateWaitableTimer Lib "kernel32" Alias "CreateWaitableTimerA" (lpSemaphoreAttributes As SECURITY_ATTRIBUTES, ByVal bManualReset As Long, ByVal lpName As String) As Long
说明
创建一个可等待的计时器对象
返回值
Long，如执行成功，返回可等待计时器对象的句柄；零表示出错。会设置GetLastError。即使返回一个有效的句柄，但倘若它指出同名的一个计时器对象已经存在，那么GetLastError也会返回ERROR_ALREADY_EXISTS
参数表
参数 | 类型及说明
lpSemaphoreAttributes | SECURITY_ATTRIBUTES，指定一个结构，用于设置对象的安全特性。如将参数声明为ByVal As Long，并传递零值，就可使用对象的默认安全设置
bManualReset | Long，如果为TRUE，表示创建一个人工重设计时器；如果为FALSE，则创建一个自动重设计时器
lpName | String，指定可等待计时器对象的名称。用vbNullString可创建一个未命名的计时器对象。如果已经存在拥有这个名字的一个可等待计时器，就直接打开现成的可等待计时器。这个名字可能不与一个现有的互斥体、事件、信号机或文件映射的名称相符
注解
一旦不再需要，一定记住用CloseHandle关闭计时器对象的句柄。它的所有句柄都关闭以后，对象自己也会删除


DisconnectNamedPipe
VB声明
Declare Function DisconnectNamedPipe Lib "kernel32" Alias "DisconnectNamedPipe" (ByVal hNamedPipe As Long) As Long
说明
断开一个客户与一个命名管道的连接
返回值
Long，非零表示成功，零表示失败。会设置GetLastError
参数表
参数 | 类型及说明
hNamedPipe | Long，管道的句柄
适用平台
Windows NT
注解
如客户尚未在它自己那端关闭管道句柄，下次试图访问管道的时候就会发生错误


DuplicateHandle
VB声明
Declare Function DuplicateHandle Lib "kernel32" Alias "DuplicateHandle" (ByVal hSourceProcessHandle As Long, ByVal hSourceHandle As Long, ByVal hTargetProcessHandle As Long, lpTargetHandle As Long, ByVal dwDesiredAccess As Long, ByVal bInheritHandle As Long, ByVal dwOptions As Long) As Long
说明
在指出一个现有系统对象当前句柄的情况下，为那个对象创建一个新句柄。当前句柄可能位于一个不同的进程
返回值
Long，非零表示成功，零表示失败。会设置GetLastError
参数表
参数 | 类型及说明
hSourceProcessHandle | Long，拥有源句柄的那个进程的句柄。如源句柄从属于当前进程，则使用GetCurrentProcess
hSourceHandle | Long，指定对象的现有句柄。
hTargetProcessHandle | Long，即将拥有新对象句柄的一个进程的句柄。如源句柄从属于当前进程，则使用GetCurrentProcess
lpTargetHandle | Long，指定用于装载新句柄的一个长整型变量
dwDesiredAccess | Long，新句柄要求的安全访问级别。如dwOptions已指定了DUPLICATE_SAME_ACCESS，那么忽略这里的设置。可以进行的访问由对象的类型决定，它们在不同系统对象的访问常数表里进行了总结
bInheritHandle | Long，如新句柄可由hSourceProcessHandle的子进程继承，则为TRUE
dwOptions | Long，下列常数的一个或两个：
 | DUPLICATE_SAME_ACCESS | 新句柄拥有与原始句柄相同的安全访问特征
 | DUPLICATE_CLOSE_SOURCE | 原始句柄已经关闭。即使发生错误。它也要关闭
注解
在一个进程中，这个函数可根据位于不同进程内的现有句柄创建一个新句柄。可以从这两个进程中发出对这个函数的调用。进程必须提供PROCESS_DUP_HANDLE访问权限，否则函数执行不能成功 句柄可以重复的对象包括控制台、文件（包括通信设备）、文件映射、事件、可等待计时器、互斥体、管道、进程、注册表项、信号机以及线程

Top


ExitProcess
VB声明
Declare Sub ExitProcess Lib "kernel32" Alias "ExitProcess" (ByVal uExitCode As Long)
说明
中止一个进程
参数表
参数 | 类型及说明
uExitCode | Long，指定想中断的那个进程的一个退出代码
在VB中使用
应尽量避免用该函数来关闭进程。不要在自己的VB程序中使用它。此时，应试着向要关闭的那个程序的主窗口投递一条WM_CLOSE消息


FindCloseChangeNotification
VB声明
Declare Function FindCloseChangeNotification Lib "kernel32" Alias "FindCloseChangeNotification" (ByVal hChangeHandle As Long) As Long
说明
关闭一个改动通知对象
返回值
Long，非零表示成功，零表示失败。会设置GetLastError
参数表
参数 | 类型及说明
hChangeHandle | Long，要关闭的那个文件改动通知对象的句柄


FindExecutable
VB声明
Declare Function FindExecutable Lib "shell32.dll" Alias "FindExecutableA" (ByVal lpFile As String, ByVal lpDirectory As String, ByVal lpResult As String) As Long
说明
查找与一个指定文件关联在一起的程序的文件名。可用Windows注册表编辑器将文件类型与特定的应用程序关联到一起。比如，扩展名为.TXT的文本文件通常与Windows记事本（Notepad.exe）关联到一起。如在文件管理器中双击含.TXT扩展名的一个文件，会自动启动记事本，并在其中载入文本文件
返回值
Long，大于32表示成功；31表示不存在文件类型的关联；0表示系统内存或资源不足；ERROR_FILE_NOT_FOUND表示指定的文件不存在；ERROR_PATH_NOT_FOUND表示指定的路径不存在；ERROR_BAD_FORMAT表示执行格式无效
参数表
参数 | 类型及说明
lpFile | String，指定要为其查找相关程序的一个文件名或程序名
lpDirectory | String，要使用的默认目录的完整路径
lpResult | String，指定一个字串缓冲区，用于装载可执行程序的名字。注意这个字串预先至少都要初始化成MAX_PATH个字符的长度


FindFirstChangeNotification
VB声明
Declare Function FindFirstChangeNotification Lib "kernel32" Alias "FindFirstChangeNotificationA" (ByVal lpPathName As String, ByVal bWatchSubtree As Long, ByVal dwNotifyFilter As Long) As Long
说明
创建一个文件通知对象。该对象用于监视文件系统发生的变化
返回值
Long，如成功，返回一个改变通知对象的句柄；INVALID_HANDLE_VALUE表示失败。会设置GetLastError
参数表
参数 | 类型及说明
lpPathName | String，要监视的目录
bWatchSubtree | Long，如果为TRUE，表示监视lpPathName的所有子目录
dwNotifyFilter | Long，带有前缀FILE_NOTIFY_CHANGE_???前缀的一个或多个常数，它们指定了对象发出信号的条件
注解
用FindCloseChangeNotification函数关闭句柄，不要用CloseHandle函数


FindNextChangeNotification
VB声明
Declare Function FindNextChangeNotification Lib "kernel32" Alias "FindNextChangeNotification" (ByVal hChangeHandle As Long) As Long
说明
重设一个文件改变通知对象，令其继续监视下一次变化
返回值
Long，非零表示成功，零表示失败。会设置GetLastError
参数表
参数 | 类型及说明
hChangeHandle | Long，要重设的那个文件改变通知对象的句柄


FreeLibrary
VB声明
Declare Function FreeLibrary Lib "kernel32" Alias "FreeLibrary" (ByVal hLibModule As Long) As Long
说明
释放指定的动态链接库，它们早先是用LoadLibrary API函数装载的
返回值
Long，非零表示成功，零表示失败。会设置GetLastError
参数表
参数 | 类型及说明
hLibModule | Long，要释放的一个库句柄
在VB里使用
只能用这个函数释放那些由应用程序明确装载的DLL。对LoadLibrary的每一次调用都应该有一个对应的FreeLibrary调用


GetCurrentProcess
VB声明
Declare Function GetCurrentProcess Lib "kernel32" Alias "GetCurrentProcess" () As Long
说明
获取当前进程的一个伪句柄
返回值
Long，当前进程的伪句柄
注解

只要当前进程需要一个进程句柄，就可以使用这个伪句柄。该句柄可以复制，但不可继承。不必调用CloseHandle函数来关闭这个句柄


GetCurrentProcessId
VB声明
Declare Function GetCurrentProcessId Lib "kernel32" Alias "GetCurrentProcessId" () As Long
说明
获取当前进程一个唯一的标识符
返回值
Long，当前的进程标识符


GetCurrentThread
VB声明
Declare Function GetCurrentThread Lib "kernel32" Alias "GetCurrentThread" () As Long
说明
获取当前线程的一个伪句柄
返回值
Long，当前线程的伪句柄
注解

只要当前线程需要使用一个线程句柄，就可以使用这个伪句柄（但在其他任务线程中都无效）。该句柄可以复制，但不可继承。不必调用CloseHandle函数来关闭这个句柄


GetCurrentThreadId
VB声明
Declare Function GetCurrentThreadId Lib "kernel32" Alias "GetCurrentThreadId" () As Long
说明
获取当前线程一个唯一的线程标识符
返回值
Long，当前的线程标识符


GetExitCodeProcess
VB声明
Declare Function GetExitCodeProcess Lib "kernel32" Alias "GetExitCodeProcess" (ByVal hProcess As Long, lpExitCode As Long) As Long
说明
获取一个已中断进程的退出代码
返回值
Long，非零表示成功，零表示失败。会设置GetLastError
参数表
参数 | 类型及说明
hProcess | Long，想获取退出代码的一个进程的句柄
lpExitCode | Long，用于装载进程退出代码的一个长整数变量。如进程尚未中止，则设为常数STILL_ACTIVE


GetExitCodeThread
VB声明
Declare Function GetExitCodeThread Lib "kernel32" Alias "GetExitCodeThread" (ByVal hThread As Long, lpExitCode As Long) As Long
说明
获取一个已中止线程的退出代码
返回值
Long，非零表示成功，零表示失败。会设置GetLastError
参数表
参数 | 类型及说明
hThread | Long，想获取退出代码的一个线程的句柄
lpExitCode | Long，用于装载线程退出代码的一个长整数变量。如线程尚未中断，则设为常数STILL_ACTIVE


GetHandleInformation
VB声明
Declare Function GetHandleInformation Lib "kernel32" Alias "GetHandleInformation" (ByVal hObject As Long, lpdwFlags As Long) As Long
说明
获取与一个系统对象句柄有关的信息
返回值
Long，非零表示成功，零表示失败。会设置GetLastError
参数表
参数 | 类型及说明
hObject | Long，要测试的句柄
lpdwFlags | Long，设置了下述一个或多个常数的位标志：
 | HANDLE_FLAG_INHERIT | 对象可由一个子进程继承
 | HANDLE_FLAG_PROTECT_FROM_CLOSE | 句柄不可用CloseHandle函数关闭
适用平台
Windows NT


GetMailslotInfo
VB声明
Declare Function GetMailslotInfo Lib "kernel32" Alias "GetMailslotInfo" (ByVal hMailslot As Long, lpMaxMessageSize As Long, lpNextSize As Long, lpMessageCount As Long, lpReadTimeout As Long) As Long
说明
获取与一个邮路有关的信息
返回值
Long，非零表示成功，零表示失败。会设置GetLastError
参数表
参数 | 类型及说明
hMailslot | Long，指定一个邮路的句柄
lpMaxMessageSize | Long，指定一个长整数变量，用于装载这个邮路的最大消息长度
lpNextSize | Long，指定一个长整数变量，用于装载下一条消息的长度。如没有消息准备好，则可设为常数MAILSLOT_NO_MESSAGE
lpMessageCount | Long，指定一个长整数变量，用于装载邮路中准备好的消息数量
lpReadTimeout | Long，指定一个长整数变量，用于装载邮路的默认阅读超时


GetModuleFileName
VB声明
Declare Function GetModuleFileName Lib "kernel32" Alias "GetModuleFileNameA" (ByVal hModule As Long, ByVal lpFileName As String, ByVal nSize As Long) As Long
说明
获取一个已装载模板的完整路径名称
返回值
Long，如执行成功，返回复制到lpFileName的实际字符数量；零表示失败。会设置GetLastError
参数表
参数 | 类型及说明
hModule | Long，一个模块的句柄。可以是一个DLL模块，或者是一个应用程序的实例句柄
lpFileName | String，指定一个字串缓冲区，要在其中容纳文件的用NULL字符中止的路径名，hModule模块就是从这个文件装载进来的
nSize | Long，装载到缓冲区lpFileName的最大字符数量
注解
在Windows 95下，函数会核查应用程序的内部版本号是否为4.0或更大的一个数字。如果是，就返回一个长文件名，否则返回短文件名


GetModuleHandle
VB声明
Declare Function GetModuleHandle Lib "kernel32" Alias "GetModuleHandleA" (ByVal lpModuleName As String) As Long
说明
获取一个应用程序或动态链接库的模块句柄
返回值
Long，如执行成功成功，则返回模块句柄。零表示失败。会设置GetLastError
参数表
参数 | 类型及说明
lpModuleName | String，指定模块名，这通常是与模块的文件名相同的一个名字。例如，NOTEPAD.EXE程序的模块文件名就叫作NOTEPAD
注解
只有在当前进程的场景中，这个句柄才会有效


GetPriorityClass
VB声明
Declare Function GetPriorityClass Lib "kernel32" Alias "GetPriorityClass" (ByVal hProcess As Long) As Long
说明
获取一个进程当前的优先级类
返回值
Long，进程的优先级类。零表示出错。会设置GetLastError
参数表
参数 | 类型及说明
hProcess | Long，进程句柄
注解
请参考对CreateProcess函数的dwCreationFlags参数的说明，了解优先级类的详细情况


GetProcessShutdownParameters
VB声明
Declare Function GetProcessShutdownParameters Lib "kernel32" Alias "GetProcessShutdownParameters" (lpdwLevel As Long, lpdwFlags As Long) As Long
说明
调查系统关闭时一个指定的进程相对于其它进程的关闭早迟情况
返回值
Long，非零表示成功，零表示失败
参数表
参数 | 类型及说明
lpdwLevel | Long，从0到&H4FF的一个值。编号越高的应用程序在系统关闭的时候应越早关闭。默认为&H280
lpdwFlags | Long，指定SHUTDOWN_NORETRY标志。如关闭一个进程超时，会出现一个重试对话框。通过设置这个标志，就可以禁止那个对话框显示出来，并直接关闭进程
适用平台
Wnidows NT


GetProcessTimes
VB声明
Declare Function GetProcessTimes Lib "kernel32" Alias "GetProcessTimes" (ByVal hProcess As Long, lpCreationTime As FILETIME, lpExitTime As FILETIME, lpKernelTime As FILETIME, lpUserTime As FILETIME) As Long
说明
获取与一个进程的经过时间有关的信息
返回值
Long，非零表示成功，零表示失败。会设置GetLastError
参数表
参数 | 类型及说明
hProcess | Long，一个进程的句柄
lpCreationTime | FILETIME，指定一个FILETIME结构，在其中装载进程的创建时间
lpExitTime | FILETIME，指定一个FILETIME结构，在其中装载进程的中止时间（如进程仍在运行，则不定义）
lpKernelTime | FILETIME，指定一个FILETIME结构，在其中装载进程花在内核模式上的总时间
lpUserTime | FILETIME，指定一个FILETIME结构，在其中装载进程花在用户模式上的总时间
适用平台
Windows NT


GetProcessWorkingSetSize
VB声明
Declare Function GetProcessWorkingSetSize Lib "kernel32" Alias "GetProcessWorkingSetSize" (ByVal hProcess As Long, lpMinimumWorkingSetSize As Long, lpMaximumWorkingSetSize As Long) As Long
说明
了解一个应用程序在运行过程中实际向它交付了多大容量的内存（工作环境）
返回值
Long，非零表示成功，零表示失败。会设置GetLastError
参数表
参数 | 类型及说明
hProcess | Long，指定一个进程的句柄
lpMinimumWorkingSetSize | Long，用于装载进程最小工作环境（容量）的一个变量
lpMaximumWorkingSetSize | Long，用于装载进程最大工作环境（容量）的一个变量
适用平台
Windows NT
注解
一个应用程序运行的时候，操作系统的虚拟内存系统会尽可能为其保持事先指定的最小工作环境（也称作“工作区”）大小。除非有空闲的内存可用，否则不会为应用程序分配超出最大工作环境设置以外的内存空间


GetThreadPriority
VB声明
Declare Function GetThreadPriority Lib "kernel32" Alias "GetThreadPriority" (ByVal hThread As Long) As Long
说明
获取指定线程的优先级设置
返回值
Long，返回带有THREAD_PRIORITY_???前缀的某个常数，它规定了线程的优级。THREAD_PRIORITY_ERROR_RETURN表示出错
参数表
参数 | 类型及说明
hThread | Long，线程的句柄
注解
线程的优先级同进程的优先级类组合在一起决定了线程的实际优先级


GetWindowThreadProcessId
VB声明
Declare Function GetWindowThreadProcessId Lib "user32" Alias "GetWindowThreadProcessId" (ByVal hwnd As Long, lpdwProcessId As Long) As Long
说明
获取与指定窗口关联在一起的一个线程和进程标识符
返回值
Long，拥有窗口的线程的标识符
参数表
参数 | 类型及说明
hwnd | Long，指定窗口句柄
lpdwProcessId | Long，指定一个变量，用于装载拥有那个窗口的一个进程的标识符


LoadLibrary
VB声明
Declare Function LoadLibrary Lib "kernel32" Alias "LoadLibraryA" (ByVal lpLibFileName As String) As Long
说明
载入指定的动态链接库，并将它映射到当前进程使用的地址空间。一旦载入，即可访问库内保存的资源
返回值
Long，如执行成功，则返回库模块的句柄；零表示失败。会设置GetLastError
参数表
参数 | 类型及说明
lpLibFileName | String，指定要载入的动态链接库的名称。采用与CreateProcess函数的lpCommandLine参数指定的同样的搜索顺序
注解
一旦不再需要，记住用FreeLibrary函数释放DLL。Windows 会跟踪了解一个DLL已装载了多少次。除非模块的使用计数减至零，否则不会在内存中实际撤消对DLL的映射


LoadLibraryEx
VB声明
Declare Function LoadLibraryEx Lib "kernel32" Alias "LoadLibraryExA" (ByVal lpLibFileName As String, ByVal hFile As Long, ByVal dwFlags As Long) As Long
说明
装载指定的动态链接库，并为当前进程把它映射到地址空间。一旦载入，就可以访问库内保存的资源
返回值
Long，若执行成功，则返回库模块的句柄；零表示失败。会设置GetLastError
参数表
参数 | 类型及说明
lpLibFileName | String，指定要载入的动态链接库的名称。采用与CreateProcess函数的lpCommandLine参数指定的同样的搜索顺序
hFile | Long，未用，设为零
dwFlags | Long，指定下述常数的一个或多个
 | DONT_RESOLVE_DLL_REFERENCES | 不对DLL进行初始化；仅用于NT
 | LOAD_LIBRARY_AS_DATAFILE | 不准备DLL执行。如装载一个DLL只是为了访问它的资源，就可以改善一部分性能
 | LOAD_WITH_ALTERED_SEARCH_PATH | 如lpLibFileName包含了一个路径，而且DLL还要装载额外的DLL，那么首先搜索的就是由lpLibFileName目录包含的路径，而不是应用程序装载进来时的那个路径
注解
一旦不再需要，记住用FreeLibrary函数释放DLL。Windows 会跟踪了解一个DLL已装载了多少次。除非模块的使用计数减至零，否则不会在内存中实际撤消对DLL的映射


LoadModule
VB声明
Declare Function LoadModule Lib "kernel32" Alias "LoadModule" (ByVal lpModuleName As String, lpParameterBlock As Any) As Long
说明
载入一个windows应用程序，并在指定的环境中执行
返回值
Long，大于32表示成功。请参考FindExecutable函数的返回值，了解进一步的情况
参数表
参数 | 类型及说明
lpModuleName | Sring，要装载的可执行程序的名字。按照与CreateProcess的lpCommandLine参数指定的同样的搜索顺序查找这个程序
lpParameterBlock | Any，指定一个结构，用它定义装载新应用程序时使用的参数


MsgWaitForMultipleObjects
VB声明
Declare Function MsgWaitForMultipleObjects Lib "user32" Alias "MsgWaitForMultipleObjects" (ByVal nCount As Long, pHandles As Long, ByVal fWaitAll As Long, ByVal dwMilliseconds As Long, ByVal dwWakeMask As Long) As Long
说明
等侯单个对象或一系列对象发出信号——标志着规定的超时已经过去，或特定类型的消息已抵达线程的输入队列。如返回条件已经满足，则立即返回
返回值
Long，如fWaitAll设为TRUE，则下述任何一个常数都标志着成功：
WAIT_ABANDONED_0 | 所有对象都发出消息，而且其中一个或多个属于互斥体（一旦拥有它们的进程中止，就会发出信号）
WAIT_TIMEOUT | 对象保持未发信号的状态，但规定的等待超时时间已经超过
WAIT_OBJECT_0 | 所有对象都发出信号
WAIT_TO_COMPLETION | （仅适用于WaitForSingleObjectEx）——由于一个I/O完成操作已准备好执行，从而造成了函数的返回
返回WAIT_FAILED表示函数执行失败。会设置GetLastError 如fWaitAll设为FALSE，那返回结果与前面说的相似，只是可能还会返回相对于WAIT_ABANDONED_0或WAIT_OBJECT_0的一个正偏移量，指出哪个对象是被抛弃还是发出信号。例如，WAIT_OBJECT_0+5的返回结果意味着列表中的第5个对象发出了信号 如果是由于dwWakeMask指定的、符合特殊标准的一条消息的到达而造成了函数的返回，则返回WAIT_OBJECT_0 + nCount
参数表
参数 | 类型及说明
nCount | Long，指定列表中的句柄数量
pHandles | Long，指定对象句柄组合中的第一个元素
fWaitAll | Long，如果为TRUE，表示除非对象同时发出信号，否则就一直等待下去；如果为FALSE，表示任何对象发出信号即可。
dwMilliseconds | Long，指定要等待的毫秒数。如设为零，表示立即返回。如指定了常数 INFINITE ，则可以根据情况无限期的等候下去
dwWakeMask | Long，带有QS_??前缀的一个或多个常数，用于标识特定的消息类型。一旦这种类型的消息到达，就会造成本函数的返回
注解
在Windows NT中，对象句柄必须指定了SYNCHRONIZE（同步）访问 如函数是由于对象发出信号而返回，这个函数还会得到一些额外的效果——具体由对象的类型决定。如下所示： □ 信号机：递增信号机计数 □ 互斥体：将互斥体的所有权赋予发出调用的线程 □ 自动重设事件：将事件发信状态设为FALSE □ 自动重设可等待计时器：将计时器的状态设回FALSE 这个函数会忽略那些输入队列中已经存在的消息——只根据新消息的接收而返回

Top


SetPriorityClass
VB声明
Declare Function SetPriorityClass Lib "kernel32" Alias "SetPriorityClass" (ByVal hProcess As Long, ByVal dwPriorityClass As Long) As Long
说明
设置一个进程的优先级类
返回值
Long，非零表示成功，零表示失败。会设置GetLastError
参数表
参数 | 类型及说明
hProcess | Long，指定一个进程的句柄
dwPriorityClass | Long，指定了新优先级类的一个常数。请参考CreateProcess函数的dwCreationFlags参数，那里有优先级类的一个列表


SetProcessShutdownParameters
VB声明
Declare Function SetProcessShutdownParameters Lib "kernel32" Alias "SetProcessShutdownParameters" (ByVal dwLevel As Long, ByVal dwFlags As Long) As Long
说明
在系统关闭期间，为指定进程设置它相对于系统中其它应用程序的关闭顺序
返回值
Long，非零表示成功，零表示失败
参数表
参数 | 类型及说明
dwLevel | Long，从0到&H4FF的一个值。编号越大的应用程序，关闭系统时也就越提前关闭。默认值是&H280
dwFlags | Long，指定SHUTDOWN_NORETRY标志。如关闭一个进程超时，会出现一个重试对话框。通过设置这个标志，就可禁止那个对话框显示出来，并直接关闭进程
适用平台
Wnidows NT


SetProcessWorkingSetSize
VB声明
Declare Function SetProcessWorkingSetSize Lib "kernel32" Alias "SetProcessWorkingSetSize" (ByVal hProcess As Long, ByVal dwMinimumWorkingSetSize As Long, ByVal dwMaximumWorkingSetSize As Long) As Long
说明
设置操作系统实际划分给进程使用的内存容量
返回值
Long，非零表示成功，零表示失败。会设置GetLastError
参数表
参数 | 类型及说明
hProcess | Long，指定一个进程的句柄
lpMinimumWorkingSetSize | Long，用于装载进程最小工作环境（容量）的一个变量
lpMaximumWorkingSetSize | Long，用于装载进程最大工作环境（容量）的一个变量
适用平台
Windows NT
注解
一个应用程序运行的时候，操作系统的虚拟内存系统会尽可能为其保持事先指定的最小工作环境（也称作“工作区”）大小。除非有空闲的内存可用，否则不会为应用程序分配超出最大工作环境设置以外的内存空间


ShellExecute
VB声明
Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (ByVal hwnd As Long, ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long
说明
查找与指定文件关联在一起的程序的文件名。关联的方式要么是运行程序，要么是打印文件。可用Windows注册表编辑器将特定的文件类型同应用程序关联起来。例如，扩展名为.TXT的文本文件通常与Windows记事本（NOTEPAD.EXE）关联到一起。如在文件管理器中双击含.TXT扩展名的一个文件，就会自行启动记事本程序，并在其中载入文本文件；或者将指定的文件打印出来
返回值
Long，大于32表示成功。请参考对FindExecutable函数的说明，了解具体的错误代码列表
参数表
参数 | 类型及说明
hwnd | Long，指定一个窗口的句柄，有些时候，Windows程序有必要在创建自己的主窗口前显示一个消息框。如果发生这种情况，由这个参数指定的窗口就会作为消息框的父窗口使用。在VB环境中，通常将活动窗体的窗口句柄作为这个参数使用
lpOperation | String，指定字串“Open”来打开lpFlie文档；或指定“Print”来打印它。也可设为vbNullString，表示默认为“Open”
lpFile | String，想用关联的程序打印或打开的一个程序名或文件名
lpParameters | String，如lpFile是一个可执行文件，则这个字串包含了传递给执行程序的参数。如lpFile引用的是一个文档文件，或者不需要使用参数，则设为vbNullString
lpDirectory | String，想使用的默认路径完整路径
nShowCmd | Long，定义了如何显示启动程序的常数值。参考ShowWindow函数的nCmdShow参数
注解
这个函数的说明在MSDN里是这样的：Opens or prints a specified file


TerminateProcess
VB声明
Declare Function TerminateProcess Lib "kernel32" Alias "TerminateProcess" (ByVal hProcess As Long, ByVal uExitCode As Long) As Long
说明
结束一个进程
在VB里使用
可以使用，但尽量不用。请向应用程序的主窗口投递一条WM_CLOSE消息来将它关闭
返回值
Long，非零表示成功，零表示失败。会设置GetLastError
参数表
参数 | 类型及说明
hProcess | Long，指定要中断的一个进程的句柄
uExitCode | Long，进程的一个退出代码


WinExec
VB声明
Declare Function WinExec Lib "kernel32" Alias "WinExec" (ByVal lpCmdLine As String, ByVal nCmdShow As Long) As Long
说明
运行指定的程序
返回值
Long，大于32表示成功；请参考FindExecutable函数，那里总结了一系列错误代码
参数表
参数 | 类型及说明
lpCmdLine | String，包含了要执行的命令行
nCmdShow | Long，定义了以什么形式启动程序的常数值。它与 ShowWindow API函数的 nCmdShow 参数总结的设置相同
在VB里使用
这个函数在本质上与VB的Shell命令完全相同。请参考对CreateProcess，LoadModule 以及 ShellExecute 函数的说明，了解启动应用程序的另一些方法
注解
请参考对CreateProcess函数的说明，了解在目录中查找指定程序文件的顺序。除非启动的程序开始处理消息，或规定的超时时间溢出，否则这个函数不会返回


ADDJOB_INFO_1

ADDJOB_INFO_1——请参考AddJob
类型定义
Type ADDJOB_INFO_1 ' 8 Bytes lpPath As Long JobId As Long End Type
说明
Contains information regarding a print job
字段表
字段 | 类型及说明
lpPath | Long，到文件名的一个路径 （Contains the path and filename that the application can use to store the print job.）
JobId | Long，一个作业编号


BITMAP
类型定义
Type BITMAP ' 24 bytes bmType As Long bmWidth As Long bmHeight As Long bmWidthBytes As Long bmPlanes As Integer bmBitsPixel As Integer bmBits As Long End Type
字段表
字段 | 类型及说明
bmType | Long，Must be 0.
bmWidth | Long，Width of the bitmap in pixels.
bmHeight | Long，Height of the bitmap in pixels.
bmWidthBytes | Long，The number of bytes of data in a raster line. Must be an even number.
bmPlanes | Integer，The number of color planes in the bitmap.
bmBitPixel | Integer，The number of bits per pixel on each plane.
bmBits | Long，Address of the actual bitmap data.
注解
参考CreateBitmapIndirect函数


BY_HANDLE_FILE_INFORMATION
类型定义
Type BY_HANDLE_FILE-INFORMATION ' 52 Bytes dwFileAttributes As Long ftCreationTime As FILETIME ftLastAccessTime As FILETIME ftLastWriteTime As FILETIME dwVolumeSerialNumber As Long nFileSizeHigh As Long nFileSizeLow As Long nNumberOfLinks As Long nFileIndexHigh As Long nFileIndexLow As Long End Type
说明
Used by the GetFileInformationByHandle function to retrieve information about a file.
字段表
字段 | 类型及说明
dwFileAttributes | Long，Refer to the File Attribute Types table that follows.
ftCreationTime | FILETIME，Time of file creation. Zero if file system does not support file creation time.
ftLastAccessTime | FILETIME，Time of last access to this file. Zero if file system does not support file last access time.
ftLastWriteTime | FILETIME，Time of last write operation to this file.
dwVolumeSerialNumber | Long，Serial number of the volume that contains the file.
nFileSizeHigh | Long，High-order word of the file size.
nFileSizeLow | Long，Low-order word of the file size.
nNumberOfLinks | Long，Number of links to this file. Always 1 for the FAT file system and HPFS.
nFileIndexHigh | Long，High-order word of a unique identifier associated with the file.
nFileIndexLow | Long，Low-order word of a unique identifier associated with the file. Use this element and the dwVolumeSerialNumber to uniquely identify a file.
File Attribute Types table
FILE_ATTRIBUTE_ARCHIVE Archive file. FILE_ATTRIBUTE_COMPRESSED The file or directory is compressed. FILE_ATTRIBUTE_DIRECTORY File is a directory. FILE_ATTRIBUTE_HIDDEN File is hidden. FILE_ATTRIBUTE_NORMAL File is normal (no other file attributes are specified). FILE_ATTRIBUTE_READONLY File is read-only. FILE_ATTRIBUTE_SYSTEM File is a system file. FILE_ATTRIBUTE_NORMAL File is a temporary file.
注解
dwFileAttributes字段包含了带有FILE_ATTRIBUTE_???前缀的一个或多个常数的组合，它们对文件属性进行了描述。nNumberOfLinks则列出了NFS下对一个文件的链接数量。nFileIndexHigh和nFileIndexLow字段合并起来构成一个64位数字，它对磁盘卷中的一个文件进行了唯一标志

Top


CPINFO
类型定义
Type CPINFO MaxCharSize As Long ' max length (Byte) of a char DefaultChar(MAX_DEFAULTCHAR) As Byte ' default character LeadByte(MAX_LEADBYTES) As Byte ' lead byte ranges End Type
说明
用于容纳代码页信息的一个结构，参考GetCPInfo函数
字段表
字段 | 类型与说明
MaxCharSize | Long，随同这个字符集中一个字符的最大尺寸载入；可能为1或2
DefaultChar | Byte，指出将这个代码页转换到另一个的时候，如使用了另一个代码页没有的字符，应在一个字串中放置什么字符代替
LeadByte | Byte，代表一个字节对数组。在这个数组中，每对字节都为某双字节字符集（DBCS）指定了一系列前导字节。例如，假定数组的头两个字节是89和93。这意味着在当前代码页中，值89到93是前导字节（放在最前面的字节），而后面跟随的字节是相同字符的一部分。如某个字符集采用了五个前导字节，那么总共可以包含的字符数是：(256-5)+5*256


设备控制选项的部分列表

设备控制选项的部分列表——参考DeviceIoControl函数
操作 | 参数 | 设置成……
撤消同一个卷的连接 | dwIoControlCode | FSCTL_DISMOUNT_VOLUME
 | lpInBuffer | ByVal 0
 | nInBufferSize | 0
 | lpOutBuffer | ByVal 0
 | nOutBufferSize | 0
获得卷压缩属性 | dwIoControlCode | FSCTL_GET_COMPRESSION
 | lpInBuffer | ByVal 0
 | nInBufferSize | 0
 | lpOutBuffer | 用于装载带有COMPRESSION_VALUE_???前缀的一个常数的整数型变量
 | nOutBufferSize | 2
锁定一个卷 | dwIoControlCode | FSCTL_LOCK_VOLUME
 | lpInBuffer | ByVal 0
 | nInBufferSize | 0
 | lpOutBuffer | ByVal 0
 | nOutBufferSize | 0
设置卷压缩属性 | dwIoControlCode | FSCTL_SET_COMPRESSION
 | lpInBuffer | 用于装载带有COMPRESSION_VALUE_???前缀的一个常数的整数型变量
 | nInBufferSize | 2
 | lpOutBuffer | ByVal 0
 | nOutBufferSize | 0
 | lpBytesReturned | 用于装载操作结果的一个Long型变量
解除对一个卷的锁定 | dwIoControlCode | FSCTL_UNLOCK_VOLUME
 | lpInBuffer | ByVal 0
 | nInBufferSize | 0
 | lpOutBuffer | ByVal 0
 | nOutBufferSize | 0
核实一个便携式媒体设备的媒体是否存在及可读 | dwIoControlCode | IOCTL_DISK_CHECK_VERIFY
 | lpInBuffer | ByVal 0
 | nInBufferSize | 0
 | lpOutBuffer | ByVal 0
 | nOutBufferSize | 0
 | 函数返回值 | 如设备可以访问，而且媒体存在，就返回TURE
弹出SCSI设备中的媒体 | dwIoControlCode | IOCTL_DISK_EJECT_MEDIA
 | lpInBuffer | ByVal 0
 | nInBufferSize | 0
 | lpOutBuffer | ByVal 0
 | nOutBufferSize | 0
格式化设备中的轨道（磁道） | dwIoControlCode | IOCTL_DISK_FORMAT_TRACKS
 | lpInBuffer | 一个FORMAT_PARAMETERS数据结构，包含了磁道中要格式化的信息
 | nInBufferSize | FORMAT_PARAMETERS结构的长度
 | lpOutBuffer | ByVal 0
 | nOutBufferSize | 0
判断一个设备的属性 | dwIoControlCode | IOCTL_DISK_GET_DRIVE_GEOMETRY
 | lpInBuffer | ByVal 0
 | nInBufferSize | 0
 | lpOutBuffer | 一个DISK_GEOMETRY数据结构，用于装载与磁盘驱动器有关的信息
 | nOutBufferSize | DISK_GEOMETRY结构的长度
判断驱动器的分区布局情况 | dwIoControlCode | IOCTL_DISK_GET_DRIVE_LAYOUT
 | lpInBuffer | ByVal 0
 | nInBufferSize | 0
 | lpOutBuffer | 一个DRIVE_LAYOUT_INFORMATION结构，后面跟随一个或多个PARTITION_INFORMATION结构，用于装载与磁盘驱动器布局有关的信息
 | nOutBufferSize | 分配的缓冲区大小
判断驱动器支持的媒体类型 | dwIoControlCode | IOCTL_DISK_GET_MEDIA_TYPES
 | lpInBuffer | ByVal 0
 | nInBufferSize | 0
 | lpOutBuffer | 一个DISK_GEOMETRY数据结构数组，用于装载与磁盘驱动器支持的媒体有关的信息
 | nOutBufferSize | 输出缓冲区的长度
取得与一个分区有关的信息 | dwIoControlCode | IOCTL_DISK_GET_PARTITION_INFO
 | lpInBuffer | ByVal 0
 | nInBufferSize | 0
 | lpOutBuffer | 一个PARTITION_INFORMATION结构，用于装载与分区有关的信息
 | nOutBufferSize | 分配的缓冲区大小
在设备中装载媒体 | dwIoControlCode | IOCTL_DISK_LOAD_MEDIA
 | lpInBuffer | ByVal 0
 | nInBufferSize | 0
 | lpOutBuffer | ByVal 0
 | nOutBufferSize | 0
允许或禁止媒体拆卸 | dwIoControlCode | IOCTL_DISK_MEDIA_REMOVAL
 | lpInBuffer | 一个PREVENT_MEDIA_REMOVAL数据结构，其中包含的信息用于决定允许或禁止媒体拆卸
 | nInBufferSize | PREVENT_MEDIA_REMOVAL结构的长度
 | lpOutBuffer | ByVal 0
 | nOutBufferSize | 0
判断一个驱动器的性能 | dwIoControlCode | IOCTL_DISK_PERFORMANCE
 | lpInBuffer | ByVal 0
 | nInBufferSize | 0
 | lpOutBuffer | 一个DISK_PERFORMANCE数据结构，用于装载与驱动器性能有关的信息
 | nOutBufferSize | 已分配的缓冲区的大小
控制数据流中一个调制解调器状态数据的外观 | dwIoControlCode | IOCTL_SERIAL_LSRMST_INSERT
 | lpInBuffer | 一个字节变量。如果不为零，则使用换码字符。如果为零，则禁止显示内部状态
 | nInBufferSize | 1
 | lpOutBuffer | ByVal 0
 | nOutBufferSize | 0

Top


DEVMODE
类型定义
Type DEVMODE ' 126 Bytes, 15?Bytes in Windows 95
dmDeviceName As String * CCHDEVICENAME
dmSpecVersion As Integer
dmDriverVersion As Integer
dmSize As Integer
dmDriverExtra As Integer
dmFields As Long
dmOrientation As Integer
dmPaperSize As Integer
dmPaperLength As Integer
dmPaperWidth As Integer
dmScale As Integer
dmCopies As Integer
dmDefaultSource As Integer

dmPrintQuality As Integer
dmColor As Integer
dmDuplex As Integer
dmYResolution As Integer
dmTTOption As Integer
dmCollate As Integer
dmFormName As String * CCHFORMNAME
dmLogPixels As Integer
dmBitsPerPel As Long
dmPelsWidth As Long
dmPelsHeight As Long
dmDisplayFlags As Long
dmDisplayFrequency As Long
' - The following appear under Windows 95 only.
dmICMMethod As Long

dmICMIntentAs Long
dmMediaType As Long
dmDitherType As Long
dmICCManufacturer As Long
dmICCModel As Long
End Type
说明
This structure is used to describe the configuration of an output device such as a printer.The size of this structure is dynamic and should be calculated before it is passed to a function.

Top


DOCINFO

DOCINFO——参考StartDoc函数
类型定义
Type DOCINFO '12 个字节 cbSize As Long lpszDocName As String lpszOutput As String End Type
说明
对文档进行定义的一个结构
字段表
字段 | 类型与说明
cbSize | Long，结构的大小，目前是12个字节
lpszDocName | String，指向一个字串的指针，该字串包含了文档名。这个文档名会在打印管理程序中显示出来
lpszOutput | String，指向一个字串的指针，该字串包含了输出文件的名字（如果希望将打印机输出重定向至一个磁盘文件）。可设为vbNullString。表示将输出结果传送到设备
移植问题
DOCINFO结构的大小已和以前在Win16中不同


不同系统对象的访问常数表
系统对象 | 访问常数
文件、控制台、管道和通信设备 | GENERIC_READ， GENERIC_WRITE （参考对 CreateFile 的说明）
文件映射 | FILE_MAP_READ， FILE_MAP_WRITE， FILE_MAP_ALL_ACCESS （参考对 MapViewOfFile 的说明）
互斥体 | MUTEX_ALL_ACCESS， SYNCHRONIZE （参考对 OpenMutex 的说明）
信号机 | SEMAPHORE_ALL_ACCESS， SEMAPHORE_MODIFY_STATE， SYNCHRONIZE （参考对 OpenSemaphore 的说明）
事件 | EVENT_ALL_ACCESS， EVENT_MODIFY_STATE， SYNCHRONIZE （参考对 OpenEvent 的说明）
注册表项 | KEY_??? 常数——参考 API32.TXT
进程 | PROCESS_??? 常数——参考 API32.TXT
线程 | THREAD_??? 常数——参考 API32.TXT
可等待计时器 | TIMER_ALL_ACCESS， TIMER_MODIFY_STATE， SYNCHRONIZE （参考对 OpenWaitableTimer 的说明）


ENHMETAHEADER
类型定义
Type ENHMETAHEADER ' 88 Bytes iType As Long nSize As Long rclBounds As RECTL rclFrame As RECTL dSignature As Long nVersion As Long nBytes As Long nRecords As Long nHandles As Integer sReserved As Integer nDescription As Long offDescription As Long nPalEntries As Long szlDevice As SIZEL szlMillimeters As SIZEL End Type
说明
This structure is always the first record in an enhanced metafile, it contains information on the enhanced metafile data.
字段表
字段 | 类型与说明
iType | Long，Record type. Must be set to EMR_HEADER
nSize | Long，Size of this structure
rclBounds | RECTL，Dimensions, in device units, of the smallest rectangle that can be drawn around the picture stored in the metafile. Supplied by the GDI.
rclFrame | RECTL，Dimensions, in 0.01 millimeter units, of a rectangle that surrounds the picture stored in the metafile. Must be supplied by the application that creates the metafile.
dSignature | Long，Signature of the metafile. Must be set to ENHMETA_SIGNATURE.
nVersion | Long，Metafile version. The current version value is &H10000&.
nBytes | Long，Size of the enhanced metafile
nRecords | Long，Number of records in the enhanced metafile
nHandles | Integer，Number of handles in the enhanced-metafile handle table.
sReserved | Integer，Reserved. Set to zero.
nDescription | Long，Number of characters in the array containing the description of the enhanced metafile. Zero if a description is not available
offDescription | Long，Offset from the beginning of the ENHMETAHEADER structure to an array containing a description for the enhanced metafile.
nPalEntries | Long，Number of entries in the enhanced metafile's palette.
szlDevice | SIZEL，Resolution of the reference device, in pixels
szlMillimeters | SIZEL，Resolution of the reference device, in millimeters.

Top


FILETIME
类型定义
Type FILETIME ' 8 Bytes dwLowDateTime As Long dwHighDateTime As Long End Type
说明
windows提供了一种特殊的机制，可以记录文件的访问及创建时间。在win32环境中，这些信息以64位值的形式保存，量度的是自1601年1月1日以来经历的100ns时间单位数量（64-bit number specifying the elapsed time since January 1, 1601, in 100-nanosecond increments.）
字段表
字段 | 类型及说明
dwLowDateTime | Long，Low and high-order 32 bits of the file time
dwHighDateTime
注解
文件时间在系统中通常用“协同世界时间”（UTC）的格式保存，但同时提供了在UTC及本地时间之间转换的函数。FILETIME结构里可包含UTC或本地时间——由我们自行决定在结构中包含什么时间


FORM_INFO_1

FORM_INFO_1——请参考AddForm函数
类型定义
Type FORM_INFO_1 Flags As Long pName As Long Size As SIZEL ImageableArea As RECT End Type
说明
Contains information about a print form.
字段表
字段 | 类型及说明
Flags | Long，如表单内建到打印机，则为常数FORM_BUILTIN
pName | Long，表单的名字
Size | SIZEL，以千分之一毫米为单位的打印媒介尺寸
ImageableArea | RECT，可以绘图的实际区域，以千分之一毫米为单位


GetDeviceCaps索引表
常数 | 返回信息
DRIVERVERSION | 设备驱动程序版本
TECHNOLOGY | 下列常数之一： DT_PLOTTER：绘图仪。DT_RASDISPLAY：光栅显示器。DT_RASPRINTER：光栅打印机。DT_RASCAMERA：光栅照相机。DT_CHARSTREAM：字符流。DT_METAFILE：图元文件。DT_DISPFILE：显示文件
HORZSIZE | 以毫米为单位的显示宽度
VERTSIZE | 以毫米为单位的显示高度
HORZRES | 以像素为单位的显示宽度
VERTRES | 以像素为单位的显示高度
LOGPIXELSX | 像素/逻辑英寸（水平）
LOGPIXELSY | 像素/逻辑英寸（垂直）
BITSPIXEL | 位/像素（每个调色板）
PLANES | 调色板个数
NUMBRUSHES | 设备内建刷子个数
NUMPENS | 设备内建画笔个数
NUMMARKERS | 设备内建标记数
NUMFONTS | 设备内建字体数
NUMCOLORS | 设备颜色表入口
ASPECTX | 设备像素宽度（见ASPECTXY）
ASPECTY | 设备像素高度（见ASPECTXY）
ASPECTXY | 设备像素对角尺寸。这些值是互相对应的，比如((ASPECTX^2)+(ASPECTY^2))^.5 = ASPECTXY
PDEVICESIZE | PDEVICE内部结构的大小
CLIPCAPS | 下列常数之一： CP_NONE：设备没有内建剪切 CP_RECTANGLE：设备可剪切矩形 CP_REGION：设备可剪切区域
SIZEPALETTE | 系统调色板入口（见RASTERCAPS RC_PALETTE标志）
NUMRESERVED | 系统调色板保留入口
BLTALIGNMENT | 有的显示设备在图象对齐本常数值指定的地址范围时可更快的完成图象运算。若没有区别则为0
COLORRES | 颜色分辨率（以位/像素位单位，见RASTERCAPS RC_PALETTE标志）
DESKTOPHORIZRES | 桌面水平和垂直分辨率（仅适用于NT）。某些设备支持虚拟桌面可比物理显示尺寸大
DESKTOPVERTRES
PHYSICALOFFSETX | 打印机的可打印区的水平/垂直偏移
PHYSICALOFFSETY
PHYSICALHEIGHT | 以设备单元表示的打印页面物理高/宽度
PHYSICALWIDTH
SCALINGFACTORX | 打印机水平和垂直缩放系数
SCALINGFACTORY
VREFRESH | 显示垂直刷新（只适用于NT）
RASTERCAPS | 由下列值组成的标志： R_BANDING：设备支持频带。RC_BIGFONT：字体可大于64K。RC_BITBLT：支持BitBlt。RC_BITMAP64K：位图可大于64K。RC_DI_BITMAP：支持SetDIBits和GetDIBits函数。RC_DIBTODEV：支持SetDIBitsToDevice函数。RC_FLOODFILL：支持FloodFill API。RC_NONE：不支持光栅操作。RC_PALETTE：设备基于调色板。 RC_SAVEBITMAP：可存储位图。RC_SCALING：内建缩放。RC_STRETCHBLT：支持 StretchBlt 。RC_STRETCHDIB：支持StretchDIBits
CURVECAPS | 描述内部曲线生成功能的标志。见api32。txt文件中关于CC_xxx的完整列表
LINECAPS | 描述内部直线生成功能的标志。见api32。txt文件中关于LC_xxx的完整列表
POLYGONCAPS | 描述内部多边形生成功能的标志。见api32。txt文件中关于PC_xxx的完整列表
TEXTCAPS | 由下列值组成的标志： TC_OP_CHARACTER：字体可被放在任意位置。TC_OP_STROKE：设备可删除内部字体任意笔画。 TC_CP_STROKE：内部字体可据任意像素剪切。TC_CR_90：字体可被旋转90度 。TC_CR_ANY：支持字符旋转 。TC_SF_X_YINDEP：支持字符X和Y方向独立缩放。TC_SA_DOUBLE：内部字体尺寸可被放大一倍。TC_SA_INTEGER：内部字体可以整数倍缩放。TC_SA_CONTIN：内部字体可被连续缩放。TC_EA_DOUBLE： 设备可创建粗体字。TC_IA_ABLE：设备可创建斜体字。TC_UA_ABLE： 设备可建带下划线字。TC_SO_ABLE： 设备可创建加框字。TC_RA_ABLE：支持光栅字体。TC_SCROLLBLT：支持光栅字体。TC_VA_ABLE： 支持矢量字体

Top


GetNamedPipeHandleState
VB声明
Declare Function GetNamedPipeHandleState Lib "kernel32" Alias "GetNamedPipeHandleStateA" (ByVal hNamedPipe As Long, lpState As Long, lpCurInstances As Long, lpMaxCollectionCount As Long, lpCollectDataTimeout As Long, ByVal lpUserName As String, ByVal nMaxUserNameSize As Long) As Long
说明
获取一个命名管道当前的状态信息
返回值
Long，非零表示成功，零表示失败。会设置GetLastError
参数表
参数 | 类型及说明
hNamedPipe | Long，指定一个命名管道的句柄
lpState | Long，用于装载下述一个或多个常数的长整数变量
 | PIPE_NOWAIT | 管道设置成永不堵塞，这种模式很少使用
 | PIPE_READMODE_MESSAGE | 管道设置成读取消息
lpCurInstances | Long，装载这个管道目前存在的实例数量
lpMaxCollectionCount | Long，如管道设置成通过一个网络传输数据，就用这个变量装载通过管道发送之前可排队等候的最大数据量
lpCollectDataTimeout | Long，如管道设置成通过一个网络传输数据，就在这里指定一个长整数变量，用它装载进行一次网络数据传输前需要等候的最长时间
lpUserName | String，如这是个服务器句柄，就在这里指定一个字串缓冲区，在其中载入客户应用程序的用户名。可设为vbNullString，表示不取回信息
nMaxUserNameSize | Long，指定lpUserName缓冲区的长度，可以为零


GetNamedPipeInfo
VB声明
Declare Function GetNamedPipeInfo Lib "kernel32" Alias "GetNamedPipeInfo" (ByVal hNamedPipe As Long, lpFlags As Long, lpOutBufferSize As Long, lpInBufferSize As Long, lpMaxInstances As Long) As Long
说明
用于获取与一个命名管道有关的信息
返回值
Long，非零表示成功，零表示失败。会设置GetLastError
参数表
参数 | 类型及说明
hNamedPipe | Long，一个命名管道的句柄
lpFlags | Long，下述一个或多个常数
 | PIPE_CLIENT_END | 这个句柄是一个管道的客户端；不能用于 NT 3.51
 | PIPE_SERVER_END | 这个句柄是一个管道的服务器端；不能用于 NT 3.51
 | PIPE_TYPE_MESSAGE | 这个管道配置成将数据块作为消息传送
lpOutBufferSize | Long，用于装载输出缓冲区的长度；如缓冲区由系统根据需要分配，则设为零
lpInBufferSize | Long，用于装载输入缓冲区的长度；如缓冲区由系统根据需要分配，则设为零
lpMaxInstances | Long，用于装载这个管道最大实例数量；如这个数字没有限制，则为PIPE_UNLIMITED_INSTANCES


GetStartupInfo
VB声明
Declare Sub GetStartupInfo Lib "kernel32" Alias "GetStartupInfoA" (lpStartupInfo As STARTUPINFO)
说明
获取一个进程的启动信息
参数表
参数 | 类型及说明
lpStartupInfo | STARTUPINFO，指定一个STARTUPINFO结构，用于最终载入进程的启动信息


GetThreadTimes
VB声明
Declare Function GetThreadTimes Lib "kernel32" Alias "GetThreadTimes" (ByVal hThread As Long, lpCreationTime As FILETIME, lpExitTime As FILETIME, lpKernelTime As FILETIME, lpUserTime As FILETIME) As Long
说明
获取与一个线程的经过时间（存在时间）有关的信息
返回值
Long，非零表示成功，零表示失败。会设置GetLastError
参数表
参数 | 类型及说明
hThread | Long，指定一个线程的句柄
lpCreationTime | FILETIME，指定一个FILETIME结构，在其中装载线程的创建时间
lpExitTime | FILETIME，指定一个FILETIME结构，在其中装载线程的中止时间（如线程仍在运行，则不定义）
lpKernelTime | FILETIME，指定一个FILETIME结构，在其中装载线程花在内核模式上的总时间
lpUserTime | FILETIME，指定一个FILETIME结构，在其中装载线程花在用户模式上的总时间
适用平台
Windows NT


404 Not Found

Not Found

The requested URL /~vbapi/GetWindowDirectory.htm was not found on this server.

Apache/1.3.6 Server at personal.hb.cninfo.net Port 80


InterlockedDecrement
VB声明
Declare Function InterlockedDecrement Lib "kernel32" Alias "InterlockedDecrement" (lpAddend As Long) As Long
说明
递减一个长整数变量的值
返回值
Long，变量的上一个值
参数表
参数 | 类型及说明
lpAddend | Long，要递减的一个长整数变量
注解
这个函数执行的递减操作可以安全地避开同步问题——即使是一个共享变量


InterlockedExchange
VB声明
Declare Function InterlockedExchange Lib "kernel32" Alias "InterlockedExchange" (Target As Long, ByVal Value As Long) As Long
说明
设置一个长整数变量的值
返回值
Long，变量的前一个值
参数表
参数 | 类型及说明
Target | Long，要设置的变量
Value | Long，变量的新值
注解
这个函数执行的操作可以安全地避开同步问题——即使是一个共享变量


InterlockedIncrement
VB声明
Declare Function InterlockedIncrement Lib "kernel32" Alias "InterlockedIncrement" (lpAddend As Long) As Long
说明
递增一个长整数变量的值
返回值
Long，变量的上一个值
参数表
参数 | 类型及说明
lpAddend | Long，要递增的长整数变量
注解
这个函数执行的递增操作可以安全地避开同步问题——即使是一个共享变量


KERNINGPAIR

KERNINGPAIR——参考GetKerningPairs函数
类型定义
Type KERNINGPAIR
wFirst As Integer
wSecond As Integer
iKernAmount As Long
End Type
说明
This structure describes a kerning pair


LARGE_INTEGER
类型定义
Type LARGE_INTEGER ' 8 Bytes
lowpart As Long
highpart As Long
End Type
说明
This structure represents a 64-bit integer. The lowpart field is the lower 32 bits of the integer and the highpart field is the upper 32 bits of the integer.
注解
参考GetDiskFreeSpaceEx函数的注解


LOGBRUSH
类型定义
Type LOGBRUSH ' 12 Bytes lbStyle As Long lbColor As Long lbHatch As Long End Type
说明
Data structure used to define a logical brush. The actual physical brush will depend on the capabilities of the device.
字段表
字段 | 类型与说明
lbStyle | Long，One of the following constants:BS_DIBPATTERN, BS_DIBPATTERN8X8, BS_DIBPATTERNPT: A pattern brush based on a device-independent bitmap (DIB). In Windows 95, brushes from bitmaps or DIBs must be 8x8 or smaller.BS_HATCHED: A hatched brush according to field lbHatch.BS_HOLLOW, BS_NULL: A hollow brush.BS_PATTERN, BS_PATTERN8X8: A pattern brush based on a bitmap.BS_SOLID: A solid brush.
lbColor | Long，Depends on the value of lbStyle:For BS_SOLID refer to the description of the crColor parameter of the CreateSolidBrush API function (see Chapter 8).For BS_HATCHED refer to the description of the crColor parameter of the CreateHatchBrush API function (see Chapter 8).For BS_DIBPATTERN* refer to the description of the wUsage parameter of the CreateDIBPatternBrush API function
lbHatch | Long，If lbStyle is BS_DIBPATTERN or BS_DIBPATTERN8X8, this field contains the handle to a packed DIB (refer to description of the hPackedDIB parameter to the CreateDIBPatternBrush API function in Chapter 8 for details). If lbStyle is BS_DIBPATTERNPT, this field contains the pointer to a packed DIB.If lbStyle is BS_HATCHED, this field is the same as the nIndex parameter to the CreateHatchBrush API function

Top


LOGPEN
类型定义
Type LOGPEN lopnStyle As Long lopnWidth As POINTAPI lopnColor As Long End Type
说明
Data structure used to define a logical pen. The actual physical pen will depend on the capabilities of the device.
字段表
字段 | 类型与说明
lopnStyle | Long，Refer to the nPenStyle parameter of the CreatePen function
lopnWidth | POINTAPI，X field contains the width of the pen in logical units. The Y field is not used.
lopnColor | Long，RGB color of the pen.


MENUITEMINFO
类型定义
Type MENUITEMINFO cbSize As Long fMask As Long fType As Long fState As Long wID As Long hSubMenu As Long hbmpChecked As Long hbmpUnchecked As Long dwItemData As Long dwTypeData As Long cch As Long End Type
说明
这个结构包含了菜单条目的信息，不支持win nt 3.51（原文：This structure contains information about a menu entry. Not supported on NT 3.51）
字段表
字段 | 类型及说明
cbSize | Long，结构大小，通常为44bytes（Size of this structure, currently at 44 bytes.）
fMask | Long，Specifies the information to set or get. Any combination of the following
 | MIIM_CHECKMARKS | Sets or gets the hbmpChecked and hbmpUnchecked fields
 | MIIM_DATA | Sets or gets the dwItemData field
 | MIIM_ID | ets or gets the wID field
 | MIIM_STATE | Sets or gets the fState field
 | MIIM_SUBMENU | Sets or gets the hSubMenu field
 | MIIM_TYPE | Sets or gets the fType and dwTypeData fields
fType | Long，Menu item type, any combination of the following with the exception that MFT_BITMAP, MFT_SEPARATOR, and MFT_STRING cannot be combined with one another:MFT_BITMAP: Displays the menu item using a bitmap. dwTypeData contains the bitmap handle.MFT_MENUBARBREAK: The menu item is placed on a new line for top level menus, a new column for popup menus. Places a line between the columns.MFT_MENUBREAK: Same as MFT_MENUBREAK without the vertical line.MFT_OWNERDRAW: The menu item is an owner-draw menu.MFT_RADIOCHECK: Uses a radio button (option button) bullet to indicate the checked state instead of a check mark. Applies if no custom bitmap is specified.MFT_RIGHTJUSTIFY: Right-justifies a top level menu item.MFT_SEPARATOR: The entry is a separator line in a pop-up menu.MFT_STRING: The entry contains a string. dwTypeData contains the address of the string, and the cch field contains the length of the string.
fState | Long，Current menu entry state or action to take. May be any combination of the following:MFS_CHECKED: Entry is checked.MFS_DEFAULT: The entry is a default item (appears in bold).MFS_DISABLED: Entry is disabled.MFS_ENABLED: Entry is enabled.MFS_GRAYED: Entry is grayed and disabled.MFS_HILITE: Entry is highlighted.MFS_UNCHECKED: Entry is unchecked.MFS_UNHILITE: Entry is unhighlighted.
wID | Long，Menu entry identifier. The high 16 bits are not used.
hSubMenu | Long，Handle to a pop-up menu if one is associated with the menu entry
hbmpChecked | Long，Handle to a bitmap to display for a menu entry when checked. Zero to use the default
hbmpUnchecked | Long，Handle to a bitmap to display for a menu entry when unchecked. Zero to use the default
dwItemData | Long，User-defined value associated with this entry.
dwTypeData | Long，Depends on the menu type
cch | Long，Length of the menu string when MFT_STRING is specified. Zero for other menu types.

Top


MONINTOR_INFO_2

MONINTOR_INFO_2——请参考AddMonitor函数
类型定义
Type MONINTOR_INFO_2 pName As String pEnvironment As String pDLLName As String End Type
说明
This structure is used by the AddMonitor function to identify an installed monitor
字段表
字段 | 类型及说明
pName | String，监视器的名字
pEnvironment | String，指定监视器的设计环境（比如“Windows NT x86”）。对于本地系统，设为vbNullString
pDLLName | String，监视器使用的DLL的名字


NETRESOURCE
类型定义
Type NETRESOURCE dwScope As Long dwType As Long dwDisplayType As Long dwUsage As Long lpLocalName As String lpRemoteName As String lpComment As String lpProvider As String End Type
说明
与网络有关的重要任务之一就是枚举，或者说获取可用网络资源的一个列表。这个结构用以定义系统的的每个网络资源
字段表
字段 | 类型及说明
dwScope | Long，下述常数之一：
 | RESOURCE_CONNECTED | 枚举连接的资源
 | RESOURCE_GLOBALNET | 枚举所有资源
 | RESOURCE_REMEMBERED | 枚举永久性连接
dwType | Long，下述常数之一：
 | RESOURCETYPE_ANY | 枚举所有资源
 | RESOURCETYPE_DISK | 枚举磁盘
 | RESOURCETYPE_PRINT | 枚举打印机
dwDisplayType | Long，带有前缀RESOURCEDISPLAYTYPE的一个常数，对资源的类型进行了定义（在网络浏览器中如何显示）
dwUsage | Long，下述标志的一个或多个
 | RESOURCEUSAGE_CONNECTABLE | 可同这个资源连接
 | RESOURCEUSAGE_CONTAINER | 这个资源包含了可以枚举的额外资源
lpLocalName | String，由本地系统引用的资源名称。只能用于已连接的资源
lpRemoteName | String，资源的网络名
lpComment | String，由网络供应商设置
lpProvider | String，网络供应商的名字

Top


OFSTRUCT

OFSTRUCT——请参考OpenFile函数
类型定义
Type OFSTRUCT cBytes As Byte fFixedDisk As Byte nErrCode As Integer Reserved1 As Integer Reserved2 As Integer szPathName As String * 128 End Type
说明
请参考OpenFile函数
字段表
字段 | 类型及说明
cBytes | Byte，设置成结构的长度（目前是136）
fFixedDisk | Byte，如文件位于硬盘（而不是可拆卸的软盘），则这个字节的值不为零
nErrCode | Integer，错误代码，参考OpenFile函数的表OpenFile-2（OFSTRUCT出错代码）
Reserved1 | Integer，？（资料里没有这两个字段的说明）
Reserved2
szPathName | String，文件的完整路径名。这个字串使用的是OEM字符集
注解
如指定的文件名未提供完整路径，或指定了OF_SEARCH标志，就会在下述地方查找文件： 1——当前目录 2——windows系统目录。在Windows NT中，会先搜索32位系统目录（System32），再搜索16位系统目录（System） 3——windows目录 4——在PATH环境变量中指定的目录
其他
Type OFSTRUCT cBytes As Byte fFixedDisk As Byte nErrCode As Integer Reserved1 As Integer Reserved2 As Integer szPathName(OFS_MAXPATHNAME) As Byte End Type 从vb的api文本查看器中复制的类型定义与以上的不同，请注意

Top


OpenEvent
VB声明
Declare Function OpenEvent Lib "kernel32" Alias "OpenEventA" (ByVal dwDesiredAccess As Long, ByVal bInheritHandle As Long, ByVal lpName As String) As Long
说明
为一个现有的命名事件对象创建一个新句柄
返回值
Long，如执行成功，返回对象的句柄；零表示失败。会设置GetLastError
参数表
参数 | 类型及说明
dwDesiredAccess | Long，下述常数之一：
 | EVENT_ALL_ACCESS | 要求对事件对象进行完全访问
 | EVENT_MODIFY_STATE | 允许SetEvent 和 ResetEvent函数
 | SYNCHRONIZE | 允许事件对象的使用同步
bInheritHandle | Long，如希望子进程能够继承句柄，则为TRUE
lpName | String，指定要打开的对象的名字
注解
一旦不再需要，注意一定要用CloseHandle关闭事件句柄。如对象的所有句柄都已关闭，那么对象也会删除


OpenMutex
VB声明
Declare Function OpenMutex Lib "kernel32" Alias "OpenMutexA" (ByVal dwDesiredAccess As Long, ByVal bInheritHandle As Long, ByVal lpName As String) As Long
说明
为现有的一个已命名互斥体对象创建一个新句柄
返回值
Long，如执行成功，返回对象的句柄；零表示失败。会设置GetLastError
参数表
参数 | 类型及说明
dwDesiredAccess | Long，下述常数之一：
 | MUTEX_ALL_ACCESS | 请求对互斥体的完全访问
 | MUTEX_MODIFY_STATE | 允许使用ReleaseMutex函数
 | SYNCHRONIZE | 允许互斥体对象同步使用
bInheritHandle | Long，如希望子进程能够继承句柄，则为TRUE
lpName | String，要打开对象的名字
注解
一旦不再需要，注意一定要用CloseHandle关闭互斥体句柄。如对象的所有句柄都已关闭，那么对象也会删除


OpenProcess
VB声明
Declare Function OpenProcess Lib "kernel32" Alias "OpenProcess" (ByVal dwDesiredAccess As Long, ByVal bInheritHandle As Long, ByVal dwProcessId As Long) As Long
说明
打开一个现有进程的句柄
返回值
Long，如执行成功，返回进程句柄；零表示失败。会设置GetLastError
参数表
参数 | 类型及说明
dwDesiredAccess | Long，指定这个句柄要求的访问方法。指定API32.TXT文件中以PROCESS_???开头的一个或多个常数
bInheritHandle | Long，如句柄能够由子进程继承，则为TRUE
dwProcessId | Long，要打开那个进程的进程标识符
注解
这个函数经常用来打开一个要进行同步的进程


OpenSemaphore
VB声明
Declare Function OpenSemaphore Lib "kernel32" Alias "OpenSemaphoreA" (ByVal dwDesiredAccess As Long, ByVal bInheritHandle As Long, ByVal lpName As String) As Long
说明
为现有的一个已命名信号机对象创建一个新句柄
返回值
Long，如执行成功，返回对象句柄；零表示失败。会设置GetLastError
参数表
参数 | 类型及说明
dwDesiredAccess | Long，下述常数之一：
 | SEMAPHORE_ALL_ACCESS | 要求对事件对象的完全访问
 | SEMAPHORE_MODIFY_STATE | 允许使用ReleaseSemaphore函数
 | SYNCHRONIZE | 允许同步使用信号机对象
bInheritHandle | Long，如果允许子进程继承句柄，则设为TRUE
lpName | String，指定要打开的对象的名字
注解
一旦不再需要，注意一定要用CloseHandle关闭信号机句柄。如对象的所有句柄都已关闭，那么对象也会删除


OpenWaitableTimer
VB声明
Declare Function OpenWaitableTimer Lib "kernel32" Alias "OpenWaitableTimerA" (ByVal dwDesiredAccess As Long, ByVal bInheritHandle As Long, ByVal lpName As String) As Long
说明
为现有的一个可等待计时器对象创建一个新句柄
返回值
Long，如成功，返回对象的句柄；零表示失败。会设置GetLastError
参数表
参数 | 类型及说明
dwDesiredAccess | Long，下述常数之一：
 | TIMER_ALL_ACCESS | 要求对事件的完全访问
 | TIMER_MODIFY_STATE | 允许使用 SetWaitableTimer 和 CancelWaitableTimer函数
 | SYNCHRONIZE | 允许可等待计时器对象同步使用
bInheritHandle | Long，如果允许子进程继承句柄，则为TRUE
lpName | String，要打开的进程的名字
适用平台
Windows NT
注解
一旦不再需要，注意一定要用CloseHandle关闭可等待计时器句柄。如对象的所有句柄都已关闭，那么对象也会删除


OSVERSIONINFO
类型定义
Type OSVERSIONINFO ' 148 Bytes dwOSVersionInfoSize As Long dwMajorVersion As Long dwMinorVersion As Long dwBuildNumber As Long dwPlatformId As Long szCSDVersion As String * 128 End Type
说明
This structure contains operating system version information. This structure is used with the GetVersionEx function.
字段表
字段 | 类型与说明
dwOSVersionInfoSize | Long，Size of this data structure, currently at 148 bytes. This field must be set before calling the GetVersionEx function.
dwMajorVersion | Long，Specifies the major and minor version number of the operating system.
dwMinorVersion
dwBuildNumber | Long，Specifies the build number of the operating system. On Windows 95, build 1000 respresents OEM service release #2.
dwPlatformId | Long，Specifies the platform supported by the operating system. May be one of the following:VER_PLATFORM_WIN32s: Win32s on Windows 3.1.VER_PLATFORM_WIN32_WINDOWS: Win32 on Windows 95.VER_PLATFORM_WIN32_NT: Windows NT.
szCSDVersion | String，Contains additional information about the operating system.

Top


PALETTEENTRY
类型定义
Type PALETTEENTRY ' 4 Bytes peRed As Byte peGreen As Byte peBlue As Byte peFlags As Byte End Type
说明
Describes an entry in a logical palette
字段表
字段 | 类型与说明
peRed | Byte，An 8-bit value describing the red component of an RGB color.
peGreen | Byte，An 8-bit value describing the green component of an RGB color.
peBlue | Byte，An 8-bit value describing the blue component of an RGB color.
peFlags | Byte，An 8-bit value containing one of the following values: 0: Map this entry normally. PC_EXPLICIT: The low order word (combination of the peRed and peGreen fields) contains an index into the system palette. This allows you to display the system palette colors. PC_NOCOLLAPSE: This color is mapped into an unused system palette entry and will not be mapped to an existing color. Subsequent palettes may map colors to this entry. PC_RESERVED: This color is mapped to an unused system palette entry and no other logical palettes will be mapped to that entry. By restricting the system palette entry to this logical entry, color cycling involving direct changes to the system palette becomes possible.

Top


PeekNamedPipe
VB声明
Declare Function PeekNamedPipe Lib "kernel32" Alias "PeekNamedPipe" (ByVal hNamedPipe As Long, lpBuffer As Any, ByVal nBufferSize As Long, lpBytesRead As Long, lpTotalBytesAvail As Long, lpBytesLeftThisMessage As Long) As Long
说明
预览一个管道中的数据，或取得与管道中的数据有关的信息
返回值
Long，非零表示成功，零表示失败。会设置GetLastError
参数表
参数 | 类型及说明
hNamedPipe | Long，指定一个管道的句柄。这并不一定是某个命名管道的句柄——匿名管道同样适用
lpBuffer | Any，指定要装载数据的一个缓冲区的头一个字符。可以为零（使用ByVal 0&）
nBufferSize | Long，lpBuffer缓冲区长度
lpBytesRead | Long，保存装载到缓冲区的字符数量
lpTotalBytesAvail | Long，保存管道中可用的字符数量
lpBytesLeftThisMessage | Long，保存这次读操作后仍然保留在消息中的字符数。只能为那些基于消息的命名管道设置
注解
由这个函数读入的数据实际并不能从管道中删除。如果要对一个管道进行轮询，了解是否有可能数据，那么使用这个函数特别理想


POINTAPI
类型定义
Type POINTAPI
x As Long
y As Long
End Type
说明

POINTAPI结构对应于windows的POINT结构，在vb中定义为POINTAPI，从而避免与vb的Point关键字冲突，用于描叙一个位置（即屏幕点），与RECT结构相同，x和y字段的单位取决于准备使用的对象与api函数

Top


POLYTEXT

POLYTEXT——参考PolyTextOut函数
类型定义
Type POLYTEXT x As Long y As Long n As Long lpStr As String uiFlags As Long rcl As RECT pdx As Long End Type
说明
This structure describes the location and contents of strings to draw for the PolyTextOut function
字段表
字段 | 类型及说明
x,y | Long，定义了字串的参考位置。根据设备场景当前的文本对齐设置，字串会对齐这个参考点
n | Long，字串的字符数量
lpStr | String，欲描绘的字串
uiFlags | Long，可设为下述一个或多个常数：
 | ETO_CLIPPED | 将输出剪切成由rcl字段指定的一个矩形
 | ETO_OPAQUE | 用当前背景色填充rcl矩形
rcl | RECT，用于指定约束矩形（如已经设置了ETO_CLIPPED）
pdx | Long，指定一个内存块的地址。该地址包含了一个Long型数组，用于装载每个字符的宽度


PRINTER_DEFAULTS

PRINTER_DEFAULTS——请参考OpenPrinter函数
类型定义
Type PRINTER_DEFAULTS pDatatype As String pDevMode As Long DesiredAccess As Long End Type
说明
This structure specifies default information for a printer.
字段表
字段 | 类型及说明
pDatatype | String，打印机使用的默认数据类型的名字。可设为vbNullString，表示使用当前的默认配置
pDevMode | Long，打印机默认配置信息的一个地址。可设为零，表示使用当前默认设置
DesiredAccess | Long，PRINTER_ACCESS_ADMINISTER 或 PRINTER_ACCESS_USE，或者是一个常规的安全值（取决于您是需要配置打印机，还是仅仅访问它）


PROVIDOR_INFO_1

PROVIDOR_INFO_1——请参考AddPrintProvidor函数
类型定义
Type PROVIDOR_INFO_1 ' 12 Bytes pName As Long pEnvironment As Long pDLLName As Long End Type
说明
This structure is used to describe a print providor
字段表
字段 | 类型及说明
pName | String，供应商的名字
pEnvironment | String，指定供应商的设计环境（比如“Windows NT x86”）。对于本地系统，设为vbNullString
pDLLName | String，供应商使用的DLL的名字


PulseEvent
VB声明
Declare Function PulseEvent Lib "kernel32" Alias "PulseEvent" (ByVal hEvent As Long) As Long
说明
将指定的事件设为发出信号状态。如果是一个人工重设事件，正在等候事件的、被挂起的所有线程都会进入活动状态。函数随后将事件设回未发信号状态，并返回。如果是一个自动重设事件，则正在等候事件的、被挂起的单个线程会进入活动状态。事件随后设回未发信号状态，并且函数返回
返回值
Long，非零表示成功，零表示失败。会设置GetLastError
参数表
参数 | 类型及说明
hEvent | Long，要处理的事件
注解
如一个线程正在等待多个同步对象，而且其他对象尚未发出信号，则线程不会由这个函数激活


RECT
类型定义
Type RECT
Left As Long
Top As Long
Right As Long
Bottom As Long
End Type
说明

这是windows广泛采用的一种数据结构，通常作为参数传递给许多api函数。RECT结构表示一个矩形区域，left和top字段描叙了矩形第一个角（通常是左上角），right和bottom字段描叙了矩形的第二个角（通常是右下角）。这两个位置决定了矩形的大小与位置。这些字段采用的单位及坐标系统取决于当前的有效缩放比例、准备表示的对象以及准备调用的api函数。并不要求bottom字段的绝对值大于top字段，而且也可以为负数。

注意
由right及bottom字段指定的点通常不是矩形的一部分；矩形对象描叙的是个空矩形（其中不包含像素）；RECT结构要求按引用传递给windows函数，不要试图使用ByVal

Top


ReleaseMutex
VB声明
Declare Function ReleaseMutex Lib "kernel32" Alias "ReleaseMutex" (ByVal hMutex As Long) As Long
说明
释放由线程拥有的一个互斥体
返回值
Long，非零表示成功，零表示失败。会设置GetLastError
参数表
参数 | 类型及说明
hMutex | Long，指定一个互斥体的句柄
注解
通过为互斥体调用一个等待函数，一个线程可获得该互斥体的所有权


ReleaseSemaphore
VB声明
Declare Function ReleaseSemaphore Lib "kernel32" Alias "ReleaseSemaphore" (ByVal hSemaphore As Long, ByVal lReleaseCount As Long, lpPreviousCount As Long) As Long
说明
递增一个信号机计数
返回值
Long，非零表示成功，零表示失败。会设置GetLastError
参数表
参数 | 类型及说明
hSemaphore | Long，信号机的句柄
lReleaseCount | Long，信号机计数要递增的数字。至少为1，而且不可太大，致使信号机超过它的最大计数（如真的出现这种情况，函数执行就会失败，而且计数不会发生任何变化）
lpPreviousCount | Long，用于装载前一个信号机计数的一个变量
注解
参考CreateSemaphore函数，了解关于信号机的进一步情况


ResetEvent
VB声明
Declare Function ResetEvent Lib "kernel32" Alias "ResetEvent" (ByVal hEvent As Long) As Long
说明
将指定的事件设为未发信号状态
返回值
Long，非零表示成功，零表示失败。会设置GetLastError
参数表
参数 | 类型及说明
hEvent | Long，指定一个事件的句柄
注解
这个函数通常不可随同自动重设事件对象使用，因为一旦正在等候一个事件的线程被释放，那么它们会自动重设


ResumeThread
VB声明
Declare Function ResumeThread Lib "kernel32" Alias "ResumeThread" (ByVal hThread As Long) As Long
说明
恢复执行用SuspendThread挂起的一个线程
返回值
Long，调用这个函数前的挂起计数。&HFFFFFFFF表示出错。会设置GetLastError
参数表
参数 | 类型及说明
hThread | Long，要恢复的一个线程的句柄
注解
请参考SuspendThread


RGNDATA
类型定义
Type RGNDATA rdh As RGNDATAHEADER Buffer(1) As RECT End Type
说明
Used by the GetRegionData function to describe a region.
字段表
字段 | 类型及说明
rdh | RGNDATAHEADER，Describes the region. Refer to the RGNDATAHEADER structure for detailed information on this field.
Buffer | RECT Array，An array of RECT structures. The size of the array is specified in the nRgnSize field of the rdh field. The rectangles are sorted top to bottom, left to right, and do not overlap.


SetDIBColorTable
VB声明
Declare Function SetDIBColorTable Lib "gdi32" Alias "SetDIBColorTable" (ByVal hDC As Long, ByVal un1 As Long, ByVal un2 As Long, pcRGBQuad As RGBQUAD) As Long
说明
设置选入设备场景的一个DIBSection的颜色表信息
返回值
Long，要设置的颜色表条目数量，零表示失败。会设置GetLastError
参数表
参数 | 类型及说明
hDC | Long，已选定一个DIBSection对象的一个设备场景
un1 | Long，要在颜色表中设置的第一个条目的索引
un2 | Long，欲设置的条目数量
pcRGBQuad | RGBQUAD，一个RGBQUAD结构的头一个条目。这个结构包含了新的颜色表信息。至少需要设置成un2个条目的长度
注解
如DIBSection为每个像素使用的二进制位超过8位，则不会使用颜色表


SetEvent
VB声明
Declare Function SetEvent Lib "kernel32" Alias "SetEvent" (ByVal hEvent As Long) As Long
说明
将一个事件设为发出信号状态
返回值
Long，非零表示成功，零表示失败。会设置GetLastError
参数表
参数 | 类型及说明
hEvent | Long，一个事件的句柄
注解
对一个人工重设事件，除非用ResetEvent函数明确设为未发信号状态，否则会一直保持发出信号状态。对于自动重设事件，除非有一个线程为事件对象调用了一个等待函数，否则事件会保持发出信号状态


SetHandleInformation
VB声明
Declare Function SetHandleInformation Lib "kernel32" Alias "SetHandleInformation" (ByVal hObject As Long, ByVal dwMask As Long, ByVal dwFlags As Long) As Long
说明
允许我们设置特定的系统对象
返回值
Long，非零表示成功，零表示失败。会设置GetLastError
参数表
参数 | 类型及说明
hObject | Long，要改变设置的一个句柄
dwMask | Long，指定一个或多个掩蔽常数，它们是由dwFlags参数指定的，定义了要设置的二进制位
dwFlags | Long，设置了下述一个或多个常数的位标志：
 | HANDLE_FLAG_INHERIT | 该对象可由一个子进程继承
 | HANDLE_FLAG_PROTECT_FROM_CLOSE | 不可用CloseHandle函数关闭句柄
适用平台
Windows NT


SetMailslotInfo
VB声明
Public Declare Function SetMailslotInfo Lib "kernel32" Alias "SetMailslotInfo" (ByVal hMailslot As Long, ByVal lReadTimeout As Long) As Long
说明
允许我们针对一个邮路中的读操作改变默认超时设定
返回值
Long，非零表示成功，零表示失败。会设置GetLastError
参数表
参数 | 类型及说明
hMailslot | Long，指定邮路的句柄
lReadTimeout | Long，以毫秒表示的新默认超时。零表示绝不等待。MAILSLOT_WAIT_FOREVER则指定一个无限超时


SetNamedPipeHandleState
VB声明
Declare Function SetNamedPipeHandleState Lib "kernel32" Alias "SetNamedPipeHandleState" (ByVal hNamedPipe As Long, lpMode As Long, lpMaxCollectionCount As Long, lpCollectDataTimeout As Long) As Long
说明
设置与一个命名管道的运作有关的信息
返回值
Long，非零表示成功，零表示失败。会设置GetLastError
参数表
参数 | 类型及说明
hNamedPipe | Long，指定一个命名管道的句柄
lpMode | Long，下列常数的一个或多个：PIPE_WAIT， PIPE_NOWAIT， PIPE_READMODE_BYTE以及 PIPE_READMODE_MESSAGE。请参考CreateNamedPipe函数，了解有关这些标志的进一步情况
lpMaxCollectionCount | Long，如管道设为通过一个网络传输数据，则在这里指定通过管道发送之前可排除等候的最大数据量
lpCollectDataTimeout | Long，如管道设为通过一个网络传输数据，则在这里指定网络数据传输前能够忍受的最长等候时间（超时）


SetThreadPriority
VB声明
Declare Function SetThreadPriority Lib "kernel32" Alias "SetThreadPriority" (ByVal hThread As Long, ByVal nPriority As Long) As Long
说明
为指定的线程设置优先级
返回值
Long，非零表示成功，零表示失败。会设置GetLastError
参数表
参数 | 类型及说明
hThread | Long，指定一个线程的句柄
nPriority | Long，带有前缀THREAD_PRIORITY_???的一个常数，它定义了线程的优先级
注解
线程优先级与优先级类组合起来，共同决定了线程的实际优先级


SetWaitableTimer
VB声明
Declare Function SetWaitableTimer Lib "kernel32" (ByVal hTimer As Long, lpDueTime As FILETIME, ByVal lPeriod As Long, ByVal pfnCompletionRoutine As Long, ByVal lpArgToCompletionRoutine As Long, ByVal fResume As Long) As Long
说明
启动一个可等待计时器。将它设为未发信号状态
返回值
Long，非零表示成功，零表示失败。会设置GetLastError
参数表
参数 | 类型及说明
hTimer | Long，指定一个可等待计时器的句柄
lpDueTime | FILETIME，指定一个包含了64位时间值的结构。如果为正，它代表计时器要触发的时间。如果为负，它代表自函数调用以来持续的时间。时间是以100ns为单位指定的
lPeriod | Long，如果为零，这个计时器只会触发一次。否则，计时器会根据这里设置的持续时间自动重新启动（以毫秒为单位指定）
pfnCompletionRoutine | Long，指定零或者计时器触发时要调用的一个函数的地址。可在标准模块中用一个函数通过AddressOf操作符提供这个地址。或者使用此类ocx控件。最终的例程采取下述形式： Sub myfunc(ByVal lpArgToCompletion&, ByVal dwTimerLow&, ByVal dwTimerHigh&)
lpArgToCompletionRoutine | Long，传递给最终例程的值
fResume | Long，如果为TRUE，而且系统支持电源管理，那么在计时器触发的时候，系统会退出省电模式。如设为TRUE，但系统不支持省电模式，GetLastError就会返回ERROR_NOT_SUPPORTED
适用平台
Windows NT


Sleep

Sleep, SleepEx
VB声明
Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long) Declare Function SleepEx& Lib "kernel32" (ByVal dwMilliseconds As Long, ByVal bAlertable As Long)
说明
将一个线程的运作挂起指定的时间
返回值
Long，仅适用于SleepEx。如超出时间溢出，则为零。如由于异步I/O操作完成导致了函数的返回，则为 WAIT_IO_COMPLETION
参数表
参数 | 类型及说明
dwMilliseconds | Long，将线程挂起的毫秒时间长度。如设为常数INFINITE，表示将一个线程永久性的催眠
bAlertable | Long，仅适用于SleepEx。如用一个ReadFileEx 或 WriteFileEx函数调用初始化了一个异步I/O传输，而且我们希望函数返回，以便由那些函数指定的I/O结束例程能正常执行，就设为TRUE


SuspendThread
VB声明
Declare Function SuspendThread Lib "kernel32" Alias "SuspendThread" (ByVal hThread As Long) As Long
说明
将指定线程的执行挂起
返回值
Long，这个函数调用前的挂起计数。&HFFFFFFFF表示出错。会设置GetLastError
参数表
参数 | 类型及说明
hThread | Long，指定要挂起的一个线程的句柄
注解
对这个函数的每次调用都会使挂起计数递增。而ResumeThread函数会递减这个计数。只有在计数为零的时候，才会执行这个线程


SYSTEM_INFO
类型定义
Type SYSTEM_INFO ' 36 Bytes dwOemID As Long dwPageSize As Long lpMinimumApplicationAddress As Long lpMaximumApplicationAddress As Long dwActiveProcessorMask As Long dwNumberOrfProcessors As Long dwProcessorType As Long dwAllocationGranularity As Long wProcessorLevel As Integer wProcessorRevision As Integer End Type
说明
This structure contains information regarding the current computer system.
字段表
字段 | 类型与说明
dwOemID | Long，System processor used. In Windows 95, this value is always set to zero (PROCESSOR_ARCHITECTURE_INTEL). In Windows NT, this value may be one of the following : PROCESSOR_ARCHITECTURE_INTEL, PROCESSOR_ARCHITECTURE_MIPS, PROCESSOR_ARCHITECTURE_ALPHA, PROCESSOR_ARCHITECTURE_PPC
dwPageSize | Long，Page size used. Also specifies the granularity of page protection and commitment.
lpMinimumApplicationAddress | Long，Contains the lowest memory address that applications and dynamic link libraries (DLLs) can access.
lpMaximumApplicationAddress | Long，Contains the highest memory address that applications and DLLs can access.
dwActiveProcessorMask | Long，Contains a mask representing the set of processors available on the system. Processor zero is indicated by bit zero being set.
dwNumberOrfProcessors | Long，The number of processors in this system.
dwProcessorType | Long，Obsolete, but maintained for backward compatibility. Can be one of the following values: PROCESSOR_INTEL_386, PROCESSOR_INTEL_486, PROCESSOR_INTEL_PENTIUM. The following are valid on Windows NT systems only: PROCESSOR_MIPS_R4000, PROCESSOR_ALPHA_21046
dwAllocationGranularity | Long，Contains the allocation granularity used to allocate memory. This value is usually set to 64K.
wProcessorLevel | Integer，Specifies the processor level. This value depends on the PROCESSOR_ARCHITECTURE_* value in the dwOemID field. For PROCESSOR_ARCHITECTURE_INTEL, the valid values are currently: 3 for a 386 CPU, 4 for a 486 CPU, and 5 for a Pentium.
wProcessorRevision | Integer，Specifies the processor revision. This value depends on the PROCESSOR_ARCHITECTURE_* value in the dwOemID field.

Top


SYSTEMTIME
类型定义
Type SYSTEMTIME ' 16 Bytes wYear As Integer wMonth As Integer wDayOfWeek As Integer wDay As Integer wHour As Integer wMinute As Integer wSecond As Integer wMilliseconds As Integer End Type
说明
This structure contains date and time information.
字段表
字段 | 类型与说明
wYear | Integer，The current year.
wMonth | Integer，The current month. January is 1.
wDayOfWeek | Integer，The current day of the week. Sunday is 0.
wDay | Integer，The current day of the month.
wHour | Integer，The current hour.
wMinute | Integer，The current minute.
wSecond | Integer，The current second.
wMilliseconds | Integer，The current millisecond.

Top


TIME_ZONE_INFORMATION
类型定义
Type TIME_ZONE_INFORMATION ' 172 Bytes Bias As Long StandardName(32) As Integer StandardDate As SYSTEMTIME StandardBias As Long DaylightName(32) As Integer DaylightDate As SYSTEMTIME DaylightBias As Long End Type
说明
This structure contains information about the time zone for this system.
字段表
字段 | 类型与说明
Bias | Long，Used to translate local time into coordinated universal time (UTC) time. The bias is the difference, in minutes, between UTC and local time. The following formula is used: UTC = local time + bias.
StandardName | Integer Array，A double-byte null-terminated Unicode string that describes the standard time zone for the system. This field is not used internally and may be set to zero.
StandardDate | SYSTEMTIME，Contains a date and UTC time describing when the transition from daylight time to standard time occurs on this system. Set the wMonth field to zero to ignore this field.
StandardBias | Long，Value to add to the Bias field when standard time is in effect. Ignored if StandardDate is not used.
DaylightName | Integer Array，A double-byte null-terminated Unicode string used to describe the daylight time zone for this system. This field is not used internally and may be set to zero.
DaylightDate | SYSTEMTIME，Contains a date and UTC time describing when the transition from standard time to daylight time occurs on this system. Set the wMonth field to zero to ignore this field.
DaylightBias | Long，Value to add to the Bias field when daylight saving time is in effect. Ignored if DaylightDate is not used.

Top


TPMPARAMS
类型定义
Type TPMPARAMS cbSize As Long rcExclude As RECT End Type
说明
这个结构用于TrackPopupMenuEx函数以支持额外的功能（This structure is used by the TrackPopupMenuEx function to support additional capabilities）
字段表
cbSize | Long，这个结构的大小，必须为20（The size of this structure. Must be 20）
rcExclude | RECT，屏幕上不能由弹出式菜单覆盖的一个矩形区域（Specifies a rectangle in screen coordinates that should not be covered by this pop-up menu）


TransactNamedPipe
VB声明
Declare Function TransactNamedPipe Lib "kernel32" Alias "TransactNamedPipe" (ByVal hNamedPipe As Long, lpInBuffer As Any, ByVal nInBufferSize As Long, lpOutBuffer As Any, ByVal nOutBufferSize As Long, lpBytesRead As Long, lpOverlapped As OVERLAPPED) As Long
说明
该函数在单独一个函数中同时合并了对管道的读、写操作。客户和服务器进程都可用它
返回值
Long，如操作已结束，则返回TRUE（非零）；否则返回零。在异步模式中，GetLastError会设置成ERROR_IO_PENDING，而且操作会继续在后台进行。可测试lpOverlapped结构中的事件对象，了解操作是否结束
参数表
参数 | 类型及说明
hNamedPipe | Long，指定一个消息类型的命名管道的句柄
lpInBuffer | Any，指定一个内存缓冲区，在其中包含要写入管道的数据
nInBufferSize | Long，指定lpInBuffer缓冲区中的字节数量
lpOutBuffer | Any，指定一个内存缓冲区，用于装载从管道中读入的数据
nOutBufferSize | Long，用于装载来自管道的数据
lpBytesRead | Long，指定要从管道读入的字节数量。会读入单条消息。如由于lpOutBuffer不够大，不能容下完整的消息，那么函数会返回FALSE，而且GetLastError会设为ERROR_MORE_DATA（消息中剩下的所有字节都会丢失）
lpOverlapped | OVERLAPPED，可以为NULL（变成ByVal As Long，并传递零值），或指定包含了一个事件对象的OVERLAPPED结构
注解
如lpOverlapped设为NULL，或者句柄没有创建成FILE_FLAG_OVERLAPPED样式，那么除非读和写操作都完成，否则函数不会返回


uAction

uAction常数表——请参考SystemParametersInfo函数
请参考windows用户手册，了解关于这些参数以及注册表或win.ini文件的详细情况。如参数不是为一个行动指定的，则没有使用。在许多许多情况下系统参数都有自己对应的 GET 和 SET 行动；例如 SPI_GETACCESSTIMEOUT 和 SPI_SETACCESSTIMEOUT。在这些情况下，除非特别指明，否则它们之间唯一的区别就是一个用于取得信息，另一个设置信息。针对 SET 条目，只列出参数间的差异
常数 | 含义
SPI_GETACCESSTIMEOUT | lpvParam是一个ACCESSTIMEOUT结构，其中要载入辅助访问特性计时信息。在调用函数之前，uParam必须设为ACCESSTIMEOUT结构的大小
SPI_GETANIMATION | lpvParam是一个ANIMATIONINFO结构，将在其中载入窗口最小化和恢复时的动画信息。不能在NT 3.51中使用
SPI_GETBEEP | lpvParam是一个Long型数据，若打开了响铃声，则设为TRUE
SPI_GETBORDER | lpvParam是一个Long型数据，用于接收一个乘数（倍数），对大小可变的窗口的边框尺寸进行控制
SPI_GETDEFAULTINPUTLANG | lpvParam是一个Long型数据，用于接收默认键盘布局的一个32位句柄。不能用于NT 3.51
SPI_GETDRAGFULLWINDOWS | lpvParam是一个Long型数据，如在整个窗口上拖动，就会设为TRUE。如果只拖出了一个矩形轮廓，则为FALSE。要求NT 4.0 或 Windows 95支持。其中，Windows 95必须有Plus！支持，或直接安装Windows 95 OSR2
SPI_GETFASTTASKSWITCH | lpvParam是一个Long型数据，如允许快速任务切换，则为TRUE。在Windows 95 和 NT 4.0中肯定是TRUE
SPI_GETFILTERKEYS | lpvParam是一个FILTERKEYS结构，用于装载与键盘有关的辅助访问特性信息
SPI_GETFONTSMOOTHING | lpvParam是一个Long型数据，如打开了边缘修饰特性（让字体更圆润），则为TRUE。只适用于 NT 4.0 和带 Plus！ 支持的 Windows 95
SPI_GETGRIDGRANULARITY | lpvParam是一个Long型数据，会设为网格间隔尺寸值
SPI_GETHIGHCONTRAST | lpvParam是一个HIGHCONTRAST结构，用于装载与用户显示器有关的辅助访问特性信息。仅适用于Win95
SPI_GETICONMETRICS | lpvParam是一个ICONMETRICS结构，用于装载与图标比例及排列有关的信息。仅适用于Windows 95 及 NT 4.0
SPI_GETICONTITLELOGFONT | lpvParam指向一个LOGFONT结构，设置内容取决于图标标题采用的字体
SPI_GETICONTITLEWRAP | lpvParam是一个Long型数据，如允许对图标标题进行自动换行，则设为TRUE
SPI_GETKEYBOARDDELAY | lpvParam是一个Long型数据，设为键盘重复延时
SPI_GETKEYBOARDPREF | lpvParam是一个Long型数据，如用户更喜欢用键盘而不是鼠标，则设为TRUE。如这个参数为真，windows会显示出附加的键盘接口信息，只适用于win95
SPI_GETKEYBOARDSPEED | lpvParam是一个Long型数据，设为键盘的重复速率
SPI_GETMENUDROPALIGNMENT | lpvParam是一个Long型数据，若弹出式菜单左对齐（默认），则设为FALSE。否则为TRUE
SPI_GETMINIMIZEDMETRICS | lpvParam是一个MINIMIZEDMETRICS结构，用于装载与最小化窗口的比例及排列有关的信息。仅适用于win95
SPI_GETMOUSE | lpvParam是三元素Long数组的头一个条目，条目0设为用户配置MouseThreshold1字段，条目1设为MouseThreshold2字段，条目2设为MouseSpeed
SPI_GETMOUSEKEYS | lpvParam是一个MOUSEKEYS结构，要在其中装载与鼠标有关的辅助访问信息。不能在 NT 3.51中使用
SPI_GETNONCLIENTMETRICS | lpvParam是一个NONCLIENTMETRICS结构，要在其中装载有关字体和环境有关的信息；这些信息会在描绘窗口非客户区域时涉及到，如边框、标题等。只适用于win95
SPI_GETSCREENSAVEACTIVE | lpvParam指向一个整数；倘若屏幕保护程序处于活动状态，则设为TRUE；否则设为FALSE
SPI_GETSCREENSAVETIMEOUT | lpvParam指向一个整数；它设为屏幕保护延时（以秒为单位）
SPI_GETSERIALKEYS | lpvParam是一个SERIALKEYS结构，用于装载与输入设备（用于模拟键盘输入）有关的辅助访问特性信息。只适用于win95
SPI_GETSHOWSOUNDS | lpvParam是一个Long型数据，倘若应用程序应该用可视线索来代替声音，则设为TRUE。它的作用与GetSystemMetrics函数的SM_GETSHOWSOUNDS选项是相同的
SPI_GETSNAPTODEFBUTTON | lpvParam是一个Long型数据，倘若鼠标会自动移到新对话框的默认按钮，则设为TRUE。只适用于NT 4.0
SPI_GETSOUNDSENTRY | lpvParam是一个SOUNDSENTRY结构，用于装载让windows提供可视标志（而不是系统声音）时涉及的辅助访问特征信息。调用之前，必须将uParam设为SOUNDSENTRY结构的长度
SPI_GETSTICKYKEYS | lpvParam是一个STICKYKEYS结构，用于装载允许一名用户顺序按键（而不是同时按下）时涉及的辅助访问特征信息。同时按键的例子包括Shift+， Ctrl+， Alt+ 等。调用之前，必须将uParam设为STICKYKEYS结构的长度
SPI_GETTOGGLEKEYS | lpvParam是一个TOGGLEKEYS结构，要在其中装载按下一个开关键（NumLock，CapsLock，ScrollLock）后播放声音提示时涉及的辅助访问特征信息。windows会用一个不同的声音指出开或关状态。调用之前，必须将uParam设为TOGGLEKEYS结构的长度
SPI_GETWORKAREA | lpvParam是一个RECT结构，用于装载屏幕的工作区
SPI_ICONHORIZONTALSPACING | 如lpvParam为NULL，则uParam代表桌面图标新的水平间隔距离，以像素为单位
SPI_ICONVERTICALSPACING | 与SPI_ICONHORIZONTALSPACING相似，只不过指定图标的垂直间距
SPI_LANGDRIVER | lpvParam是一个字串，用于容纳新的语言驱动程序文件的名称
SPI_SETACCESSTIMEOUT | 与SPI_GETACCESSTIMEOUT的参数相同
SPI_SETANIMATION | 与SPI_GETANIMATION的参数相同
SPI_SETBEEP | uParam为TRUE时打开响铃，FALSE关闭
SPI_SETBORDER | uParam代表一个乘数，用于控制尺寸可变的的窗口边框的大小
SPI_SETDEFAULTINPUTLANG | 与SPI_GETDEFAULTINPUTLANG的参数相同
SPI_SETDESKPATTERN | 从注册表或win.ini中强制窗口恢复当前的桌面方案
SPI_SETDESKWALLPAPER | lpvParam代表一个字串，用于容纳作为桌面墙纸使用的一个位图文件的名称
SPI_SETDOUBLECLICKTIME | uParam代表连续两次单击被当作一次双击处理时需要间隔的时间（以毫秒为单位）
SPI_SETDOUBLECLKHEIGHT | uParam代表新的双击高度，可参考GetSystemMetrics函数的注解
SPI_SETDOUBLECLKWIDTH | uParam代表新的双击宽度，可参考GetSystemMetrics函数的注解
SPI_DRAGFULLWINDOWS | uParam为TRUE时打开全窗口拖动，否则为FALSE。仅适用于win95
SPI_SETDRAGHEIGHT | uParam代表一个矩形的高度（以像素为单位），用于决定拖动操作何时开始。只适用于win95
SPI_SETDRAGWIDTH | uParam代表一个矩形的宽度（以像素为单位），用于决定拖动操作何时开始。只适用于win95
SPI_SETFASTTASKSWITCH | uParam为TRUE时打开快速任务切换，FALSE则关闭
SPI_FILTERKEYS | 参数与 SPI_GETFILTERKEYS 相同
SPI_SETFONTSMOOTHING | uParam为TRUE时打开字体修饰（圆润）。只能在NT 4.0 和得到 Plus！ 支持的 Win95（或 Windows 95 OSR2）中使用
SPI_SETGRIDGRANULARITY | uParam代表新的网格间距
SPI_SETHIGHCONTRAST | 参数与 SPI_GETHIGHCONTRAST 相同
SPI_SETICONMETRICS | 参数与 SPI_GETICONMETRICS 相同
SPI_SETICONTITLELOGFONT | lpvParam是一个LOGFONT结构，用于定义图标标题采用的字体。uParam指定LOGFONT结构的大小。如两者均为NULL，则采用系统启动时定义的字体
SPI_SETICONTITLEWRAP | uParam为TRUE时打开图标标题自动换行
SPI_SETKEYBOARDDELAY | uParam代表新的键盘重复延时
SPI_SETKEYBOARDPREF | 若uParam为TRUE，表明用户相比键盘和鼠标更喜欢用前者。参考SPI_GETKEYBOARDPREF
SPI_SETKEYBOARDSPEED | uParam代表新的键盘重复速率
SPI_SETLANGTOGGLE | 令窗口从系统注册表中重新装载热键信息，以便在键盘布局之间交换
SPI_SETLOWPOWERACTIVE | uParam为TRUE时允许节能屏幕保护程序模式。只适用于win95
SPI_SETLOWPOWERTIMEOUT | uParam代表新的节能屏幕保护程序延时。只适用于win95
SPI_SETMENUDROPALIGNMENT | uParam为FALSE时设置弹出菜单左对齐，TRUE则右对齐
SPI_SETMINIMIZEDMETRICS | 参数与SPI_GETMINIMIZEDMETRICS一样
SPI_SETMOUSE | lpvParam是一个三元素整数数组的头一个条目，其中包含了鼠标设置。参考SPI_GETMOUSE
SPI_SETMOUSEBUTTONSWAP | uParam为TRUE时交换左右鼠标按钮的功能；如果为FALSE，则使用原来的值
SPI_SETMOUSEKEYS | 参数与SPI_GETMOUSEKEYS一样
SPI_SETNONCLIENTMETRICS | 参数与SPI_GETNONCLIENTMETRICS一样
SPI_SETPENWINDOWS | uParam为TRUE时载入笔窗口，FALSE则卸载
SPI_SETPOWEROFFACTIVE | uParam为TRUE时允许停电屏幕保护模式。只适用于win95
SPI_SETPOWEROFFTIMEOUT | uParam代表新的停电屏幕保护程序延时。只适用于win95
SPI_SETSCREENREADER | uParam为TRUE时表示正在运行一个屏幕阅读程序。参考SPI_GETSCREENREADER
SPI_SETSCREENSAVEACTIVE | uParam为TRUE时激活屏幕保护程序；FALSE表示禁止
SPI_SETSCREENSAVETIMEOUT | uParam代表新的屏幕保护延迟时间，以秒为单位
SPI_SETSERIALKEYS | 参数与 SPI_GETSERIALKEYS 相同
SPI_SETSHOWSOUNDS | uParam为TRUE时允许窗口开启声音提示辅助访问特性。参考SPI_GETSHOWSOUNDS
SPI_SETSNAPTODEFBUTTON | 如鼠标应自动移到新对话框的默认按钮，则uParam为TRUE。只适用于NT 4.0
SPI_SETSOUNDSENTRY | 与 SPI_GETSOUNDSENTRY 相同
SPI_SETSTICKYKEYS | 与 SPI_GETSTICKYKEYS 相同
SPI_SETTOGGLEKEYS | 与 SPI_GETTOGGLEKEYS 相同
SPI_SETWORKAREA | 与 SPI_GETWORKAREA 相同
请参考最新的Win32手册，了解SystemParametersInfo函数是否又新支持了一些常数。上述表格已随同NT 4.0进行了更新，但仍未提供涉及新型鼠标轮支持的常数。

Top


VerInstallFile函数结果常数表

常数 | 说明
VIF_TEMPFILE | 目标目录保存了作为新文件一个副本的临时文件，需将其删除
VIF_MISMATCH | 现有文件的一项或多项版本属性与新文件不同。可在uFlage参数中指定VIFF_FORCEINSTALL，从而强制忽略这些区别
VIF_SRCOLD | 根据文件的版本标记信息，文件的新版本早于现有文件。可在uFlage参数中指定VIFF_FORCEINSTALL，从而忽略这项差异
VIF_DIFFLANG | 文件的新版本采用了与现有文件不同的语言或代码页。可在uFlage参数中指定VIFF_FORCEINSTALL，从而忽略这项差异
VIF_DIFFCODEPG | 新版文件要求与windows目前正在运行的那个文件不同的一个代码页。可在uFlage参数中指定VIFF_FORCEINSTALL，从而忽略这项差异
VIF_DIFFTYPE | 文件的新版本在类型、子类型或者目标操作系统上与现有版本不同。可在uFlage参数中指定VIFF_FORCEINSTALL，从而忽略这项差异
VIF_WRITEPROT | 以前存在的文件是写保护的
VIF_FILEINUSE | 现有文件正在使用
VIF_OUTOFSPACE | 目标驱动器磁盘空间不够
VIF_ACCESSVIOLATION | 由于访问违例，所以操作失败
VIF_SHARINGVIOLATION | 由于共享违例，所以操作失败
VIF_CANNOTCREATE | 不能创建临时文件
VIF_CANNOTDELETE | 不能删除文件的现有版本
VIF_CANNOTDELETECUR | 不能删除文件的现有版本，而且在uFlage参数中未指定VIFF_DONTDELETEOLD
VIF_CANNOTRENAME | 不可将临时文件更名为现有文件的名字。现有文件已被删除
VIF_OUTOFMEMORY | 内存不足，导致操作失败
VIF_CANNOTREADSRC | 源文件不可读
VIF_CANNOTREADDEST | 现有的目标文件不可读（所以版本信息不能检查）
VIF_BUFFTOOSMALL | lpuTmpFileLen参数太小，不能容下临时文件的名字

Top


WaitForInputIdle
VB声明
Declare Function WaitForInputIdle Lib "user32" Alias "WaitForInputIdle" (ByVal hProcess As Long, ByVal dwMilliseconds As Long) As Long
说明
等候指定的进程进入空闲状态。空闲（Idle）状态是指进程准备处理一条消息、但目前暂时没有消息需要处理的一种状态
返回值
Long，零表示成功；WAIT_TIMEOUT表示在超时时间内没有进程进入空闲状态。0xFFFFFFFF表示出错。会设置GetLastError
参数表
参数 | 类型及说明
hProcess | Long，指定一个进程的句柄
dwMilliseconds | Long，以毫秒数表示的超时设定。常数INFINITE表示如有必要就一直等候下去
在VB里使用
可用这个函数侦测一个子进程是否完成了它的初始化工作


WaitForMultipleObjects

WaitForMultipleObjects, WaitForMultipleObjectsEx
VB声明
Declare Function WaitForMultipleObjects& Lib "kernel32" (ByVal nCount As Long, lpHandles As Long, ByVal bWaitAll As Long, ByVal dwMilliseconds As Long) Declare Function WaitForMultipleObjectsEx& Lib "kernel32" (ByVal nCount As Long, lpHandles As Long, ByVal bWaitAll As Long, ByVal dwMilliseconds As Long, ByVal bAlertable As Long)
说明
等候单个对象或所有一系列对象发出信号，或等候指定的超时时间过去（溢出）。如返回条件已经满足，则立即返回
返回值
Long，如bWaitAll设为TRUE，则下述任何一个常数都标志着成功 WAIT_ABANDONED_0：所有对象都发出消息，而且其中有一个或多个属于互斥体（一旦拥有它们的进程中止，就会发出信号） WAIT_TIMEOUT：对象保持未发信号的状态，但规定的等待超时时间已经超过 WAIT_OBJECT_0：所有对象都发出信号 WAIT_IO_COMPLETION：（仅适用于WaitForMultipleObjectsEx）由于一个I/O完成操作已作好准备执行，所以造成了函数的返回 返回WAIT_FAILED则表示函数执行失败，会设置GetLastError 如bWaitAll为FALSE，那么返回结果相似，只是可能还会返回相对于WAIT_ABANDONED_0 或 WAIT_OBJECT_0的一个正偏移量，指出哪个对象是被抛弃还是发出信号。例如，WAIT_OBJECT_0 + 5的返回结果意味着列表中的第5个对象发出了信号
参数表
参数 | 类型及说明
nCount | Long，指定列表中的句柄数量
lpHandles | Long，指定对象句柄组合中的第一个元素
bWaitAll | Long，如果为TRUE，表示除非对象都发出信号，否则就一直等待下去；如果为FALSE，表示任何对象发出信号即可
dwMilliseconds | Long，指定要等候的毫秒数。如设为零，表示立即返回。如指定常数INFINITE，则可根据实际情况无限等待下去
bAlertable | Long，仅适用于WaitForMultipleObjectsEx。倘若已用一个ReadFileEx 或 WriteFileEx函数调用对异步I/O传输进行了初始化，而且希望函数返回——以便由那些函数指定的I/O结束例程能正常执行，那么就把这个参数设为TRUE
注解
在Windows NT中，对象句柄必须指定了SYNCHRONIZE（同步）访问 如函数是由于对象发出信号而返回，那么这个函数可能还会得到一些额外的效果——具体由对象的类型决定。如下所示： □ 信号机：递增信号机计数 □ 互斥体：将互斥体的所有权赋予发出调用的线程 □ 自动重设事件：将事件发信状态设为FALSE

Top


WaitForSingleObject

WaitForSingleObject, WaitForSingleObjectEx
VB声明
Declare Function WaitForSingleObject& Lib "kernel32" (ByVal hHandle As Long, ByVal dwMilliseconds As Long) Declare Function WaitForSingleObjectEx& Lib "kernel32" (ByVal hHandle As Long, ByVal dwMilliseconds As Long, ByVal bAlertable As Long)
说明
等候指定的对象发出信号，或等候指定的超时时间过去（溢出）。如对象已经发出信号，则立即返回
返回值
Long，下述任何一个常数都标志着成功 WAIT_ABANDONED：对象是一个互斥体，拥有它的进程中止时发出信号 WAIT_TIMEOUT：对象保持未发信号的状态，但规定的等待超时时间已经超过 WAIT_OBJECT_0：对象发出信号 WAIT_IO_COMPLETION：（仅适用于WaitForSingleObjectEx）由于一个I/O完成操作已作好准备执行，所以造成了函数的返回 返回WAIT_FAILED则表示函数执行失败，会设置GetLastError
参数表
参数 | 类型及说明
hHandle | Long，指定要等候的句柄。可以是一个改变通知对象、一个控制台输入对象、一个事件、互斥体、信号机、一个进程或线程
dwMilliseconds | Long，指定要等候的毫秒数。如设为零，表示立即返回。如指定常数INFINITE，则可根据实际情况无限等待下去
bAlertable | Long，只适用于WaitForSingleObjectEx。如果已经通过ReadFileEx 或 WriteFileEx函数调用对异步I/O传输进行了初始化，而且希望函数返回——以便由那些函数指定的I/O结束例程能正常执行，那么就把这个参数设为TRUE
注解
在Windows NT中，对象句柄必须指定了SYNCHRONIZE（同步）访问 如函数是由于对象发出信号而返回，那么这个函数可能还会得到一些额外的效果——具体由对象的类型决定。如下所示： □ 信号机：递增信号机计数 □ 互斥体：将互斥体的所有权赋予发出调用的线程 □ 自动重设事件：将事件发信状态设为FALSE

Top


WaitNamedPipe
VB声明
Declare Function WaitNamedPipe Lib "kernel32" Alias "WaitNamedPipeA" (ByVal lpNamedPipeName As String, ByVal nTimeOut As Long) As Long
说明
由一个客户进程调用，等候一个管道变成可用状态（比如服务器已调用ConnectNamedPipe函数同一个客户连接）
返回值
Long，非零表示成功；如果失败，或者管道不存在，则返回零。会设置GetLastError
参数表
参数 | 类型及说明
lpNamedPipeName | String，指定要连接的管道名称
nTimeOut | Long，以毫秒数表示的等待时间，或者下述常数之一：
 | NMPWAIT_USE_DEFAULT_WAIT | 使用管道创建时的默认超时设定
 | NMPWAIT_WAIT_FOREVER | 永远等待
注解
在这个函数之后，用CreateFile打开管道。注意从这个函数返回到调用CreateFile函数期间，倘若有另一个进程同管道连接，那么这个CreateFile调用可能失败


WINDOWPLACEMENT
类型定义
Type WINDOWPLACEMENT Length As Long flags As Long showCmd As Long ptMinPosition As POINTAPI ptMaxPosition As POINTAPI rcNormalPosition As RECT End Type
说明
这个结构用于GetWindowPlacement和SetWindowPlacement函数以获取或设置窗口的状态及位置信息
字段表
字段 | 类型及说明
Length | Long，这个结构的长度（size），必须是44
flags | Long，以下的两个常数之一
 | WPF_SETMINPOSITION | The ptMinPosition specifies the x,y location of the window when minimized.
 | WPF_RESTORETOMAXIMIZED | The SW_SHOWMINIMIZED constant must be specified in the showCmd parameter. Indicates that the window should be maximized the next time it is restored.
showCmd | Long，Visibility flags
ptMinPosition | POINTAPI，The x,y location of the window when minimized.
ptMaxPosition | POINTAPI，The x,y location of the window location when maximized.
rcNormalPosition | RECT，The position and size of the window when it is restored (normal condition).

Top


XFORM
类型定义
Type XFORM ' 48 Bytes
eM11 As Single
eM12 As Single
eM21 As Single
eM22 As Single
eDx As Single
eDy As Single
End Type
说明
Use to describe a world-space to page-space transformation. Refer to Chapter 7 for a detailed description of this structure.