| 消息 |
user32.dll |
SetWindowsHookExW |
设置全局/线程钩子(键盘/鼠标/消息等,替代SetWindowsHookExA) |
需包含<windows.h>,链接user32.lib;示例: HHOOK hHook = SetWindowsHookExW(WH_KEYBOARD_LL, KeyboardProc, hInst, 0); |
|
|
CallNextHookEx |
调用钩子链中的下一个钩子函数(钩子过程中必须调用) |
示例: LRESULT ret = CallNextHookEx(hHook, nCode, wParam, lParam); |
|
|
UnhookWindowsHookEx |
卸载已设置的钩子(释放钩子资源) |
示例: UnhookWindowsHookEx(hHook); |
|
|
GetWindowThreadProcessId |
获取指定窗口所属的线程ID和进程ID(核心定位窗口归属) |
示例: DWORD dwPid; DWORD dwTid = GetWindowThreadProcessId(hWnd, &dwPid); |
|
|
EnumWindows |
枚举系统中所有顶层窗口(遍历所有窗口) |
示例: EnumWindows(EnumWindowsProc, (LPARAM)NULL); // EnumWindowsProc为回调函数 |
|
|
EnumChildWindows |
枚举指定父窗口下的所有子控件/子窗口 |
示例: EnumChildWindows(hParentWnd, EnumChildProc, (LPARAM)NULL); |
|
|
GetMessagePos |
获取当前消息触发时的鼠标屏幕坐标 |
示例: DWORD dwPos = GetMessagePos(); int x = LOWORD(dwPos), y = HIWORD(dwPos); |
|
|
GetMessageTime |
获取当前消息的时间戳(自系统启动后的毫秒数) |
示例: DWORD dwTime = GetMessageTime(); |
|
|
RegisterWindowMessageW |
注册自定义窗口消息(避免系统消息冲突) |
示例: UINT WM_MY_MSG = RegisterWindowMessageW(L"MY_CUSTOM_MSG_123"); |
| 界面 |
user32.dll |
GetClientRect |
获取窗口客户区(不含边框)的矩形坐标(相对窗口左上角) |
需包含<windows.h>,链接user32.lib;示例: RECT rcClient; GetClientRect(hWnd, &rcClient); |
|
|
GetWindowRect |
获取窗口屏幕区(含边框)的矩形坐标(相对屏幕左上角) |
示例: RECT rcWindow; GetWindowRect(hWnd, &rcWindow); |
|
|
MoveWindow |
移动窗口位置并调整大小(简单版) |
示例: MoveWindow(hWnd, 100, 100, 800, 600, TRUE); // x,y,宽,高,重绘 |
|
|
SetWindowPos |
精细设置窗口位置、大小、Z序(置顶/置底等) |
示例: SetWindowPos(hWnd, HWND_TOPMOST, 100,100,800,600, SWP_SHOWWINDOW); |
|
|
EnableWindow |
启用/禁用窗口/控件(禁用后无法响应输入) |
示例: EnableWindow(hBtn, FALSE); // 禁用按钮 |
|
|
GetDlgItem |
通过ID获取对话框中的控件句柄 |
示例: HWND hEdit = GetDlgItem(hDlg, IDC_EDIT1); |
|
|
SendDlgItemMessageW |
直接向对话框控件发送消息(无需先获取句柄) |
示例: SendDlgItemMessageW(hDlg, IDC_BUTTON1, BM_CLICK, 0, 0); |
|
|
RegisterHotKey |
注册全局热键(无窗口焦点也能触发) |
示例: RegisterHotKey(hWnd, 1, MOD_CTRL, VK_F5); // Ctrl+F5 |
|
|
UnregisterHotKey |
注销已注册的全局热键 |
示例: UnregisterHotKey(hWnd, 1); |
| 进程 |
kernel32.dll |
CreateProcessAsUserW |
以指定用户身份创建进程(需权限) |
需包含<windows.h>,链接kernel32.lib;示例: CreateProcessAsUserW(hToken, L"notepad.exe", NULL, NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi); |
|
|
WaitForMultipleObjects |
等待多个内核对象(进程/线程/事件等)触发 |
示例: HANDLE hObjs[]={hProcess1, hProcess2}; WaitForMultipleObjects(2, hObjs, TRUE, INFINITE); |
|
|
GetProcessPriorityClass |
获取进程的优先级类别(如高优先级/普通) |
示例: DWORD dwPri = GetProcessPriorityClass(hProcess); |
|
|
SetProcessPriorityClass |
设置进程优先级类别 |
示例: SetProcessPriorityClass(hProcess, HIGH_PRIORITY_CLASS); |
|
|
GetThreadPriority |
获取线程优先级 |
示例: int nPri = GetThreadPriority(hThread); |
|
|
SetThreadPriority |
设置线程优先级 |
示例: SetThreadPriority(hThread, THREAD_PRIORITY_HIGHEST); |
|
|
SuspendThread |
挂起指定线程(暂停执行) |
示例: DWORD dwCount = SuspendThread(hThread); |
|
|
ResumeThread |
恢复挂起的线程(继续执行) |
示例: DWORD dwCount = ResumeThread(hThread); |
|
user32.dll |
AttachThreadInput |
附加线程输入队列(共享键盘/鼠标输入) |
示例: AttachThreadInput(dwTid1, dwTid2, TRUE); |
| 内存 |
kernel32.dll |
ReadProcessMemory |
读取其他进程的内存(需进程读写权限) |
需包含<windows.h>,链接kernel32.lib;示例: ReadProcessMemory(hProcess, pRemoteAddr, pLocalBuf, 1024, &dwRead); |
|
|
WriteProcessMemory |
写入数据到其他进程的内存(需进程读写权限) |
示例: WriteProcessMemory(hProcess, pRemoteAddr, pLocalBuf, 1024, &dwWrite); |
|
|
VirtualAllocEx |
在其他进程地址空间分配虚拟内存 |
示例: LPVOID pRemoteMem = VirtualAllocEx(hProcess, NULL, 4096, MEM_COMMIT, PAGE_READWRITE); |
|
|
VirtualFreeEx |
释放其他进程中分配的虚拟内存 |
示例: VirtualFreeEx(hProcess, pRemoteMem, 0, MEM_RELEASE); |
|
|
HeapSize |
获取堆内存块的实际大小 |
示例: SIZE_T dwSize = HeapSize(GetProcessHeap(), 0, pBuf); |
|
|
HeapReAlloc |
重新分配堆内存(扩容/缩容) |
示例: LPVOID pNewBuf = HeapReAlloc(GetProcessHeap(), 0, pBuf, 2048); |
|
psapi.dll |
GetProcessWorkingSetSize |
获取进程工作集大小(物理内存使用) |
需包含<psapi.h>,链接psapi.lib;示例: SIZE_T dwMin, dwMax; GetProcessWorkingSetSize(hProcess, &dwMin, &dwMax); |
| 网络 |
ws2_32.dll |
gethostbyname |
通过主机名(如www.baidu.com)获取IP地址信息 |
需包含<winsock2.h>,链接ws2_32.lib;示例: hostent* pHost = gethostbyname("www.baidu.com"); |
|
|
gethostname |
获取本地主机的名称 |
示例: char szHost[256]; gethostname(szHost, 256); |
|
|
WSAGetLastError |
获取Winsock API的最后错误码(替代GetLastError) |
示例: int nErr = WSAGetLastError(); |
|
|
WSACancelAsyncRequest |
取消未完成的异步Winsock请求 |
示例: WSACancelAsyncRequest(hAsyncReq); |
|
|
AcceptEx |
高性能异步接受TCP连接(IOCP场景) |
示例: AcceptEx(sListen, sClient, pBuf, 0, sizeof(sockaddr_in)+16, sizeof(sockaddr_in)+16, &dwRecv, &ov); |
|
|
ConnectEx |
高性能异步连接TCP服务器(IOCP场景) |
示例: ConnectEx(s, (sockaddr*)&svrAddr, sizeof(svrAddr), pBuf, 0, &dwSent, &ov); |
| 文件 |
kernel32.dll |
FindFirstFileW |
查找指定路径下的第一个文件/目录(替代FindFirstFileA) |
需包含<windows.h>,链接kernel32.lib;示例: WIN32_FIND_DATAW fd; HANDLE hFind = FindFirstFileW(L"*.txt", &fd); |
|
|
FindNextFileW |
查找下一个文件/目录(遍历文件列表) |
示例: while (FindNextFileW(hFind, &fd)) { /* 遍历文件 */ } |
|
|
FindClose |
关闭文件查找句柄(释放FindFirstFileW资源) |
示例: FindClose(hFind); |
|
|
CopyFileW |
复制文件(简单版,替代SHCopyFileW) |
示例: CopyFileW(L"src.txt", L"dst.txt", TRUE); // 最后参数为TRUE表示目标存在则失败 |
|
|
MoveFileW |
移动/重命名文件 |
示例: MoveFileW(L"old.txt", L"new.txt"); |
|
|
DeleteFileW |
删除指定文件(替代SHFileOperationW的删除) |
示例: DeleteFileW(L"test.txt"); |
|
|
GetFullPathNameW |
将相对路径转换为绝对路径 |
示例: WCHAR szFullPath[MAX_PATH]; GetFullPathNameW(L"test.txt", MAX_PATH, szFullPath, NULL); |
|
|
CreateFileMappingW |
创建文件映射(内存映射文件,共享内存) |
示例: HANDLE hMap = CreateFileMappingW(hFile, NULL, PAGE_READWRITE, 0, 4096, L"MyFileMap"); |
|
|
MapViewOfFile |
将文件映射到进程内存空间 |
示例: LPVOID pMap = MapViewOfFile(hMap, FILE_MAP_ALL_ACCESS, 0, 0, 0); |
| IO |
kernel32.dll |
CancelIo |
取消指定文件句柄的所有未完成异步IO操作 |
需包含<windows.h>,链接kernel32.lib;示例: CancelIo(hFile); |
|
|
CancelIoEx |
更灵活取消指定的异步IO操作(可指定OVERLAPPED) |
示例: CancelIoEx(hFile, &ov); |
|
|
ReadDirectoryChangesW |
监控目录变化(文件创建/删除/修改等) |
示例: ReadDirectoryChangesW(hDir, pBuf, 4096, TRUE, FILE_NOTIFY_CHANGE_FILE_NAME, &dwBytes, &ov, NULL); |
|
|
DeviceIoControl |
向设备驱动发送控制码(如操作串口/磁盘) |
示例: DeviceIoControl(hDevice, IOCTL_DISK_GET_DRIVE_GEOMETRY, NULL, 0, pGeom, sizeof(DISK_GEOMETRY), &dwOut, NULL); |
|
|
FlushFileBuffers |
刷新文件缓冲区(强制将缓存数据写入磁盘) |
示例: FlushFileBuffers(hFile); |