炫彩WinApi类

package
v0.0.0-...-6402001 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jan 5, 2025 License: MIT Imports: 5 Imported by: 1

Documentation

Overview

Package wapi 封装了windows系统的api.

Index

Constants

View Source
const (
	X常量_空文本  = "\x00"
	X常量_空文本2 = X常量_空文本 + X常量_空文本 // 2个 NullStr
)
View Source
const X常量_滚轮_增量 int16 = 120

X常量_滚轮_增量 一次标准滚轮滚动的增量.

Variables

This section is empty.

Functions

func CallNextHookEx

func CallNextHookEx(hhk uintptr, nCode int32, wParam, lParam uintptr) uintptr

CallNextHookEx 将挂钩信息传递给当前挂钩链中的下一个挂钩过程。挂钩过程可以在处理挂钩信息之前或之后调用此函数.

详情: https://learn.microsoft.com/zh-cn/windows/win32/api/winuser/nf-winuser-callNextHookEx.

hhk: 忽略此参数. 可填0.

nCode: 传递给当前挂钩过程的挂钩代码。下一个挂钩过程使用此代码来确定如何处理挂钩信息.

wParam: 传递给当前挂钩过程的 wParam 值。此参数的含义取决于与当前挂钩链关联的挂钩类型.

lParam: 传递给当前挂钩过程的 lParam 值。此参数的含义取决于与当前挂钩链关联的挂钩类型.

@return: 此值由链中的下一个挂钩过程返回。当前挂钩过程还必须返回此值。返回值的含义取决于挂钩类型。有关详细信息,请参阅各个挂钩过程的说明.

func DispatchMessage

func DispatchMessage(pMsg *X结构_消息) int

DispatchMessage 向窗口过程发送消息。它通常用于发送由 GetMessage 函数检索到的消息.

详情: https://docs.microsoft.com/zh-cn/windows/win32/api/winuser/nf-winuser-DispatchMessageW.

pMsg: 指向包含消息的结构的指针.

@return: 返回值指定窗口过程返回的值。尽管它的含义取决于所发送的消息,但返回值通常会被忽略.

func DragFinish

func DragFinish(hDrop uintptr)

DragFinish 释放系统分配用于将文件名传输到应用程序的内存.

详情: https://docs.microsoft.com/en-us/windows/win32/api/shellapi/nf-shellapi-DragFinish.

hDrop: 句柄.

func GetMessage

func GetMessage(pMsg *X结构_消息, hWnd uintptr, wMsgFilterMin uint32, wMsgFilterMax uint32) int32

GetMessage 从调用线程的消息队列中检索消息。应用程序通常使用返回值来确定是否结束主消息循环并退出程序。该函数分派传入的已发送消息,直到发布的消息可用于检索。 与 GetMessage 不同, PeekMessage 函数在返回之前不会等待消息发布.

详情: https://docs.microsoft.com/zh-cn/windows/win32/api/winuser/nf-winuser-GetMessageW.

pMsg: 指向从线程的消息队列接收消息信息的 MSG 结构的指针.

hWnd: 要检索其消息的窗口的句柄。窗口必须属于当前线程。如果hWnd为0, GetMessage 检索属于当前线程的任何窗口的消息,以及当前线程的消息队列中hwnd值为0的任何消息(参见 MSG 结构)。因此,如果hWnd为0,则同时处理窗口消息和线程消息。如果hWnd为-1, GetMessage 仅检索当前线程的消息队列中hwnd值为0的消息,即 PostMessage (当hWnd参数为0时)或 PostThreadMessage 发布的线程消息.

wMsgFilterMin: 要检索的最低消息值的整数值。使用WM_KEYFIRST (0x0100) 指定第一条键盘消息或WM_MOUSEFIRST (0x0200) 指定第一条鼠标消息.

wMsgFilterMax: 要检索的最高消息值的整数值。使用WM_KEYLAST指定最后一个键盘消息或WM_MOUSELAST指定最后一个鼠标消息.

@return: 如果函数检索到 WM_QUIT 以外的消息,则返回值非零。如果函数检索到 WM_QUIT 消息,则返回值为零。如果有错误,返回值为-1.

func RegisterWindowMessageW

func RegisterWindowMessageW(lpString string) int

RegisterWindowMessageW 定义保证在整个系统中唯一的新窗口消息。 发送或发布消息时可以使用消息值.

详情: https://learn.microsoft.com/zh-cn/windows/win32/api/winuser/nf-winuser-RegisterWindowMessageW.

lpString: 要注册的消息.

@return: 如果成功注册消息,则返回值是范围0xC000到0xFFFF的消息标识符. 如果函数失败,则返回值为零.

func SetWindowsHookExW

func SetWindowsHookExW(idHook WH_, lpfn uintptr, hmod uintptr, dwThreadId uint32) uintptr

SetWindowsHookExW 将应用程序定义的挂钩过程安装到挂钩链中。 需要安装挂钩过程来监视系统的某些类型的事件。 这些事件与特定线程或与调用线程位于同一桌面中的所有线程相关联.

详情: https://learn.microsoft.com/zh-cn/windows/win32/api/winuser/nf-winuser-setWindowsHookExW.

idHook: 要安装的挂钩过程的类型, wapi.WH_ .

lpfn: 回调函数指针, 使用 syscall.NewCallback()生成. 如果 dwThreadId 参数为零或指定由其他进程创建的线程的标识符,则 lpfn 参数必须指向 DLL 中的挂钩过程。否则,lpfn 可以指向与当前进程关联的代码中的挂钩过程.

hmod: DLL 的句柄,包含 lpfn 参数指向的挂钩过程。如果 dwThreadId 参数指定当前进程创建的线程,并且挂钩过程位于与当前进程关联的代码中,则必须将 hMod 参数设置为 0.

dwThreadId: 要与之关联的挂钩过程的线程的标识符。对于桌面应用,如果此参数为零,则挂钩过程与调用线程在同一桌面中运行的所有现有线程相关联.

@return: 如果成功,则返回挂钩过程的句柄; 如果失败,则返回 0.

func TranslateMessage

func TranslateMessage(pMsg *X结构_消息) bool

TranslateMessage 将虚拟键消息转换为字符消息。字符消息被发布到调用线程的消息队列中,以便在线程下次调用 GetMessage 或 PeekMessage 函数时读取.

详情: https://docs.microsoft.com/zh-cn/windows/win32/api/winuser/nf-winuser-TranslateMessage.

pMsg: 一个指向 MSG 结构的指针,该结构包含使用 GetMessage 或 PeekMessage 函数从调用线程的消息队列中检索到的消息信息.

func UnhookWindowsHookEx

func UnhookWindowsHookEx(hhk uintptr) bool

UnhookWindowsHookEx 删除 SetWindowsHookExW 函数安装在挂钩链中的挂钩过程.

详情: https://learn.microsoft.com/zh-cn/windows/win32/api/winuser/nf-winuser-unhookWindowsHookEx.

hhk: 要移除的挂钩的句柄。此参数是由先前调用 SetWindowsHookExW 获取的挂钩句柄.

func X全局内存分配

func X全局内存分配(内存分配属性 GMEM_, 字节数 uint) uintptr

X全局内存分配 从堆中分配指定数量的字节.

详情: https://docs.microsoft.com/zh-cn/windows/win32/api/winbase/nf-winbase-X全局内存分配.

uFlags: 内存分配属性。如果指定为零,则默认为 GMEM_Fixed. 该参数可以是以下值中的一个或多个: wapi.GMEM_ .

dwBytes: 要分配的字节数。如果此参数为0并且uFlags参数指定 GMEM_Moveable ,则该函数返回标记为已丢弃的内存对象的句柄.

@return: 如果函数成功,则返回值是新分配的内存对象的句柄. 如果函数失败,则返回值为0.

func X全局内存对象关闭

func X全局内存对象关闭(内存对象句柄 uintptr) uintptr

X全局内存对象关闭 释放指定的全局内存对象并使其句柄无效.

详情: https://docs.microsoft.com/zh-cn/windows/win32/api/winbase/nf-winbase-X全局内存对象关闭.

hMem: 全局内存对象的句柄. 此句柄由 GlobalAlloc 或 GlobalReAlloc 函数返回. 释放使用 LocalAlloc 分配的内存是不安全的.

@return: 如果函数成功, 则返回值为0. 如果函数失败, 则返回值等于全局内存对象的句柄.

func X全局内存对象取大小

func X全局内存对象取大小(内存对象句柄 uintptr) uint

X全局内存对象取大小 检索指定全局内存对象的当前大小,以字节为单位.

  • 内存块的大小可能大于分配内存时请求的大小. 要验证指定对象的内存块是否未被丢弃, 请在调用 X全局内存对象取大小 之前使用 GlobalFlags 函数.

详情: https://docs.microsoft.com/zh-cn/windows/win32/api/winbase/nf-winbase-X全局内存对象取大小.

hMem: 全局内存对象的句柄。此句柄由 GlobalAlloc 或 GlobalReAlloc 函数返回.

@return: 如果函数成功,则返回值是指定全局内存对象的大小,以字节为单位. 如果指定的句柄无效或对象已被丢弃,则返回值为0.

func X全局内存对象解锁

func X全局内存对象解锁(内存对象句柄 uintptr) bool

X全局内存对象解锁 减少与使用 GMEM_Moveable 分配的内存对象关联的锁计数。此函数对使用 GMEM_Fixed 分配的内存对象没有影响.

详情: https://docs.microsoft.com/zh-cn/windows/win32/api/winbase/nf-winbase-X全局内存对象解锁.

hMem: 全局内存对象的句柄。此句柄由 GlobalAlloc 或 GlobalReAlloc 函数返回.

func X全局内存对象锁定

func X全局内存对象锁定(内存对象句柄 uintptr) uintptr

X全局内存对象锁定 锁定一个全局内存对象并返回一个指向对象内存块第一个字节的指针.

详情: https://docs.microsoft.com/zh-cn/windows/win32/api/winbase/nf-winbase-X全局内存对象锁定.

hMem: 全局内存对象的句柄。此句柄由 GlobalAlloc 或 GlobalReAlloc 函数返回.

@return: 如果函数成功,则返回值是指向内存块第一个字节的指针. 如果函数失败,则返回值为0.

func X关闭内核对象

func X关闭内核对象(对象句柄 uintptr) bool

X关闭内核对象 关闭一个内核对象.

详情: https://learn.microsoft.com/zh-cn/windows/win32/api/handleapi/nf-handleapi-closehandle.

handle: 对象句柄.

@return: int

func X关闭剪辑版

func X关闭剪辑版() bool

X关闭剪辑版 关闭剪贴板.

  • 当窗口完成检查或更改剪贴板时,通过调用 X关闭剪辑版 关闭剪贴板。这使其他窗口能够访问剪贴板.

详情: https://docs.microsoft.com/zh-cn/windows/win32/api/winuser/nf-winuser-X关闭剪辑版.

func X内存复制

func X内存复制(目标内存块指针 uintptr, 源内存块指针 uintptr, 字节数 uint)

X内存复制 将源内存块的内容复制到目标内存块,并支持重叠的源内存块和目标内存块.

详情: https://docs.microsoft.com/zh-cn/windows/win32/devnotes/rtlmovememory.

Destination: 指向要复制字节的目标内存块的指针.

Source: 指向要复制字节的源内存块的指针.

Length: 从源复制到目标中的字节数.

func X创建保存对话框

func X创建保存对话框(选项结构指针 *X结构_文件对话框信息) bool

X创建保存对话框 创建一个保存对话框,让用户指定要保存的文件的驱动器、目录和名称.

详情: https://docs.microsoft.com/zh-cn/windows/win32/api/commdlg/nf-commdlg-X创建保存对话框.

unnamedParam1: 指向包含用于初始化对话框的信息的 wapi.OpenFileNameW 结构的指针。当函数返回时,此结构包含有关用户文件选择的信息.

func X创建图标并按资源

func X创建图标并按资源(presbits uintptr, dwResSize uint32, fIcon bool, dwVer uint32) (uintptr, error)

X创建图标并按资源 从描述图标的资源位创建图标或光标。若要指定所需的高度或宽度,请使用 CreateIconFromResourceEx 函数.

  • 使用完图标后,请使用 DestroyIcon 函数销毁它.

详见: https://learn.microsoft.com/zh-cn/windows/win32/api/winuser/nf-winuser-createiconfromresource.

presbits: 包含图标或游标资源位的 DWORD 对齐缓冲区指针。通常通过调用 LookupIconIdFromDirectory、 LookupIconIdFromDirectoryEx 和 LoadResource 函数来加载这些位.

dwResSize: 参数指向的位集的大小(以字节为单位).

fIcon: 指示是要创建图标还是游标。 如果此参数为 TRUE,则创建图标。 如果为 FALSE,则创建游标。LOCALHEADER 结构定义游标热点,是从游标资源位读取的第一个数据.

dwVer: presbits 参数指向的资源位的图标或光标格式的版本号。 该值必须大于或等于 0x00020000 且小于或等于 0x00030000。 此参数通常设置为 0x00030000.

@return: HICON句柄.

func X创建打开对话框

func X创建打开对话框(选项结构指针 *X结构_文件对话框信息) bool

X创建打开对话框 创建一个打开对话框,让用户指定要打开的文件或文件集的驱动器、目录和名称.

详情: https://docs.microsoft.com/zh-cn/windows/win32/api/commdlg/nf-commdlg-getopenfilenamew.

unnamedParam1: 指向包含用于初始化对话框的信息的 wapi.OpenFileNameW 结构的指针。当函数返回时,此结构包含有关用户文件选择的信息.

func X创建颜色对话框

func X创建颜色对话框(选项结构指针 *X结构_颜色选择框) bool

X创建颜色对话框 创建一个颜色对话框,使用户能够选择一种颜色.

详情: https://docs.microsoft.com/zh-cn/previous-versions/windows/desktop/legacy/ms646912(v=vs.85).

lpcc: 指向 wapi.ChooseColor 结构的指针,该结构包含用于初始化对话框的信息。当函数返回时,此结构包含有关用户颜色选择的信息.

func X判断剪贴板内容格式

func X判断剪贴板内容格式(格式 X标准剪贴板格式) bool

X判断剪贴板内容格式 确定剪贴板是否包含指定格式的数据.

详情: https://docs.microsoft.com/zh-cn/windows/win32/api/winuser/nf-winuser-X判断剪贴板内容格式.

uFormat: 标准或注册的剪贴板格式, wapi.CF_ .

func X加载图像W

func X加载图像W(模块句柄 uintptr, 名称 string, 类型 IMAGE_, 宽度, cy int32, fuLoad LR_) uintptr

X加载图像W 加载图标、光标、动画光标或位图.

详情: https://learn.microsoft.com/zh-cn/windows/win32/api/winuser/nf-winuser-loadimagew.

hInst: 包含要加载的图像的 DLL 或可执行文件 (.exe) 模块的句柄。 有关详细信息,请参阅 GetModuleHandle。若要 (图标、光标或位图文件) 加载预定义图像或独立资源,请将此参数设置为0.

name: 要加载的图像。如果 hInst 参数为非0且 fuLoad 参数省略 LR_LOADFROMFILE, 则 name 指定 hInst 模块中的图像资源。如果要按名称从模块加载图像资源, 则 name 参数是指向包含映像资源名称的字符串.

Type: 要加载的图像的类型。 wapi.IMAGE_ .

cx: 图标或光标的宽度(以像素为单位)。 如果此参数为零且 fuLoad 参数 为 LR_DEFAULTSIZE,则函数使用 SM_CXICON 或 SM_CXCURSOR 系统指标值来设置宽度。 如果此参数为零且未使用 LR_DEFAULTSIZE ,则函数使用实际资源宽度.

cy: 图标或光标的高度(以像素为单位)。 如果此参数为零且 fuLoad 参数 为 LR_DEFAULTSIZE,则函数使用 SM_CYICON 或 SM_CYCURSOR 系统指标值来设置高度。 如果此参数为零且未使用 LR_DEFAULTSIZE ,则函数使用实际资源高度.

fuLoad: 此参数可使用以下一个或多个值: wapi.LR_ .

@return: 返回HICON句柄.

func X发送窗口消息

func X发送窗口消息(窗口句柄 uintptr, 消息标识符 int32, 参数1, 参数2 uintptr) int

X发送窗口消息 将指定的消息发送到一个或多个窗口。SendMessage函数调用指定窗口的窗口过程,直到窗口过程处理完消息才返回.

详情: https://docs.microsoft.com/zh-cn/windows/win32/api/winuser/nf-winuser-X发送窗口消息.

hWnd: 窗口句柄,其窗口过程将接收消息。如果该参数为 HWND_BROADCAST ((HWND)0xffff),则将消息发送到系统中的所有顶层窗口,包括禁用或不可见的无主窗口、重叠窗口和弹出窗口;但消息不会发送到子窗口.

Msg: 要发送的消息。有关系统提供的消息的列表,请参阅: https://docs.microsoft.com/en-us/windows/win32/winmsg/about-messages-and-message-queues.

wParam: 其他特定于消息的信息.

lParam: 其他特定于消息的信息.

@return: 返回值指定消息处理的结果;这取决于发送的消息.

func X取剪贴板指定格式内容

func X取剪贴板指定格式内容(格式 X标准剪贴板格式) uintptr

X取剪贴板指定格式内容 从剪贴板中检索指定格式的数据。剪贴板必须先前已打开.

详情: https://docs.microsoft.com/zh-cn/windows/win32/api/winuser/nf-winuser-X取剪贴板指定格式内容.

uFormat: 剪贴板格式, wapi.CF_ .

@return: 如果函数成功,则返回值是指定格式的剪贴板对象的句柄. 如果函数失败,则返回值为0.

func X取已加载模块句柄

func X取已加载模块句柄(模块名称 string) uintptr

X取已加载模块句柄 检索指定模块的模块句柄。 模块必须已由调用进程加载.

详情: https://learn.microsoft.com/zh-cn/windows/win32/api/libloaderapi/nf-libloaderapi-getmodulehandlew.

lpModuleName: 加载的模块的名称 (.dll 或 .exe 文件). 如果省略文件扩展名,则会追加默认库扩展名 .dll。 文件名字符串可以包含尾随点字符 (.) ,以指示模块名称没有扩展名。 字符串不必指定路径。 指定路径时,请务必使用反斜杠 (\) ,而不是使用 /) (正斜杠。 名称 (大小写独立比较,) 当前映射到调用进程的地址空间的模块的名称。如果此参数为空, 则 X取已加载模块句柄 返回用于创建调用进程 (.exe 文件) 的文件的句柄.

func X取拖放文件路径

func X取拖放文件路径(hDrop uintptr, iFile uint32, lpszFile *string, cch uint32) int

X取拖放文件路径 检索由成功的拖放操作产生的文件路径.

详情: https://docs.microsoft.com/en-us/windows/win32/api/shellapi/nf-shellapi-X取拖放文件路径.

hDrop: 句柄.

iFile: 文件索引.

lpszFile: 返回的文件路径.

cch: 接收的文件路径的字符数, 通常为260.

@return: 返回文件路径的字符数.

func X取拖放文件鼠标位置

func X取拖放文件鼠标位置(句柄 uintptr, 返回坐标 *xc.X结构_坐标) bool

X取拖放文件鼠标位置 检索在拖放文件时鼠标指针的位置.

详情: https://docs.microsoft.com/en-us/windows/win32/api/shellapi/nf-shellapi-X取拖放文件鼠标位置.

hDrop: 句柄.

ppt: 接收鼠标指针的坐标.

@return: 如果拖放发生在窗口的客户区, 返回true;否则返回false.

func X取文件夹指针实际路径

func X取文件夹指针实际路径(文件夹指针 uintptr, 返回文件路径 *string) bool

X取文件夹指针实际路径 将 SHBrowseForFolderW 的返回值转换为文件路径.

详情: https://docs.microsoft.com/zh-cn/windows/win32/api/shlobj_core/nf-shlobj_core-shgetpathfromidlistw.

pidl: SHBrowseForFolderW 的返回值.

pszPath: 返回的文件路径.

func X取最后一个错误

func X取最后一个错误() int32

X取最后一个错误 检索调用线程的最后一个错误代码值。最后一个错误代码是在每个线程的基础上维护的。多个线程不会覆盖彼此的最后一个错误代码.

详情: https://docs.microsoft.com/zh-cn/windows/win32/api/winbase/nf-winbase-X取最后一个错误.

@return: 返回值是调用线程的最后一个错误代码.

func X取桌面窗口句柄

func X取桌面窗口句柄() uintptr

X取桌面窗口句柄 获取桌面窗口的句柄.

详情: https://docs.microsoft.com/zh-cn/windows/win32/api/winuser/nf-winuser-X取桌面窗口句柄.

func X取窗口标题

func X取窗口标题(窗口或控件句柄 uintptr, 返回文本 *string, 最大字符数 int) int

X取窗口标题 将指定窗口标题栏(如果有)的文本复制到缓冲区中。如果指定的窗口是控件,则复制控件的文本。但是无法检索另一个应用程序中控件的文本.

详情: https://docs.microsoft.com/zh-cn/windows/win32/api/winuser/nf-winuser-X取窗口标题.

hWnd: 包含文本的窗口或控件的句柄.

lpString: 接收文本.

nMaxCount: 复制到缓冲区的最大字符数,包括空字符。如果文本超出此限制,则将其截断.

@return: 如果函数成功,则返回值是复制字符串的长度(以字符为单位),不包括终止空字符。如果窗口没有标题栏或文本,如果标题栏为空,或者窗口或控制句柄无效,则返回值为零.

func X取窗口标题长度

func X取窗口标题长度(窗口或控件句柄 uintptr) int

X取窗口标题长度 检索指定窗口标题栏文本的长度(以字符为单位)(如果窗口有标题栏)。如果指定的窗口是控件,则该函数检索控件内文本的长度。但是无法检索另一个应用程序中编辑控件的文本长度.

详情: https://docs.microsoft.com/zh-cn/windows/win32/api/winuser/nf-winuser-X取窗口标题长度.

hWnd: 窗口或控件的句柄.

@return: 如果成功,则返回值是文本的长度(以字符为单位)。在某些情况下,此值可能大于文本的长度。如果窗口没有文本,则返回值为零.

func X取顶级窗口句柄

func X取顶级窗口句柄(窗口类名, 窗口标题 string) uintptr

X取顶级窗口句柄 检索顶级窗口的句柄,该窗口的类名称和窗口名称与指定的字符串匹配。 此函数不搜索子窗口。 此函数不执行区分大小写的搜索.

  • 如果 lpWindowName 参数不为空, X取顶级窗口句柄 将调用 GetWindowTextW 函数以检索窗口名称进行比较。 有关可能出现的潜在问题的说明,请参阅 GetWindowTextW 的备注.

详情: https://learn.microsoft.com/zh-cn/windows/win32/api/winuser/nf-winuser-X取顶级窗口句柄.

lpClassName: 窗口类名, 可为空.

lpWindowName: 窗口名称(窗口的标题), 可为空.

@return: 返回窗口句柄.

func X取鼠标光标位置

func X取鼠标光标位置(坐标指针 *X坐标) bool

X取鼠标光标位置 检索鼠标光标的位置,以屏幕坐标表示.

详情: https://docs.microsoft.com/zh-cn/windows/win32/api/winuser/nf-winuser-getcursorpos.

lpPoint: 指向接收光标屏幕坐标的 wapi.POINT 结构的指针.

func X复制到缓冲区

func X复制到缓冲区(文本指针1, 文本指针2 uintptr) uintptr

X复制到缓冲区 将字符串复制到缓冲区.

详情: https://docs.microsoft.com/zh-cn/windows/win32/api/winbase/nf-winbase-X复制到缓冲区.

lpString1: 用于接收 lpString2 参数指向的字符串内容的缓冲区. 缓冲区必须足够大以包含字符串,包括终止空字符.

lpString2: 要复制的以 NullStr 结尾的字符串.

@return: 如果函数成功,则返回值是指向缓冲区的指针. 如果函数失败,则返回值为0, 并且lpString1可能不是以 NullStr 结尾的.

func X客户区坐标转换屏幕坐标

func X客户区坐标转换屏幕坐标(窗口句柄 uintptr, 客户区坐标指针 *X坐标) bool

X客户区坐标转换屏幕坐标 将指定点的客户区坐标转换为屏幕坐标.

详情: https://docs.microsoft.com/zh-cn/windows/win32/api/winuser/nf-winuser-X客户区坐标转换屏幕坐标.

hWnd: 窗口真实句柄.

lpPoint: wapi.POINT 指针. 如果函数成功,则将新的屏幕坐标复制到此结构中.

func X延时

func X延时(毫秒 uint32)

X延时 暂停当前线程的执行,直到超时间隔结束。若要进入可警报等待状态,请使用 SleepEx 函数.

详情: https://learn.microsoft.com/zh-cn/windows/win32/api/synchapi/nf-synchapi-sleep.

ms: 毫秒.

func X延时EX

func X延时EX(毫秒 uint32, bAlertable bool) uint32

X延时EX 挂起当前线程,直到满足指定的条件。 发生以下情况之一时,将继续执行:

  • 调用 I/O 完成回调函数.
  • 异步过程调用 (APC) 排队到线程.
  • 超时间隔已过.

详情: https://learn.microsoft.com/zh-cn/windows/win32/api/synchapi/nf-synchapi-sleepex.

dwMilliseconds: 暂停执行的时间间隔(以毫秒为单位).

bAlertable: 如果此参数为 FALSE,则函数在超时期限过后才会返回。 如果发生 I/O 完成回调,该函数不会立即返回,并且不会执行 I/O 完成函数。 如果 APC 已排队到线程,该函数不会立即返回,并且不会执行 APC 函数。如果 参数为 TRUE,并且调用此函数的线程与调用扩展 I/O 函数 (ReadFileEx 或 WriteFileEx) 的线程相同,则当超时期限已过或发生 I/O 完成回调函数时,函数将返回 。 如果发生 I/O 完成回调,则调用 I/O 完成函数。 如果将 APC 排队到 queueUserAPC) (线程,则当超时期限已过或调用 APC 函数时,函数将返回 .

@return: 如果指定的时间间隔过期,则返回值为零。如果函数由于一个或多个 I/O 完成回调函数而返回,则返回值WAIT_IO_COMPLETION。 仅当 bAlertable 为 TRUE,并且调用 X延时EX 函数的线程与调用扩展 I/O 函数的线程相同时,才会发生这种情况.

func X打开剪辑版

func X打开剪辑版(父窗口句柄 uintptr) bool

X打开剪辑版 打开剪贴板进行检查并防止其他应用程序修改剪贴板内容.

  • 如果另一个窗口打开了剪贴板,则 X打开剪辑版 会失败.
  • 应用程序应在每次成功调用 X打开剪辑版 后调用 CloseClipboard 函数.
  • 除非调用 EmptyClipboard 函数,否则由hWndNewOwner参数标识的窗口不会成为剪贴板所有者.
  • 如果应用程序在 hwnd 设置为0的情况下调用 X打开剪辑版, EmptyClipboard 会将剪贴板所有者设置为NULL;这会导致 SetClipboardData 失败.

详情: https://docs.microsoft.com/zh-cn/windows/win32/api/winuser/nf-winuser-X打开剪辑版.

hWnd: 要与打开的剪贴板关联的窗口句柄。如果此参数为0,则打开的剪贴板与当前任务相关联.

func X打开文件夹对话框

func X打开文件夹对话框(对话框选项 *X结构_对话框选项) uintptr

X打开文件夹对话框 显示一个对话框,使用户能够选择文件夹.

详情: https://docs.microsoft.com/zh-cn/windows/win32/api/shlobj_core/nf-shlobj_core-shbrowseforfolderw.

browseInfo: 指向 wapi.BrowseInfoW 结构的指针,该结构包含用于显示对话框的信息.

@return: 返回一个 PIDL,它指定所选文件夹相对于命名空间根的位置。如果用户在对话框中选择取消按钮,则返回值为0。返回的 PIDL 可能是文件夹快捷方式而不是文件夹.

func X执行外部命令

func X执行外部命令(父窗口句柄 uintptr, 操作类型, 文件名, 参数, 默认完整路径 string, 显示Cmd xcc.X窗口显示方式) int

X执行外部命令 对指定文件执行操作.

详情: https://docs.microsoft.com/en-us/windows/win32/api/shellapi/nf-shellapi-shellexecutew.

hwnd: 用于显示 UI 或错误消息的父窗口的句柄。如果操作与窗口无关,则此值可以为0.

lpOperation: 填“open”则打开lpFlie文档.

lpFile: 想用关联的程序打印或打开的一个程序名或文件名.

lpParameters: 如果lpFile是一个可执行文件,则这个字串包含了传递给执行程序的参数.

lpDirectory: 想使用的默认路径完整路径.

nShowCmd: 定义了如何显示启动程序的常数值, xcc.SW_.

@return: 如果函数成功,则返回大于32的值。如果函数失败,则返回指示失败原因的错误值.

func X投递窗口消息

func X投递窗口消息(窗口句柄 uintptr, 消息标识符 int32, 参数1, 参数2 uintptr) bool

X投递窗口消息 在与创建指定窗口的线程关联的消息队列中放置(发布)一条消息,并在不等待线程处理消息的情况下返回.

详情: https://docs.microsoft.com/zh-cn/windows/win32/api/winuser/nf-winuser-postmessagew.

hWnd: 窗口句柄,其窗口过程将接收消息。如果该参数为 HWND_BROADCAST ((HWND)0xffff),则将消息发送到系统中的所有顶层窗口,包括禁用或不可见的无主窗口、重叠窗口和弹出窗口;但消息不会发送到子窗口.

Msg: 要发送的消息。有关系统提供的消息的列表,请参阅: https://docs.microsoft.com/en-us/windows/win32/winmsg/about-messages-and-message-queues.

wParam: 其他特定于消息的信息.

lParam: 其他特定于消息的信息.

func X模糊搜索子窗口

func X模糊搜索子窗口(窗口句柄, 子窗口句柄 uintptr, 类名, 窗口标题 string) uintptr

X模糊搜索子窗口 检索类名称和窗口名称与指定字符串匹配的窗口的句柄. 该函数搜索子窗口,从指定子窗口后面的那个开始. 此函数不执行区分大小写的搜索.

详情: https://docs.microsoft.com/zh-cn/windows/win32/api/winuser/nf-winuser-X模糊搜索子窗口.

hWndParent: 要搜索其子窗口的父窗口的句柄. 如果hwndParent为0,该函数使用桌面窗口作为父窗口. 该函数在作为桌面子窗口的窗口中进行搜索.

hWndChildAfter: 子窗口的句柄。搜索从 Z 顺序中的下一个子窗口开始。子窗口必须是hwndParent的直接子窗口,而不仅仅是后代窗口。 如果hwndChildAfter为0,则搜索从hwndParent的第一个子窗口开始。 请注意,如果hwndParent和hwndChildAfter都是0,则该函数将搜索所有顶级和仅消息窗口.

lpszClass: 窗口类名, 可空.

lpszWindow: 窗口名称(窗口的标题), 可空.

func X注册键盘热键

func X注册键盘热键(窗口句柄 uintptr, 热键标识符 int32, 组合键, 热键代码 uint32) bool

X注册键盘热键 注册系统范围的热键.

详情: https://docs.microsoft.com/zh-cn/windows/win32/api/winuser/nf-winuser-registerhotkey.

hWnd: 真实窗口句柄。将接收由热键生成的 WM_HOTKEY 消息的窗口句柄。如果此参数为0,则 WM_HOTKEY 消息将发布到调用线程的消息队列中,并且必须在消息循环中进行处理.

id: 热键的标识符。如果hWnd参数为0,则热键与当前线程相关联,而不是与特定窗口相关联。如果已存在具有相同hWnd和id参数的热键,请参阅备注了解所采取的操作.

fsModifiers: 为了生成 WM_HOTKEY 消息,必须与vk参数指定的键组合按下的键 。fsModifiers参数可以是以下值的组合: xcc.Mod_ .

vk: 热键的虚拟键代码: xcc.VK_ . 请参阅虚拟键码: https://docs.microsoft.com/zh-cn/windows/win32/inputdev/virtual-key-codes.

func X清空剪辑版

func X清空剪辑版() bool

X清空剪辑版 清空剪贴板并释放剪贴板中数据的句柄。然后该函数将剪贴板的所有权分配给当前打开剪贴板的窗口.

  • 在调用 X清空剪辑版 之前,应用程序必须使用 OpenClipboard 函数打开剪贴板.
  • 如果应用程序在打开剪贴板时指定了0窗口句柄,则 X清空剪辑版 会成功,但会将剪贴板所有者设置为NULL。请注意,这会导致 SetClipboardData 失败.

详情: https://docs.microsoft.com/zh-cn/windows/win32/api/winuser/nf-winuser-X清空剪辑版.

func X激活窗口

func X激活窗口(窗口句柄 uintptr) bool

X激活窗口 将创建指定窗口的线程带到前台并激活窗口. 键盘输入被定向到窗口, 并且为用户改变了各种视觉提示. 系统为创建前台窗口的线程分配比其他线程稍高的优先级.

详情: https://docs.microsoft.com/zh-cn/windows/win32/api/winuser/nf-winuser-X激活窗口.

hWnd: 应激活并置于前台的窗口句柄.

func X窗口句柄是否有效

func X窗口句柄是否有效(窗口的句柄 uintptr) bool

X窗口句柄是否有效 判断一个窗口句柄是否有效.

  • 线程不应将 X窗口句柄是否有效 用于未创建的窗口,因为调用此函数后可能会销毁该窗口。 此外,由于窗口句柄被回收,句柄甚至可以指向其他窗口.

详情: https://learn.microsoft.com/zh-cn/windows/win32/api/winuser/nf-winuser-iswindow.

hWnd: 要测试的窗口的句柄.

func X结束

func X结束(结束代码 int32)

X结束 向系统指示线程已请求终止(退出)。它通常用于响应 WM_DESTROY 消息.

详情: https://docs.microsoft.com/zh-cn/windows/win32/api/winuser/nf-winuser-X结束.

nExitCode: 应用程序退出代码。该值用作 WM_QUIT 消息的wParam参数.

func X设置剪贴板数据

func X设置剪贴板数据(格式 X标准剪贴板格式, 指定格式数据句柄 uintptr) uintptr

X设置剪贴板数据 以指定的剪贴板格式将数据放在剪贴板上。该窗口必须是当前剪贴板所有者,并且应用程序必须调用 OpenClipboard 函数.

详情: https://docs.microsoft.com/zh-cn/windows/win32/api/winuser/nf-winuser-setclipboarddata.

uFormat: 标准或注册的剪贴板格式, wapi.CF_ .

hMem: 指定格式的数据的句柄。该参数可以为0,表示窗口根据请求提供指定剪贴板格式的数据(渲染格式).

@return: 如果函数成功,则返回值是数据的句柄. 如果函数失败,则返回值为0.

func X设置窗口位置

func X设置窗口位置(窗口句柄 uintptr, 置顶方式 HWND_, 新x坐标, 新y坐标, 新宽度, 新高度 int32, 大小和定位标志 SWP_) bool

X设置窗口位置 改变一个子窗口,弹出式窗口或顶层窗口的尺寸,位置和Z序。子窗口,弹出式窗口,及顶层窗口根据它们在屏幕上出现的顺序排序、顶层窗口设置的级别最高,并且被设置为Z序的第一个窗口.

详情: https://docs.microsoft.com/zh-cn/windows/win32/api/winuser/nf-winuser-X设置窗口位置.

hWnd: 欲定位的窗口句柄.

hWndInsertAfter: 在Z序中位于定位窗口之前的窗口句柄. 此参数必须是窗口句柄或以下值之一: wapi.HWND_.

x: 窗口新的x坐标。如hwnd是一个子窗口,则x用父窗口的客户区坐标表示.

y: 窗口新的y坐标。如hwnd是一个子窗口,则y用父窗口的客户区坐标表示.

cx: 指定新的窗口宽度.

cy: 指定新的窗口高度.

wFlags: 窗口大小和定位的标志. 该参数可以是以下值的组合: wapi.SWP_.

func X释放图标

func X释放图标(图标句柄 uintptr) bool

X释放图标 销毁图标并释放图标占用的任何内存.

  • 只需为使用以下函数创建的图标和游标调用 X释放图标 : CreateIconFromResourceEx (如果调用时没有 LR_SHARED 标志) 、 CreateIconIndirect 和 CopyIcon。 请勿使用此函数销毁共享图标。 只要从中加载共享图标的模块保留在内存中,共享图标就有效.

详情: https://learn.microsoft.com/zh-cn/windows/win32/api/winuser/nf-winuser-destroyicon.

hIcon: 要销毁的图标的句柄。 图标不得处于使用中.

func X释放键盘热键

func X释放键盘热键(窗口句柄 uintptr, 热键标识符 int32) bool

X释放键盘热键 释放先前注册的热键.

详情: https://docs.microsoft.com/zh-cn/windows/win32/api/winuser/nf-winuser-unregisterHotKey.

hWnd: 真实窗口句柄。与要释放的热键关联的窗口句柄。如果热键与窗口无关,则此参数应为0.

id: 要释放的热键的标识符.

Types

type BIF_

type BIF_ uint32

BIF_ 是指定对话框选项的标志.

const (
	X常量_对话框选项_RETURNONLYFSDIRS BIF_ = 0x00000001 // 仅返回文件系统目录。如果用户选择不属于文件系统的文件夹,则“确定”按钮将变灰。注意对于“\\server”项目以及“\\server\share”和目录项目,“确定”按钮仍处于启用  状态。但是,如果用户选择“\\server”项,则将 SHBrowseForFolderW 返回的 PIDL 传递给 SHGetPathFromIDListW 将失败.

	X常量_对话框选项_DONTGOBELOWDOMAIN BIF_ = 0x00000002 // 不要在对话框的树视图控件中包含域级别以下的网络文件夹.

	X常量_对话框选项_STATUSTEXT BIF_ = 0x00000004 // 在对话框中包含一个状态区域。回调函数可以通过向对话框发送消息来设置状态文本。指定 BIF_NEWDIALOGSTYLE 时不支持此标志.

	X常量_对话框选项_RETURNFSANCESTORS BIF_ = 0x00000008 // 仅返回文件系统祖先。祖先是命名空间层次结构中根文件夹下的子文件夹。如果用户选择了不属于文件系统的根文件夹的祖先,则“确定”按钮将变灰.

	X常量_对话框选项_EDITBOX BIF_ = 0x00000010 // 在允许用户键入项目名称的浏览对话框中包含一个编辑控件.

	X常量_对话框选项_VALIDATE BIF_ = 0x00000020 // 如果用户在编辑框中输入了无效的名称,浏览对话框将调用应用程序的BrowseCallbackProc并发送BFFM_VALIDATEFAILED消息。如果未指定 BIF_EDITBOX,则忽略此标志.

	X常量_对话框选项_NEWDIALOGSTYLE BIF_ = 0x00000040 // 使用新的用户界面。设置此标志为用户提供了一个可以调整大小的更大对话框。该对话框具有多项新功能,包括:对话框内的拖放功能、重新排序、快捷菜单、新文件夹、删除和其他快捷菜单命令。注意  如果 COM 是通过CoInitializeEx初始化并设置了 COINIT_MULTITHREADED 标志,如果传递了 BIF_NEWDIALOGSTYLE,则 SHBrowseForFolderW 将失败.

	X常量_对话框选项_BROWSEINCLUDEURLS BIF_ = 0x00000080 // 浏览对话框可以显示 URL. BIF_USENEWUI 和 BIF_BROWSEINCLUDEFILES 标志也必须设置。如果未设置这三个标志中的任何一个,浏览器对话框将拒绝 URL。即使设置了这些标志,只有在包含所选项目的文件夹支持 URL 时,浏览对话框才会显示 URL。当调用文件夹的IShellFolder::GetAttributesOf方法来请求所选项目的属性时,文件夹必须设置SFGAO_FOLDER属性标志。否则,浏览对话框将不会显示 URL.

	X常量_对话框选项_USENEWUI = X常量_对话框选项_EDITBOX | X常量_对话框选项_NEWDIALOGSTYLE // 使用新的用户界面,包括一个编辑框。这个标志相当于 BIF_EDITBOX | BIF_NEWDIALOGSTYLE.

	X常量_对话框选项_UAHINT BIF_ = 0x00000100 // 与 BIF_NEWDIALOGSTYLE 结合使用时,会在对话框中添加使用提示来代替编辑框。BIF_EDITBOX 会覆盖此标志.

	X常量_对话框选项_NONEWFOLDERBUTTON BIF_ = 0x00000200 // 不要在浏览对话框中包含新建文件夹按钮.

	X常量_对话框选项_NOTRANSLATETARGETS BIF_ = 0x00000400 // 当所选项目是快捷方式时,返回快捷方式本身的 PIDL 而不是其目标.

	X常量_对话框选项_BROWSEFORCOMPUTER BIF_ = 0x00001000 // 只退回电脑。如果用户选择计算机以外的任何东西,则“确定”按钮将变灰.

	X常量_对话框选项_BROWSEFOPRINTER BIF_ = 0x00002000 // 只允许选择打印机。如果用户选择打印机以外的任何东西,则“确定”按钮将变灰。在 Windows XP 和更高版本的系统中,最佳做法是使用 Windows XP 样式的对话框,将对话框的根设置为Printers and Faxes文件夹 (CSIDL_PRINTERS).

	X常量_对话框选项_BROWSEINCLUDEFILES BIF_ = 0x00004000 // 浏览对话框显示文件和文件夹.

	X常量_对话框选项_SHAREABLE BIF_ = 0x00008000 // 浏览对话框可以显示远程系统上的共享资源。这适用于希望在本地系统上公开远程共享的应用程序。BIF_NEWDIALOGSTYLE 标志也必须设置.

	X常量_对话框选项_BROWSEFILEJUNCTIONS BIF_ = 0x00010000 // Windows 7 及更高版本。允许浏览文件夹连接,例如库或具有 .zip 文件扩展名的压缩文件.
)

type CC_

type CC_ uint32

CC_ 是可用于初始化颜色对话框的位标志.

const (
	X常量_初始化颜色对话框_ANYCOLOR CC_ = 0x00000100 // 使对话框显示一组基本颜色中的所有可用颜色.

	X常量_初始化颜色对话框_ENABLEHOOK CC_ = 0x00000010 // 启用在此结构的 lpfnHook 成员中指定的挂钩过程。此标志仅用于初始化对话框.

	X常量_初始化颜色对话框_ENABLETEMPLATE CC_ = 0x00000020 // hInstance 和 lpTemplateName成员指定一个对话框模板来代替默认模板。此标志仅用于初始化对话框.

	X常量_初始化颜色对话框_ENABLETEMPLATEHANDLE CC_ = 0x00000040 // hInstance 成员标识包含预加载对话框模板的数据块 。如果指定了此标志,系统将忽略 lpTemplateName 成员。此标志仅用于初始化对话框.

	X常量_初始化颜色对话框_FULLOPEN CC_ = 0x00000002 // 使对话框显示允许用户创建自定义颜色的附加控件。如果未设置此标志,用户必须单击定义自定义颜色按钮以显示自定义颜色控件.

	X常量_初始化颜色对话框_PREVENTFULLOPEN CC_ = 0x00000004 // 禁用定义自定义颜色按钮.

	X常量_初始化颜色对话框_RGBINIT CC_ = 0x00000001 // 使对话框使用 rgbResult 成员中指定的颜色作为初始颜色选择.

	X常量_初始化颜色对话框_SHOWHELP CC_ = 0x00000008 // 使对话框显示“帮助”按钮。 hwndOwner 成员必须指定窗口以接收当用户单击帮助按钮 时对话框发送的 HELPMSGSTRING 注册消息.

	X常量_初始化颜色对话框_SOLIDCOLOR CC_ = 0x00000080 // 使对话框仅显示基本颜色集中的纯色.
)

type GMEM_

type GMEM_ uint32

GMEM_ 内存分配属性.

const (
	X常量_内存分配属性_GHND          GMEM_ = 0x0042 // 结合 GMEM_Moveable 和 GMEM_ZeroInit
	X常量_内存分配属性_GMEM_Fixed    GMEM_ = 0x0000 // 分配固定内存。返回值是一个指针.
	X常量_内存分配属性_GMEM_Moveable GMEM_ = 0x0002 // 分配可移动内存。内存块永远不会在物理内存中移动,但它们可以在默认堆内移动。返回值是内存对象的句柄。要将句柄转换为指针,请使用 GlobalLock 函数。此值不能与 GMEM_Fixed 结合使用.

	X常量_内存分配属性_GMEM_ZeroInit GMEM_ = 0x0040 // 将内存内容初始化为零.
	X常量_内存分配属性_GPTR          GMEM_ = 0x0040 // 结合 GMEM_Fixed 和 GMEM_ZeroInit
)

type HWND_

type HWND_ int
const (
	X常量_窗口置顶_非顶层窗口之上1 HWND_ = -2 // 将窗口置于所有非顶层窗口之上(即在所有顶层窗口之后)。如果窗口已经是非顶层窗口则该标志不起作用.
	X常量_窗口置顶_非顶层窗口之上2 HWND_ = -1 // 将窗口置于所有非顶层窗口之上。即使窗口未被激活, 窗口也将保持顶级位置.
	X常量_窗口置顶_Z序顶部     HWND_ = 0  // 将窗口置于Z序的顶部.
	X常量_窗口置顶_Z序底部     HWND_ = 1  // 将窗口置于Z序的底部。如果参数hWnd标识了一个顶层窗口,则窗口失去顶级位置,并且被置在所有其他窗口的底部.
)

type ID_

type ID_ uint32

ID_ 指示 MessageBoxW 的返回值.

const (
	X常量_对话框按钮_失败       ID_ = 3  // 失败按钮被单击.
	X常量_对话框按钮_取消       ID_ = 2  // 取消按钮被单击.
	X常量_对话框按钮_继续       ID_ = 11 // 继续按钮被单击.
	X常量_对话框按钮_忽略       ID_ = 5  // 忽略按钮被单击.
	X常量_对话框按钮_否        ID_ = 7  // 否按钮被单击.
	X常量_对话框按钮_确定       ID_ = 1  // 确定按钮被单击.
	X常量_对话框按钮_Retry    ID_ = 4  // MB_RetryCancel 和 MB_AbortRetryIgnore 里的重试按钮被单击.
	X常量_对话框按钮_TryAgain ID_ = 10 // MB_CanaelTryContinue 里的重试按钮被单击.
	X常量_对话框按钮_是        ID_ = 6  // 是按钮被单击.
)

func X创建消息框W

func X创建消息框W(父窗口句柄 uintptr, 显示消息, 标题 string, 类型 MB_) ID_

X创建消息框W 显示一个模式对话框,其中包含一个系统图标、一组按钮和一条特定于应用程序的简短消息.

详情: https://docs.microsoft.com/zh-cn/windows/win32/api/winuser/nf-winuser-X创建消息框W.

hWnd: 要创建的消息框的所有者窗口的句柄。如果此参数为0,则消息框没有所有者窗口.

lpText: 要显示的消息。如果字符串由多行组成,您可以在每行之间使用换行符分隔各行.

lpCaption: 对话框标题。如果此参数为空,则默认标题为Error.

uType: 对话框的内容和行为, 是以下值的组合: wapi.MB_.

@return: 如果函数失败,则返回值为0; 成功则返回一个整数,指示用户单击了哪个按钮.

type IMAGE_

type IMAGE_ uint32
const (
	IMAGE_BITMAP IMAGE_ = 0 // 加载位图
	IMAGE_ICON   IMAGE_ = 1 // 加载图标
	IMAGE_CURSOR IMAGE_ = 2 // 加载游标
)

type LR_

type LR_ uint32
const (
	LR_CREATEDIBSECTION LR_ = 0x00002000 // 当 uType 参数指定 IMAGE_BITMAP 时,会导致函数返回 DIB 节位图而不是兼容的位图。 此标志可用于加载位图而不将其映射到显示设备的颜色.
	LR_DEFAULTCOLOR     LR_ = 0          // 默认标志;它不执行任何工作。 它的意思是“不 LR_MONOCHROME ”.
	LR_DEFAULTSIZE      LR_ = 0x00000040 // 如果 cxDesired 或 cyDesired 值设置为零,则使用游标或图标的系统指标值指定的宽度或高度。 如果未指定此标志,并且 cxDesired 和 cyDesired 设置为零,则函数将使用实际资源大小。 如果资源包含多个图像,则 函数使用第一个图像的大小.
	LR_LOADFROMFILE     LR_ = 0x00000010 // 从 名称 (图标、光标或位图文件指定的文件) 加载独立图像.

	// 在颜色表中搜索图像,并将以下灰色底纹替换为相应的三维颜色
	//	- Dk 灰色,RGB (128,128,128) 与 COLOR_3DSHADOW
	//	- 灰色,RGB (192,192,192) ,带 COLOR_3DFACE
	//	- Lt Gray,RGB (223,223,223) 与 COLOR_3DLIGHT
	LR_LOADMAP3DCOLORS LR_ = 0x00001000

	// 检索图像中第一个像素的颜色值,并将颜色表中的相应条目替换为默认窗口颜色 (COLOR_WINDOW) 。 图像中使用该条目的所有像素都将成为默认的窗口颜色。 此值仅适用于具有相应颜色表的图像.
	//
	// 如果要加载颜色深度大于 8bpp 的位图,请不要使用此选项.
	//
	// 如果 fuLoad 同时包含 LR_LOADTRANSPARENT 值和 LR_LOADMAP3DCOLORS 值, LR_LOADTRANSPARENT 优先。 但是,颜色表条目将替换为 COLOR_3DFACE 而不是 COLOR_WINDOW.
	LR_LOADTRANSPARENT LR_ = 0x00000020
	LR_MONOCHROME      LR_ = 0x00000001 // 加载黑白图像.

	// 如果多次加载映像,则共享映像句柄。 如果未设置 LR_SHARED ,则对同一资源的第二次 LoadImageW 调用将再次加载映像并返回不同的句柄.
	//
	// 使用此标志时,系统将在不再需要资源时销毁资源.
	//
	// 对于非标准大小、加载后可能会更改或从文件加载的图像,请勿使用 LR_SHARED .
	//
	// 加载系统图标或光标时,必须使用 LR_SHARED 否则函数将无法加载资源.
	//
	// 无论请求的大小如何,此函数都会查找缓存中具有请求的资源名称的第一个映像.
	LR_SHARED   LR_ = 0x00008000
	LR_VGACOLOR LR_ = 0x00000080 // 使用真正的 VGA 颜色.
)

type LowLevelKeyboardProc

type LowLevelKeyboardProc func(nCode int32, wParam xcc.X窗口事件, lParam *X结构体_键盘输入事件) uintptr

LowLevelKeyboardProc 是一个低级键盘钩子过程,它将接收有关键盘消息的信息.

nCode: 挂钩过程用于确定如何处理消息的代码. 如果 nCode 小于零,则挂钩过程必须将消息传递给 CallNextHookEx 函数,而无需进一步处理,并且应返回 CallNextHookEx 返回的值.

wParam: 键盘消息的标识符. 可以是以下消息之一: xcc.WM_KEYDOWN、xcc.WM_KEYUP、xcc.WM_SYSKEYDOWN 或 xcc.WM_SYSKEYUP.

LPARAM: 指向 KBDLLHOOKSTRUCT 结构的指针.

@return: 如果 nCode 小于零,则挂钩过程必须返回 CallNextHookEx 返回的值. 如果 nCode 大于或等于零,并且挂钩过程未处理消息,强烈建议调用 CallNextHookEx 并返回它返回的值;否则,安装 WH_KEYBOARD_LL 挂钩的其他应用程序将不会收到挂钩通知,因此行为可能不正确. 如果挂钩过程处理了消息,它可能会返回非零值,以防止系统将消息传递给挂钩链的其余部分或目标窗口过程.

type LowLevelMouseProc

type LowLevelMouseProc func(nCode int32, wParam xcc.X窗口事件, lParam *X结构体_鼠标输入事件) uintptr

LowLevelMouseProc 是一个低级鼠标钩子过程,它将接收有关鼠标消息的信息.

nCode: 挂钩过程用于确定如何处理消息的代码. 如果 nCode 小于零,则挂钩过程必须将消息传递给 CallNextHookEx 函数,而无需进一步处理,并且应返回 CallNextHookEx 返回的值.

wParam: 鼠标消息的标识符. 可以是以下消息之一:xcc.WM_LBUTTONDOWN、xcc.WM_LBUTTONUP、xcc.WM_MOUSEMOVE、xcc.WM_MOUSEWHEEL、xcc.WM_RBUTTONDOWN 或 xcc.WM_RBUTTONUP.

LPARAM: 指向 MSLLHOOKSTRUCT 结构的指针.

@return: 如果 nCode 小于零,则挂钩过程必须返回 CallNextHookEx 返回的值. 如果 nCode 大于或等于零,并且挂钩过程未处理消息,强烈建议调用 CallNextHookEx 并返回它返回的值;否则,安装 WH_MOUSE_LL 挂钩的其他应用程序将不会收到挂钩通知,因此行为可能不正确. 如果挂钩过程处理了消息,它可能会返回非零值,以防止系统将消息传递给挂钩链的其余部分或目标窗口过程.

type MB_

type MB_ uint32

MB_ 指示消息框的内容和行为.

const (
	X常量_消息框按钮_失败重试忽略 MB_ = 0x00000002 // 消息框包含三个按钮:失败、重试和忽略.
	X常量_消息框按钮_取消重试继续 MB_ = 0x00000006 // 消息框包含三个按钮:取消、重试、继续。使用此消息框类型而不是 MB_AbortRetryIgnore.
	X常量_消息框按钮_帮助     MB_ = 0x00004000 // 向消息框 添加帮助按钮。当用户单击帮助按钮或按 F1 时,系统会向所有者 发送WM_HELP消息.
	X常量_消息框按钮_确认     MB_ = 0x00000000 // 消息框包含一个按钮:确认。这是默认设置.
	X常量_消息框按钮_确认取消   MB_ = 0x00000001 // 消息框包含两个按钮:确认和取消.
	X常量_消息框按钮_重试取消   MB_ = 0x00000005 // 消息框包含两个按钮:重试和取消.
	X常量_消息框按钮_是与否    MB_ = 0x00000004 // 消息框包含两个按钮:是和否.
	X常量_消息框按钮_是否取消   MB_ = 0x00000003 // 消息框包含三个按钮:是、否和取消.
)
const (
	X常量_消息框图标_感叹号 MB_ = 0x00000030 // 消息框中会出现一个感叹号图标.
	X常量_消息框图标_警告  MB_ = 0x00000030 // 消息框中会出现一个感叹号图标.
	X常量_消息框图标_信息  MB_ = 0x00000040 // 一个由圆圈中的小写字母i组成的图标出现在消息框中.
	X常量_消息框图标_星号  MB_ = 0x00000040 // 一个由圆圈中的小写字母i组成的图标出现在消息框中.
	X常量_消息框图标_问号  MB_ = 0x00000020 // 问号图标出现在消息框中。不再推荐使用问号消息图标,因为它不能清楚地表示特定类型的消息,并且作为问题的消息措辞可能适用于任何消息类型。此外,用户可能会将消息符号问号与帮助信息混淆。因此,请勿在消息框中使用此问号消息符号。系统继续支持它的包含只是为了向后兼容.
	X常量_消息框图标_停止  MB_ = 0x00000010 // 一个停止标志图标出现在消息框中.
	X常量_消息框图标_错误  MB_ = 0x00000010 // 一个停止标志图标出现在消息框中.
	X常量_消息框图标_手   MB_ = 0x00000010 // 一个停止标志图标出现在消息框中.
)
const (
	X常量_消息框默认按钮_第一个 MB_ = 0x00000000 // 第一个按钮是默认按钮. MB_DefButton1 是默认值, 除非指定了 MB_DefButton2, MB_DefButton3 或 MB_DefButton4.
	X常量_消息框默认按钮_第二个 MB_ = 0x00000100 // 第二个按钮是默认按钮.
	X常量_消息框默认按钮_第三个 MB_ = 0x00000200 // 第三个按钮是默认按钮.
	X常量_消息框默认按钮_第四个 MB_ = 0x00000300 // 第四个按钮是默认按钮.
)
const (
	X常量_消息框模式_应用程序模式 MB_ = 0x00000000 // 用户必须先响应消息框,然后才能在hWnd参数标识的窗口中继续工作。但是,用户可以移动到其他线程的窗口并在这些窗口中工作。根据应用程序中窗口的层次结构,用户可能能够移动到线程内的其他窗口。消息框父级的所有子窗口都会自动禁用,但弹出窗口不会。如果未指定 MB_SystemModal 或 MB_TaskModal, 则 MB_ApplModal 是默认值.

	X常量_消息框模式_系统模式 MB_ = 0x00001000 // 与 MB_ApplModal 相同,只是消息框具有 WS_EX_TOPMOST 样式。使用系统模式消息框来通知用户需要立即注意的严重的、具有潜在破坏性的错误(例如,内存不足)。此标志对用户与除与hWnd关联的窗口之外的窗口进行交互的能力没有影响.

	X常量_消息框模式_任务模式 MB_ = 0x00002000 // 与 MB_ApplModal 相同,除了如果hWnd参数为0则禁用所有属于当前线程的顶级窗口。当调用应用程序或库没有可用的窗口句柄但仍需要防止输入到调用线程中的其他窗口而不暂停其他线程时,请使用此标志.
)
const (
	X常量_消息框选项_Default_Desktop_Only MB_ = 0x00020000 // 与交互式窗口站的桌面相同。有关详细信息,请参阅窗口站。 如果当前输入桌面不是默认桌面,MessageBox不会返回,直到用户切换到默认桌面.

	X常量_消息框选项_文本右对齐    MB_ = 0x00080000 // 文本右对齐.
	X常量_消息框选项_从右到左显示文本 MB_ = 0x00100000 // 在希伯来语和阿拉伯语系统上使用从右到左的阅读顺序显示消息和标题文本.
	X常量_消息框选项_设置前台窗口   MB_ = 0x00010000 // 消息框成为前台窗口。在内部,系统为消息框调用 SetForegroundWindow 函数.
	X常量_消息框选项_设置顶窗口    MB_ = 0x00040000 // 消息框是使用 WS_EX_TOPMOST 窗口样式创建的.

	X常量_消息框选项_服务通知 MB_ = 0x00200000 // 调用者是通知用户事件的服务。即使没有用户登录到计算机,该功能也会在当前活动桌面上显示一个消息框。终端服务:如果调用线程具有模拟令牌,则该函数将消息框定向到模拟令牌中指定的会话。如果设置了此标志,则hWnd参数必须为0。这是为了使消息框可以出现在与hWnd对应的桌面以外的桌面上。有关使用此标志的安全注意事项的信息,请参阅交互式服务。特别要注意,此标志可以在锁定的桌面上生成交互式内容,因此只能用于非常有限的一组场景,例如资源耗尽.
)

type Mod_

type Mod_ uint32
const (
	Mod_Alt      Mod_ = 0x0001 // 必须按住任一 ALT 键.
	Mod_Control  Mod_ = 0x0002 // 必须按住任一 CTRL 键.
	Mod_Norepeat Mod_ = 0x4000 // 更改热键行为,以便键盘自动重复不会产生多个热键通知。Windows Vista:  不支持此标志.
	Mod_Shift    Mod_ = 0x0004 // 必须按住任一 SHIFT 键.
	Mod_Win      Mod_ = 0x0008 // 任一 WINDOWS 键被按住。这些键标有 Windows 徽标。涉及 WINDOWS 键的键盘快捷键保留供操作系统使用.
)

type OFN_

type OFN_ uint32

OFN_ 是用于初始化对话框的位标志

const (
	// 文件名列表框允许多选。
	//  - 如果您还设置了 OFN_EXPLORER 标志,则对话框使用资源管理器样式的用户界面;否则,它使用旧式用户界面。
	//  - 如果用户选择了多个文件, lpstrFile 缓冲区会返回当前目录的路径,后跟所选文件的文件名。 nFileOffset 成员是第一个文件名的偏移量,以字节或字符为单位,并且不使用 nFileExtension 成员。
	//  - 对于资源管理器样式的对话框,目录和文件名字符串是 NullStr 分隔的,最后一个文件名后有一个额外的 NullStr 字符。这种格式使 Explorer 样式的对话框能够返回包含空格的长文件名。
	//  - 对于旧式对话框,目录和文件名字符串用空格分隔,函数使用短文件名作为带空格的文件名。您可以使用 FindFirstFile 函数在长文件名和短文件名之间进行转换。
	//  - 如果为旧式对话框指定自定义模板,则文件名列表框的定义必须包含 LBS_EXTENDEDSEL 值.
	X常量_初始化对话框_ALLOWMULTISELECT OFN_ = 0x00000200

	// 说明:
	//  - 如果用户指定的文件不存在,则此标志会导致对话框提示用户授予创建文件的权限。
	//  - 如果用户选择创建文件,对话框关闭并且函数返回指定的名称;否则,对话框保持打开状态。
	//  - 如果将此标志与 OFN_ALLOWMULTISELECT 标志一起使用,则对话框允许用户仅指定一个不存在的文件.
	X常量_初始化对话框_CREATEPROMPT OFN_ = 0x00002000

	X常量_初始化对话框_DONTADDDTORECENT OFN_ = 0x02000000 // 防止系统在包含用户最近使用的文档的文件系统目录中添加指向选定文件的链接。要检索此目录的位置,请使用 CSIDL_RECENT 标志 调用 SHGetSpecialFolderLocation 函数.

	X常量_初始化对话框_ENABLEHOOK OFN_ = 0x00000020 // 启用在 lpfnHook 成员中指定的钩子函数.

	X常量_初始化对话框_ENABLEINCLUDENOTIFY OFN_ = 0x00400000 // 当用户打开文件夹时,使对话框将 CDN_INCLUDEITEM 通知消息发送到您的 OFNHookProc 挂钩过程。该对话框会为新打开的文件夹中的每个项目发送通知。这些消息使您能够控制对话框在文件夹的项目列表中显示的项目.

	X常量_初始化对话框_ENABLESIZING OFN_ = 0x00800000 // 允许使用鼠标或键盘调整资源管理器样式对话框的大小。默认情况下,资源管理器样式的打开和另存为对话框允许调整对话框的大小,无论是否设置了此标志。仅当您提供挂钩过程或自定义模板时,才需要此标志。旧式对话框不允许调整大小.

	// lpTemplateName 成员是指向模块中由 hInstance 成员标识的对话模板资源名称 的指针。
	//  - 如果设置了 OFN_EXPLORER 标志,系统将使用指定的模板创建一个对话框,该对话框是默认资源管理器样式对话框的子对话框。
	//  - 如果未设置 OFN_EXPLORER 标志,则系统使用模板创建旧式对话框,替换默认对话框.
	X常量_初始化对话框_ENABLETEMPLATE OFN_ = 0x00000040

	// hInstance 成员标识包含预加载对话框模板的数据块.
	//  - 如果指定了此标志,系统将忽略 lpTemplateName.
	//  - 如果设置了 OFN_EXPLORER 标志,系统将使用指定的模板创建一个对话框,该对话框是默认资源管理器样式对话框的子对话框.
	//  - 如果未设置 OFN_EXPLORER 标志,则系统使用模板创建旧式对话框,替换默认对话框.
	X常量_初始化对话框_ENABLETEMPLATEHANDLE OFN_ = 0x00000080

	// 指示对“打开”或“另存为”对话框所做的任何自定义都使用资源管理器样式的自定义方法.
	//  - 有关详细信息,请参阅 Explorer-Style Hook Procedures 和 Explorer-Style Custom Templates.
	//  - 默认情况下,无论是否设置了此标志,“打开”和“另存为”对话框都使用资源管理器样式的用户界面。仅当您提供挂钩过程或自定义模板或设置 OFN_ALLOWMULTISELECT 标志时,才需要此标志.
	//  - 如果您想要旧式用户界面,请省略 X常量_初始化对话框_EXPLORER 标志并提供替换旧式模板或挂钩过程.
	//  - 如果您想要旧样式但不需要自定义模板或挂钩过程,只需提供一个始终返回FALSE的挂钩过程.
	X常量_初始化对话框_EXPLORER OFN_ = 0x00080000

	X常量_初始化对话框_EXTENSIONDIFFERENT OFN_ = 0x00000400 // 用户键入的文件扩展名与 lpstrDefExt 指定的扩展名不同。如果 lpstrDefExt 为NULL ,则该函数不使用此标志.

	// 用户只能在文件名输入字段中键入现有文件的名称.
	//  - 如果指定了此标志并且用户输入了无效名称,则对话框过程会在消息框中显示警告.
	//  - 如果指定了此标志,则还使用 OFN_PATHMUSTEXIST 标志。此标志可在打开对话框中使用。它不能与另存为对话框一起使用.
	X常量_初始化对话框_FILEMUSTEXIST OFN_ = 0x00001000

	X常量_初始化对话框_FORCESHOWHIDDEN OFN_ = 0x10000000 // 强制显示系统和隐藏文件,从而覆盖用户设置以显示或不显示隐藏文件。但是,未显示标记为系统和隐藏的文件.

	X常量_初始化对话框_HIDEREADONLY OFN_ = 0x00000004 // 隐藏只读复选框.

	// 对于旧式对话框,此标志使对话框使用长文件名.
	//  - 如果未指定此标志,或者还设置了 OFN_ALLOWMULTISELECT 标志,则旧式对话框使用短文件名(8.3 格式)作为带空格的文件名。资源管理器样式的对话框忽略此标志并始终显示长文件名.
	X常量_初始化对话框_LONGNAMES OFN_ = 0x00200000

	X常量_初始化对话框_NOCHANGEDIR OFN_ = 0x00000008 // 如果用户在搜索文件时更改了目录,则将当前目录恢复为其原始值。此标志对 GetOpenFileNameW 无效.

	X常量_初始化对话框_NODEREFERENCELINKS OFN_ = 0x00100000 // 指示对话框返回所选快捷方式 (.LNK) 文件的路径和文件名。如果未指定此值,则对话框返回快捷方式引用的文件的路径和文件名.

	X常量_初始化对话框_NOLONGNAMES OFN_ = 0x00040000 // 对于旧式对话框,此标志使对话框使用短文件名(8.3 格式)。资源管理器样式的对话框忽略此标志并始终显示长文件名.

	X常量_初始化对话框_NONETWORKBUTTON OFN_ = 0x00020000 // 隐藏和禁用网络按钮.

	X常量_初始化对话框_NOREADONLYRETURN OFN_ = 0x00008000 // 返回的文件没有选中只读复选框,并且不在写保护目录中.

	X常量_初始化对话框_NOTESTFILECREATE OFN_ = 0x00010000 // 在关闭对话框之前不会创建文件。如果应用程序将文件保存在创建非修改网络共享上,则应指定此标志。当应用程序指定此标志时,库不检查写保护、磁盘已满、驱动器门打开或网络保护。使用此标志的应用程序必须小心执行文件操作,因为文件一旦关闭就无法重新打开.

	// 常用对话框允许在返回的文件名中包含无效字符. 通常,调用应用程序使用一个挂钩过程,该过程使用 FILEOKSTRING 消息检查文件名.
	//  - 如果编辑控件中的文本框为空或只包含空格,则更新文件和目录列表.
	//  - 如果编辑控件中的文本框包含其他任何内容,则 nFileOffset 和 nFileExtension 将设置为通过解析文本生成的值。文本中没有添加默认扩展名,文本也没有复制到 lpstrFileTitle 指定的缓冲区.
	//  - 如果 nFileOffset 指定的值小于零,则文件名无效。否则,文件名有效,nFileExtension 并且 nFileOffset 可以像未指定 X常量_初始化对话框_NOVALIDATE 标志一样使用.
	X常量_初始化对话框_NOVALIDATE OFN_ = 0x00000100

	X常量_初始化对话框_OVERWRITEPROMPT OFN_ = 0x00000002 // 如果所选文件已存在,则使“另存为”对话框生成一个消息框。用户必须确认是否覆盖文件.

	X常量_初始化对话框_PATHMUTEXIST OFN_ = 0x00000800 // 用户只能键入有效的路径和文件名。如果使用此标志并且用户在“文件名”输入字段中键入了无效的路径和文件名,则对话框功能会在消息框中显示警告.

	X常量_初始化对话框_READONLY OFN_ = 0x00000001 // 导致在创建对话框时最初选中只读复选框。此标志指示对话框关闭时 只读复选框的状态.

	// 指定如果对 OpenFile 函数的调用由于网络共享冲突而失败,则忽略该错误并且对话框返回选定的文件名.
	//  - 如果未设置此标志,则当用户指定的文件名发生网络共享冲突时,对话框会通知您的挂钩过程.
	//  - 如果设置了 OFN_EXPLORER 标志,对话框将 CDN_SHAREVIOLATION 消息发送到挂钩过程.
	//  - 如果不设置 OFN_EXPLORER,对话框会发送 SHAREVISTRING 注册消息到钩子过程.
	X常量_初始化对话框_SHAREAWARE OFN_ = 0x00004000

	X常量_初始化对话框_SHOWHELP OFN_ = 0x00000010 // 使对话框显示“帮助”按钮。 hwndOwner 成员必须指定窗口以接收当用户单击帮助按钮时对话框发送的 HELPMSGSTRING 注册消息。当用户单击“帮助”按钮 时,资源管理器样式的对话框会向您的挂钩过程发送 CDN_HELP 通知消息.
)

type SWP_

type SWP_ uint32

SWP_ 是窗口大小和定位的标志.

const (
	X窗口大小定位标识_异步窗口位置     SWP_ = 0x4000 // 如果调用线程和拥有窗口的线程连接到不同的输入队列,系统会将请求发布到拥有窗口的线程。这可以防止调用线程在其他线程处理请求时阻塞其执行.
	X窗口大小定位标识_延迟擦除       SWP_ = 0x2000 // 防止生成WM_SYNCPAINT消息.
	X窗口大小定位标识_绘制框架       SWP_ = 0x0020 // 在窗口周围绘制一个框架(在窗口的类描述中定义).
	X窗口大小定位标识_框架改变       SWP_ = 0x0020 // 应用使用 SetWindowLong 函数 设置的新框架样式。向窗口发送WM_NCCALCSIZE消息,即使窗口大小没有改变。如果未指定此标志,则仅在更改窗口大小时发送 WM_NCCALCSIZE .
	X窗口大小定位标识_隐藏窗口       SWP_ = 0x0080 // 隐藏窗口.
	X窗口大小定位标识_不激活窗口      SWP_ = 0x0010 // 不激活窗口。如果未设置此标志,则窗口被激活并移动到最顶层或非最顶层组的顶部(取决于hWndInsertAfter参数的设置).
	X窗口大小定位标识_不复制位图      SWP_ = 0x0100 // 丢弃客户区的全部内容。如果未指定此标志,则在调整窗口大小或重新定位后,将保存客户区的有效内容并将其复制回客户区.
	X窗口大小定位标识_保留当前位置     SWP_ = 0x0002 // 保留当前位置(忽略X和Y参数).
	X窗口大小定位标识_不改变所有者窗口Z序 SWP_ = 0x0200 // 不改变所有者窗口在 Z 顺序中的位置.
	X窗口大小定位标识_不重绘        SWP_ = 0x0008 // 不重绘更改。如果设置了此标志,则不会发生任何类型的重新绘制。这适用于客户区、非客户区(包括标题栏和滚动条)以及由于窗口移动而未覆盖的父窗口的任何部分。设置此标志时,应用程序必须显式地使需要重绘的窗口和父窗口的任何部分无效或重绘.
	X窗口大小定位标识_不重新定位      SWP_ = 0x0200 // 与SWP_NOOWNERZORDER标志相同.
	X窗口大小定位标识_不发送更改      SWP_ = 0x0400 // 阻止窗口接收WM_WINDOWPOSCHANGING消息.
	X窗口大小定位标识_保留当前大小     SWP_ = 0x0001 // 保留当前大小(忽略cx和cy参数).
	X窗口大小定位标识_保留当前Z顺序    SWP_ = 0x0004 // 保留当前 Z 顺序(忽略hWndInsertAfter参数).
	X窗口大小定位标识_显示窗口       SWP_ = 0x0040 // 显示窗口.
)

type WH_

type WH_ int32
const (
	X常量_钩子_JOURNALRECORD   WH_ = 0  // 用于记录发布到系统消息队列的输入消息。此挂钩可用于录制宏, win11不支持.
	X常量_钩子_JOURNALPLAYBACK WH_ = 1  // 该过程发布以前由 WH_JOURNALRECORD 挂钩过程记录的消息, win11不支持.
	X常量_钩子_KEYBOARD        WH_ = 2  // 安装监视击键消息的挂钩过程.
	X常量_钩子_GETMESSAGE      WH_ = 3  // 安装用于监视发布到消息队列的消息的挂钩过程.
	X常量_钩子_CALLWNDPROC     WH_ = 4  // 安装一个挂钩过程,该过程在系统将消息发送到目标窗口过程之前对其进行监视.
	X常量_钩子_CBT             WH_ = 5  // 安装一个挂钩过程,用于接收对 CBT 应用程序有用的通知.
	X常量_钩子_SYSMSGFILTER    WH_ = 6  // 安装一个挂钩过程,用于监视由于对话框、消息框、菜单或滚动条中的输入事件而生成的消息。 挂钩过程监视与调用线程相同的桌面中的所有应用程序的消息.
	X常量_钩子_MOUSE           WH_ = 7  // 安装监视鼠标消息的挂钩过程.
	X常量_钩子_DEBUG           WH_ = 9  // 安装一个挂钩过程,用于调试其他挂钩过程.
	X常量_钩子_SHELL           WH_ = 10 // 安装一个挂钩过程,用于接收对 shell 应用程序有用的通知.
	X常量_钩子_FOREGROUNDIDLE  WH_ = 11 // 安装一个挂钩过程,当应用程序的前景线程即将变为空闲状态时将调用该挂钩过程。 此挂钩可用于在空闲时间执行低优先级任务.
	X常量_钩子_CALLWNDPROCRET  WH_ = 12 // 安装挂钩过程,该挂钩过程在目标窗口过程处理消息后对其进行监视。 有关详细信息.
	X常量_钩子_KEYBOARD_LL     WH_ = 13 // 安装监视低级别键盘输入事件的挂钩过程.
	X常量_钩子_MOUSE_LL        WH_ = 14 // 安装用于监视低级别鼠标输入事件的挂钩过程.
)

type X坐标

type X坐标 struct {
	X int32
	Y int32
}

type X标准剪贴板格式

type X标准剪贴板格式 uint32

X标准剪贴板格式 标准剪贴板格式.

const (
	X常量_剪辑版_TEXT           X标准剪贴板格式 = 1  // 文字格式。每行以回车/换行(CR-LF)组合结束。空字符表示数据的结尾。对ANSI文本使用此格式.
	X常量_剪辑版_BITMAP         X标准剪贴板格式 = 2  // 位图的句柄(HBITMAP)
	X常量_剪辑版_METAFILEPICT   X标准剪贴板格式 = 3  // 处理由METAFILEPICT结构定义的图元文件图片格式。通过动态数据交换(DDE)传递CF_METAFILEPICT句柄时,负责删除【HMEM】的应用程序也应该释放 CF_METAFILEPICT 句柄引用的元文件.
	X常量_剪辑版_SYLK           X标准剪贴板格式 = 4  // Microsoft符号链接(SYLK)格式.
	X常量_剪辑版_DIF            X标准剪贴板格式 = 5  // 软件艺术数据交换格式.
	X常量_剪辑版_TIFF           X标准剪贴板格式 = 6  // 标记图像文件格式.
	X常量_剪辑版_OEMTEXT        X标准剪贴板格式 = 7  // 文字格式包含OEM字符集中的字符。每行以回车/换行(CR-LF)组合结束。空字符表示数据的结尾.
	X常量_剪辑版_DIB            X标准剪贴板格式 = 8  // 一个包含BITMAPINFO结构的内存对象,后跟位图位.
	X常量_剪辑版_PALETTE        X标准剪贴板格式 = 9  // 处理调色板。每当应用程序将数据放置在依赖于或假定调色板的剪贴板中时,它也应将调色板放在剪贴板上。如果剪贴板包含CF_PALETTE(逻辑调色板)格式的数据,则应用程序应使用 SelectPalette 和 RealizePalette 函数来实现(比较)剪贴板中与该逻辑调色板的任何其他数据。当显示剪贴板数据时,Windows剪贴板始终将剪贴板上的任何对象用作CF_PALETTE格式的当前调色板.
	X常量_剪辑版_PENDATA        X标准剪贴板格式 = 10 // 用于Pen Computing的Microsoft Windows笔的扩展数据.
	X常量_剪辑版_RIFF           X标准剪贴板格式 = 11 // 表示音频数据比CF_WAVE标准波形格式更复杂.
	X常量_剪辑版_WAVE           X标准剪贴板格式 = 12 // 以诸如11 kHz或22 kHz脉冲编码调制(PCM)的标准波形格式之一表示音频数据.
	X常量_剪辑版_CF_UNICODETEXT X标准剪贴板格式 = 13 // 仅Windows NT: Unicode文字格式。每行以回车/换行(CR-LF)组合结束。空字符表示数据的结尾.
	X常量_剪辑版_ENHMETAFILE    X标准剪贴板格式 = 14 // 增强图元文件的句柄(HENHMETAFILE).
	X常量_剪辑版_HDROP          X标准剪贴板格式 = 15 // 类型为HDROP的句柄,用于标识文件列表。应用程序可以通过将句柄传递给DragQueryFile函数来检索有关文件的信息.
)

type X结构_对话框选项

type X结构_对话框选项 struct {
	HwndOwner      uintptr // 父窗口句柄
	PidlRoot       uintptr // 指定开始浏览的根文件夹的位置。只有命名空间层次结构中的指定文件夹及其子文件夹出现在对话框中。该成员可以为0;在这种情况下,将使用默认位置.
	PszDisplayName uintptr // 指向缓冲区的指针,用于接收用户选择的文件夹的显示名称。此缓冲区的大小假定为 260 个字符.
	LpszTitle      uintptr // 指向显示在对话框中树视图控件上方的以空字符结尾的字符串的指针。使用 common.StrPtr()函数生成.
	UlFlags        BIF_    // 指定对话框选项的标志。可以为0,也可以是 wapi.BIF_ 的组合.
	Lpfn           uintptr // 指向应用程序定义函数的指针,当事件发生时对话框调用该函数.
	LParam         uintptr // 对话框传递给回调函数的应用程序定义的值(如果在lpfn中指定) .
	IImage         int32   // 接收与所选文件夹关联的图像索引,存储在系统图像列表中.
}

X结构_对话框选项 包含用于显示对话框的信息.

详情: https://docs.microsoft.com/zh-cn/windows/win32/api/shlobj_core/ns-shlobj_core-browseinfow.

type X结构_文件对话框信息

type X结构_文件对话框信息 struct {
	// 结构体大小.
	//	ofn := wapi.OpenFileNameW{...}
	//	ofn.LStructSize = uint32(unsafe.Sizeof(ofn))
	LStructSize uint32

	// 拥有对话框的窗口句柄。此成员可以是任何有效的窗口句柄,或者如果对话框没有所有者,它可以为0.
	HwndOwner uintptr

	// 可能如下:
	//	- 如果在 Flags 成员中设置了 OFN_ENABLETEMPLATEHANDLE 标志,则 HInstance 是包含对话框模板的内存对象的句柄.
	//	- 如果设置了 OFN_ENABLETEMPLATE 标志,则 HInstance 是一个模块句柄,该模块包含一个由 LpTemplateName 成员命名的对话框模板.
	//	- 如果两个标志都没有设置,则忽略此成员。如果设置了 OFN_EXPLORER 标志,系统将使用指定的模板创建一个对话框,该对话框是默认资源管理器样式对话框的子对话框.
	//	- 如果未设置 OFN_EXPLORER 标志,则系统使用模板创建旧式对话框,替换默认对话框.
	HInstance uintptr

	// 过滤器. 包含成对的以 NullStr 结尾的过滤器字符串的缓冲区。缓冲区中的最后一个字符串必须以两个 NullStr 字符终止.
	//  - 每对中的第一个字符串是描述过滤器的显示字符串(例如:“文本文件”),第二个字符串指定过滤器模式(例如:“ .TXT”)。要为单个显示字符串指定多个过滤器模式,请使用分号分隔模式(例如:“ .TXT; .DOC; .BAK”)。模式字符串可以是有效文件名字符和星号 (*) 通配符的组合。不要在模式字符串中包含空格.
	//  - 系统不会更改过滤器的顺序。它按照lpstrFilter中指定的顺序将它们显示在文件类型组合框中.
	//  - 如果 lpstrFilter 为NULL,则对话框不显示任何过滤器.
	//
	// 例子:
	//	lpstrFilter := strings.Join([]string{"Text Files(*txt)", "*.txt", "All Files(*.*)", "*.*"}, wapi.NullStr) + wapi.NullStr2
	//	common.StringToUint16Ptr(lpstrFilter)
	LpstrFilter *uint16

	// 一个静态缓冲区,其中包含一对以空值结尾的过滤器字符串,用于保存用户选择的过滤器模式。第一个字符串是描述自定义过滤器的显示字符串,第二个字符串是用户选择的过滤器模式。当您的应用程序第一次创建对话框时,您指定第一个字符串,它可以是任何非空字符串。当用户选择一个文件时,对话框将当前过滤模式复制到第二个字符串。保留的过滤器模式可以是lpstrFilter缓冲区中指定的模式之一,也可以是用户键入的过滤器模式。下次创建对话框时,系统使用字符串初始化用户定义的文件过滤器。如果nFilterIndex成员为零,对话框使用自定义过滤器.
	//  - 如果此成员为NULL,则对话框不保留用户定义的过滤器模式.
	//  - 如果此成员不是NULL,则nMaxCustFilter成员的值必须指定lpstrCustomFilter缓冲区的大小(以字符为单位) .
	LpstrCustomFilter *uint16

	// 由lpstrCustomFilter标识的缓冲区的大小(以字符为单位) 。此缓冲区应至少有 40 个字符长。如果 lpstrCustomFilter 为NULL或指向NULL的字符串,则忽略此成员.
	NMaxCustFilter uint32

	// 当前选定过滤器的索引。 lpstrFilter 指向的缓冲区包含定义过滤器的字符串对。第一对字符串的索引值为 1,第二对字符串的索引值为 2,依此类推。索引为零表示由 lpstrCustomFilter 指定的自定义过滤器。您可以在输入上指定一个索引,以指示对话框的初始过滤器描述和过滤器模式。当用户选择一个文件时, nFilterIndex 返回当前显示的过滤器的索引。如果 nFilterIndex 为零且 lpstrCustomFilter 为NULL,则系统使用 lpstrFilter 中的第一个过滤器缓冲。如果所有三个成员都为零或NULL,则系统不使用任何过滤器,并且不会在对话框的文件列表控件中显示任何文件.
	NFilterIndex uint32

	// 用于初始化文件名编辑控件的文件名。如果不需要初始化,此缓冲区的第一个字符必须为 NullStr 。当 GetOpenFileNameW 或 GetSaveFileNameW 函数成功返回时,此缓冲区包含所选文件的驱动器指示符、路径、文件名和扩展名.
	//  - 如果设置了 OFN_ALLOWMULTISELECT 标志并且用户选择了多个文件,则缓冲区包含当前目录,后跟所选文件的文件名。对于资源管理器样式的对话框,目录和文件名字符串是 NullStr 分隔的,最后一个文件名后有一个额外的 NullStr 字符。对于旧式对话框,字符串以空格分隔,函数使用短文件名作为带空格的文件名。您可以使用 FindFirstFile 函数在长文件名和短文件名之间进行转换。如果用户只选择一个文件, lpstrFile 字符串在路径和文件名之间没有分隔符.
	//  - 如果缓冲区太小,该函数返回FALSE并且 CommDlgExtendedError 函数返回 FNERR_BUFFERTOOSMALL 。在这种情况下, lpstrFile 缓冲区的前两个字节包含所需的大小,以字节或字符为单位.
	//
	// 例子:
	//	lpstrFile := make([]uint16, 260)//初始大小如果是单选文件的话, 就填260. 多选文件的话, 可根据情况增大
	//	然后填写: &lpstrFile[0]
	LpstrFile *uint16

	// lpstrFile指向的缓冲区的大小(以字符为单位)。缓冲区必须足够大以存储路径和文件名字符串或字符串,包括终止 NullStr 字符。如果缓冲区太小而无法包含文件信息, GetOpenFileNameW 和 GetSaveFileNameW 函数将返回FALSE 。缓冲区的长度应至少为 256 个字符.
	NMaxFile uint32

	// 所选文件的文件名和扩展名(不含路径信息)。该成员可以是NULL.
	//
	// 例子:
	//	lpstrFileTitle := make([]uint16, 260)
	//	然后填写: &lpstrFileTitle[0]
	LpstrFileTitle *uint16

	// lpstrFileTitle指向的缓冲区的大小(以字符为单位)。如果lpstrFileTitle为NULL ,则忽略此成员.
	NMaxFileTitle uint32

	// 初始目录.
	//	例: common.StrPtr("D:").
	LpstrInitialDir uintptr

	// 要放置在对话框标题栏中的字符串。如果此成员为NULL,则系统使用默认标题(即"另存为"或"打开").
	//	例: common.StrPtr("打开文件")
	LpstrTitle uintptr

	// 标志: wapi.OFN_ , 可组合, 可为0.
	Flags OFN_

	// 从路径开头到 lpstrFile 指向的字符串中的文件名的从零开始的偏移量(以字符为单位)。对于 Unicode 版本,这是字符数。例如:
	//  - 如果 lpstrFile 指向以下字符串“c:\dir1\dir2\file.ext”,则该成员包含值 13 以指示“file.ext”字符串的偏移量.
	//  - 如果用户选择了多个文件, nFileOffset 是第一个文件名的偏移量.
	NFileOffset uint16

	// 从路径开头到 lpstrFile 指向的字符串中的文件扩展名的从零开始的偏移量(以字符为单位)。对于 Unicode 版本,这是字符数。通常,文件扩展名是最后一次出现的点(“.”)字符之后的子字符串。例如txt是文件名readme.txt的扩展名,html是readme.txt.html的扩展名。因此:
	//  - 如果 lpstrFile 指向字符串“c:\dir1\dir2\readme.txt”,则该成员包含值 20。
	//  - 如果 lpstrFile 指向字符串“c:\dir1\dir2\readme.txt.html”,则此成员成员包含值 24。
	//  - 如果 lpstrFile 指向字符串“c:\dir1\dir2\readme.txt.html.”,该成员包含值 29。
	//  - 如果 lpstrFile 指向的字符串不包含任何“.” 字符如“c:\dir1\dir2\readme”,该成员包含零.
	NFileExtension uint16

	// 默认扩展名。如果用户未能键入扩展名, GetOpenFileNameW 和 GetSaveFileNameW 会将此扩展名附加到文件名中。此字符串可以是任意长度,但仅附加前三个字符。该字符串不应包含句点 (.)。如果此成员为NULL并且用户未能键入扩展名,则不会附加任何扩展名.
	//
	//	例子: common.StrPtr("txt")
	LpstrDefExt uintptr

	// 系统传递给由 lpfnHook 成员标识的钩子过程的应用程序定义的数据。当系统向挂钩过程发送 WM_INITDIALOG 消息时,该消息的 lParam 参数是一个指向对话框创建时指定的 OpenFileNameW 结构的指针。挂钩过程可以使用此指针来获取 lCustData 值.
	LCustData uintptr

	// 指向钩子过程的指针。除非 Flags 成员包含 OFN_ENABLEHOOK 标志,否则此成员将被忽略.
	//	- 如果在Flags成员中没有设置 OFN_EXPLORER 标志, lpfnHook 是一个指向 OFNHookProcOldStyle 挂钩过程的指针,该过程接收用于对话框的消息。挂钩过程返回FALSE以将消息传递给默认对话框过程,或返回TRUE以丢弃消息.
	//	- 如果设置了 OFN_EXPLORER, lpfnHook 是一个指向 OFNHookProc 挂钩过程的指针。挂钩过程接收从对话框发送的通知消息。挂钩过程还接收您通过指定子对话框模板定义的任何其他控件的消息。挂钩过程不接收用于默认对话框的标准控件的消息.
	LpfnHook uintptr

	// 由 hInstance 成员标识的模块中对话模板资源的名称。对于编号的对话框资源,这可以是 MAKEINTRESOURCE 宏返回的值。除非在 Flags 成员中设置了 OFN_ENABLETEMPLATE 标志,否则该成员将被忽略.
	//  - 如果设置了 OFN_EXPLORER 标志,系统将使用指定的模板创建一个对话框,该对话框是默认资源管理器样式对话框的子对话框.
	//  - 如果未设置 OFN_EXPLORER 标志,则系统使用模板创建旧式对话框,替换默认对话框.
	LpTemplateName uintptr
}

X结构_文件对话框信息 包含 GetOpenFileNameW 和 GetSaveFileNameW 函数用于初始化“打开”或“另存为”对话框的信息。用户关闭对话框后,系统在此结构中返回有关用户选择的信息.

详情: https://docs.microsoft.com/zh-cn/windows/win32/api/commdlg/ns-commdlg-openfilenamea.

type X结构_消息

type X结构_消息 struct {
	Hwnd    uintptr
	Message uint32
	WParam  uintptr
	LParam  uintptr
	Time    uint32
	Pt      X坐标
}

type X结构_颜色选择框

type X结构_颜色选择框 struct {
	// 结构的长度(以字节为单位).
	//	cc := wapi.ChooseColor{...}
	//	cc.LStructSize = uint32(unsafe.Sizeof(cc))
	LStructSize uint32

	// 拥有对话框的窗口句柄。此成员可以是任何有效的窗口句柄,或者如果对话框没有所有者,它可以为0.
	HwndOwner uintptr

	// 如果在Flags成员中设置了 CC_ENABLETEMPLATEHANDLE 标志,则 hInstance 是包含对话框模板的内存对象的句柄.
	//  - 如果设置了 CC_ENABLETEMPLATE 标志,则 hInstance 是一个模块句柄,该模块包含一个由 lpTemplateName 成员命名的对话框模板.
	//  - 如果既未设置 CC_ENABLETEMPLATEHANDLE 也未设置 CC_ENABLETEMPLATE,则忽略此成员.
	HInstance uintptr

	// 如果设置了 CC_RGBINIT 标志,则rgbResult指定创建对话框时最初选择的颜色.
	//  - 如果指定的颜色值不在可用颜色中,则系统选择最接近的可用纯色.
	//  - 如果 rgbResult 为零或未设置 CC_RGBINIT,则最初选择的颜色为黑色.
	//  - 如果用户单击OK按钮,则 rgbResult 指定用户的颜色选择。要创建RGB颜色值,请使用: xc.RGB().
	RgbResult uint32

	// 指向包含对话框中自定义颜色框的红、绿、蓝 (RGB) 值的 16 个值的数组的指针.
	//  - 如果用户修改了这些颜色,系统将使用新的 RGB 值更新数组。要在调用 ChooseColorW 函数之间保留新的自定义颜色,您应该为数组分配静态内存。要创建 RGB 颜色值,请使用: xc.RGB().
	//
	// 例子:
	//	var lpCustColors [16]uint32
	//	然后填 &lpCustColors[0]
	LpCustColors *uint32

	// 一组可用于初始化颜色对话框的位标志。当对话框返回时,它会设置这些标志来指示用户的输入。该成员可以是 wapi.CC_ 的组合.
	Flags CC_

	// 系统传递给由 lpfnHook 成员标识的钩子过程的应用程序定义的数据。当系统向挂钩过程发送 WM_INITDIALOG 消息时,该消息的 lParam 参数是一个指向对话框创建时指定的 ChooseColor 结构的指针。挂钩过程可以使用此指针来获取 lCustData 值.
	LCustData uintptr

	// 指向可以处理用于对话框的消息的 CCHookProc 挂钩过程的指针。除非在 Flags 成员中设置了 CC_ENABLEHOOK 标志,否则该成员将被忽略.
	LpfnHook uintptr

	// hInstance 成员标识的模块中对话框模板资源的名称。此模板替代了标准对话框模板。对于编号的对话框资源, lpTemplateName 可以是  MAKEINTRESOURCE 宏返回的值。除非在 Flags 成员中设置了 CC_ENABLETEMPLATE 标志,否则此成员将被忽略.
	LpTemplateName uintptr
}

X结构_颜色选择框 包含 ChooseColorW 函数用于初始化Color对话框的信息。用户关闭对话框后,系统在此结构中返回有关用户选择的信息.

type X结构体_键盘输入事件

type X结构体_键盘输入事件 struct {
	VkCode      uint32  // 虚拟按键代码, xcc.VK_ .详情: https://learn.microsoft.com/zh-cn/windows/win32/inputdev/virtual-key-codes.
	ScanCode    uint32  // 按键代码的硬件扫描代码.
	Flags       uint32  // 扩展键标志、事件注入标志、上下文代码和转换状态标志。此成员指定如下。应用程序可以使用以下值来测试击键标志。测试LLKHF_INJECTED (位 4) 将告知是否已注入事件。如果是,则测试 LLKHF_LOWER_IL_INJECTED (位 1) 会告诉你事件是否是从以较低完整性级别运行的进程注入的.
	Time        uint32  // 此消息的时间戳,相当于 GetMessageTime 为此消息返回的时间戳.
	DwExtraInfo uintptr // 与消息关联的其他信息.
}

X结构体_键盘输入事件 包含有关低级别键盘输入事件的信息.

type X结构体_鼠标输入事件

type X结构体_鼠标输入事件 struct {
	PT X坐标 // 鼠标光标的屏幕坐标

	// 说明:
	//  - 如果消息是 xcc.WM_MOUSEWHEEL 鼠标滚轮滚动消息,正值表示滚轮向前/上旋转(远离用户);负值表示滚轮向后/下旋转(朝向用户)。此成员的高位是滚轮增量, 可使用 wutil.GetHigh16Bits()来取高位值。保留低位。一次标准滚轮滚动的增量定义为 wapi.WHEEL_DELTA,即 120.
	//  - 如果消息是 xcc.WM_XBUTTONDOWN、xcc.WM_XBUTTONUP、xcc.WM_XBUTTONDBLCLK、xcc.WM_NCXBUTTONDOWN、xcc.WM_NCXBUTTONUP 或 xcc.WM_NCXBUTTONDBLCLK,则高位指定按下或释放的 X 按钮, 可使用 wutil.GetHigh16Bits()来取高位值。并且保留低位。此值可以是以下一个或多个值: 1. 按下或释放第一个 X 按钮; 2. 按下或释放第二个 X 按钮。否则,不使用 mouseData.
	MouseData int32

	Flags       uint32  // 事件注入的标志。应用程序可以使用以下值来测试标志。测试 LLMHF_INJECTED (位 0) 将告知是否已注入事件。如果是,则测试 LLMHF_LOWER_IL_INJECTED (位 1) 将告诉你事件是否是从以较低完整性级别运行的进程注入的.
	Time        uint32  // 此消息的时间戳.
	DwExtraInfo uintptr // 与消息关联的其他信息.
}

Directories

Path Synopsis
Package wnd 调用 wapi 封装了对窗口的操作.
Package wnd 调用 wapi 封装了对窗口的操作.
Package wutil 调用 wapi 封装了部分常用功能.
Package wutil 调用 wapi 封装了部分常用功能.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL