今天我来给大家介绍一些常用的Windows.h中的函数。
这些函数非常适合做病毒,,对病毒感兴趣的朋友可以来看看。
由于
在文末我给大家展示出了所有Windows.h中的函数,大家可以访问文末那个网址去查看。
因为今天整理的比较匆忙,所以有一些部分会重复,请大家谅解,谢谢。
窗口和消息处理
CreateWindowEx :创建一个窗口,并返回一个与该窗口关联的句柄。它是创建应用程序主窗口或子窗口的主要函数。ShowWindow :设置窗口的显示状态(如最大化、最小化、隐藏等)。SendMessage :向窗口发送消息,并等待消息被处理完毕后才返回。常用于窗口之间的通信。
图形和设备上下文 (GDI)
CreateCompatibleDC :创建一个与指定设备兼容的内存设备上下文。SelectObject :选择一个对象(如画笔、画刷、字体或位图)到设备上下文中。BitBlt :执行位块传输操作,从一个设备上下文复制位图到另一个设备上下文。
文件和文件系统
CreateFile :创建或打开一个文件,并返回一个句柄用于后续的文件操作。ReadFile :从文件中读取数据。WriteFile :向文件中写入数据。
进程和线程
CreateProcess :创建一个新进程和它的主线程。这个新进程运行在其自己的地址空间中,并且可以独立于调用进程运行。CreateThread :在当前进程的地址空间中创建一个新线程。
同步
CreateMutex :创建一个互斥对象。WaitForSingleObject :等待指定的同步对象变为有信号状态。
内存管理
GlobalAlloc :分配指定数量的字节,并返回一个句柄,该句柄可用于访问这些字节。这是全局内存分配的一种方式。GlobalFree :释放由GlobalAlloc 或相关函数分配的全局内存块。VirtualAlloc :在调用进程的虚拟地址空间中保留、提交或更改页的状态。常用于动态内存分配。VirtualFree :释放之前由VirtualAlloc 函数保留、提交或更改的页区域。
动态链接库 (DLL)
LoadLibrary :加载指定的动态链接库(DLL)到调用进程的地址空间,并返回一个句柄,该句柄可用于获取DLL中的函数。GetProcAddress :检索指定动态链接库(DLL)中导出函数的地址。FreeLibrary :当DLL模块不再需要时,减少其引用计数。如果引用计数达到零,模块将从调用进程的地址空间中卸载。
系统信息和控制
GetVersion :获取当前操作系统的版本号。注意,在较新的Windows版本中,建议使用GetVersionEx 或RtlGetVersion 。GetSystemInfo :获取有关当前系统的信息,如处理器架构、页面大小、最小和最大应用程序地址空间等。SetSystemTime :设置当前系统时间。通常需要管理员权限。GetSystemTime :检索当前系统日期和时间。
进程和线程(续)
TerminateProcess :立即终止指定进程及其所有线程。这是一个强制性的操作,通常应避免使用。GetCurrentProcess :获取调用线程所在进程的伪句柄。GetCurrentThread :获取调用线程的伪句柄。SetThreadPriority :设置指定线程的优先级。
事件日志
ReportEvent :将事件写入指定的事件日志。常用于应用程序、系统或安全日志记录。OpenEventLog :打开指定计算机上的事件日志以供读取或写入。ReadEventLog :从指定的事件日志中读取事件记录。
剪贴板
OpenClipboard :打开一个与调用线程关联的剪贴板对象,以便进行后续操作。EmptyClipboard :清空剪贴板内容。SetClipboardData :将数据放入剪贴板。GetClipboardData :从剪贴板中检索指定格式的数据。CloseClipboard :关闭剪贴板对象。
注册表操作
RegOpenKeyEx :打开一个指定的注册表键,并返回一个句柄,用于对该键进行后续操作。RegQueryValueEx :查询指定注册表键下的指定值的数据。RegSetValueEx :设置指定注册表键下的指定值的数据。RegCreateKeyEx :在注册表中创建指定的键。如果键已存在,该函数还可以打开它。RegDeleteKey :删除注册表中的一个键及其所有子键。RegCloseKey :关闭之前打开的注册表键的句柄。
文件操作(续)
DeleteFile :删除一个现有文件。MoveFile :将一个现有文件或目录(包括其子项)移动到新位置,可以跨卷移动。CopyFile :将现有文件复制到新文件。CreateDirectory :创建一个新目录。如果中间目录不存在,该函数可以一并创建它们。RemoveDirectory :删除一个现有目录。该目录必须为空,除非使用了特定标志。
管道和通信
CreateNamedPipe :创建一个命名管道,并返回其句柄。命名管道是进程间通信的一种机制。ConnectNamedPipe :等待客户端连接到命名管道。WaitNamedPipe :等待命名管道可用,即等待客户端连接或数据可用于读取。TransactNamedPipe :在命名管道上进行读写操作,通常用于完成一次完整的客户端-服务器交互。
网络操作
InternetOpen :初始化一个应用程序对WinINet函数的调用,并返回一个句柄。InternetOpenUrl :打开一个URL并读取数据,该函数结合了InternetOpen 、InternetConnect 和HttpOpenRequest 的功能。InternetReadFile :从由InternetOpenUrl 或类似函数打开的句柄中读取数据。InternetCloseHandle :关闭由WinINet函数打开的单个句柄。
服务控制
StartServiceCtrlDispatcher :连接服务控制管理器,并启动服务的控制请求处理循环。RegisterServiceCtrlHandler :注册一个服务控制处理程序函数,以处理来自服务控制管理器的控制请求。SetServiceStatus :更新服务控制管理器中关于服务的状态信息。
性能计数器
PdhOpenQuery :打开一个性能数据查询,并返回一个查询句柄。PdhAddCounter :向查询中添加一个性能计数器。PdhCollectQueryData :收集查询中所有计数器的当前值。PdhGetFormattedCounterValue :检索给定计数器的格式化值。
窗口管理
ShowWindow :设置指定窗口的显示状态(如最大化、最小化、隐藏等)。UpdateWindow :强制立即更新窗口。发送一个WM_PAINT 消息给窗口,即使窗口的更新区域为空。SetWindowPos :设置窗口的大小、位置及层次(Z-order)。GetWindowRect :检索窗口的边界矩形的大小和位置。GetClientRect :检索窗口客户区的大小和位置。
图形设备接口 (GDI)
TextOut :在指定的位置输出格式化的文本。Ellipse :在当前设备上下文中绘制椭圆。Rectangle :在当前设备上下文中绘制矩形。LineTo :从当前位置到指定点绘制一条线。MoveToEx :将指定的点设置为绘图操作的当前位置。SelectObject :选择一个对象(如画笔、画刷或字体)到设备上下文中。
消息和输入
TranslateMessage :翻译虚拟键消息为字符消息。通常用在消息循环中。DispatchMessage :分发一个应用程序消息到窗口过程。GetMessage :从应用程序的消息队列中检索消息。PeekMessage :检查应用程序的消息队列,查看是否有消息可供检索,但不会从队列中移除它们。SendMessage :向指定窗口发送消息,并等待消息处理完成后才返回。
进程和线程(续)
CreateProcess :创建一个新进程和它的主线程。新进程运行在其自己的地址空间中,并且可以独立于调用进程运行。TerminateThread :结束指定线程的执行。这是一个危险的操作,因为它可能导致资源泄露和其他问题。GetExitCodeThread :检索指定线程的终止状态。SetThreadAffinityMask :设置线程的处理器亲和性掩码,以确定线程可以在哪些处理器上运行。
同步
CreateMutex :创建一个互斥对象。ReleaseMutex :释放指定的互斥对象。WaitForSingleObject :等待指定的对象(如互斥体、事件或信号量)变为有信号状态。CreateSemaphore :创建一个新的信号量对象。ReleaseSemaphore :增加指定信号量的计数。
文件和文件系统
CreateFile :创建或打开一个文件、文件流、目录、物理磁盘、卷、控制台缓冲区或设备。ReadFile :从文件中读取数据。通常与CreateFile 函数一起使用来打开文件。WriteFile :将数据写入文件。FlushFileBuffers :清空指定文件的缓冲区,将所有缓冲的数据写入磁盘。DeleteFile :删除一个现有的文件。
系统信息和控制
GetVersion :获取当前操作系统的版本号。GetVersionEx :获取详细的操作系统版本信息(注意:在 Windows 8.1 之后,推荐使用GetVersionExW 或RtlGetVersion )。SystemParametersInfo :检索或设置系统级参数,如桌面壁纸、屏幕保护程序等。GetSystemInfo :获取当前系统的信息,包括处理器架构、页面大小等。
进程和线程
GetCurrentProcess :获取调用线程的当前进程的伪句柄。GetCurrentThreadId :获取调用线程的线程标识符。OpenProcess :打开一个已存在的进程对象,并返回进程的句柄。CreateThread :创建一个新线程来执行指定的函数。ExitThread :立即终止调用线程的执行。ExitProcess :终止当前进程和所有它的线程。
内存管理
VirtualAlloc :在调用进程的虚拟地址空间中保留、提交或更改页的状态。VirtualFree :释放之前通过VirtualAlloc 保留的页区域。HeapAlloc :从堆中分配内存块。HeapFree :释放通过HeapAlloc 分配的内存块。
时间
GetSystemTime :获取当前系统日期和时间。GetSystemTimeAsFileTime :获取当前系统日期和时间,格式为 FILETIME 结构。GetTickCount :获取自系统启动以来的毫秒数。QueryPerformanceCounter :获取高分辨率性能计数器的当前值。QueryPerformanceFrequency :获取高分辨率性能计数器的频率。
用户界面(续)
InvalidateRect :使整个窗口客户区或指定的矩形区域无效,导致系统在下次消息循环时重绘该区域。ValidateRect :使窗口的指定矩形区域有效,消除之前的无效区域标记。RedrawWindow :重绘指定的窗口区域。EnableWindow :启用或禁用窗口,以响应用户输入。IsWindowEnabled :确定窗口是否已启用以响应用户输入。
剪贴板
OpenClipboard :打开一个剪贴板以便读写。CloseClipboard :关闭剪贴板。EmptyClipboard :清空剪贴板并释放剪贴板中数据的句柄。SetClipboardData :将指定类型的数据放置到剪贴板上。GetClipboardData :从剪贴板中检索指定类型的数据。
动态链接库 (DLL)
LoadLibrary :加载指定的模块到调用进程的地址空间。GetProcAddress :检索指定模块中导出函数的地址。FreeLibrary :释放通过LoadLibrary 加载的模块。
文件操作
CreateFileMapping :创建一个文件映射对象,用于将文件数据映射到进程的地址空间。MapViewOfFile :将文件映射对象的视图映射到调用进程的地址空间。UnmapViewOfFile :取消文件映射对象视图在调用进程地址空间中的映射。CloseHandle :关闭一个打开的句柄。SetFilePointer :移动指定文件的文件指针。
进程间通信 (IPC)
CreateNamedPipe :创建一个命名管道,用于进程间通信。ConnectNamedPipe :等待客户端连接到命名管道。DisconnectNamedPipe :断开与命名管道的客户端连接。TransactNamedPipe :在命名管道上进行读写操作。
线程同步
CreateEvent :创建一个事件对象。SetEvent :将指定的事件对象设置为有信号状态。ResetEvent :将指定的事件对象重置为无信号状态。WaitForMultipleObjects :等待多个对象中的任何一个变为有信号状态。CreateSemaphoreEx :创建一个信号量对象(扩展版本,支持更多功能)。
注册表操作
RegOpenKeyEx :打开一个指定的注册表键。RegQueryValueEx :检索指定注册表键的值。RegSetValueEx :设置指定注册表键的值。RegCreateKeyEx :创建一个新的注册表键。RegDeleteKey :删除一个注册表键。
服务控制
StartServiceCtrlDispatcher :连接服务控制管理器并启动服务的控制请求分发线程。RegisterServiceCtrlHandlerEx :注册一个处理函数来接收服务控制请求。SetServiceStatus :更新服务的状态信息。
网络编程
socket :创建一个新的套接字,并为其分配系统资源。bind :将一个本地地址与套接字关联。listen :使套接字处于监听状态,准备接受连接请求。accept :接受一个连接请求,并创建一个新的套接字用于与该客户端通信。connect :尝试与远程服务器建立连接。send /recv :发送和接收数据。
安全
LogonUser :尝试以指定的用户名、域和密码登录用户。ImpersonateLoggedOnUser :允许线程模拟另一个用户的安全上下文。RevertToSelf :结束线程对当前用户的模拟,恢复为进程令牌的原始用户。
调试和错误处理
OutputDebugString :向调试器发送一个字符串。GetLastError :检索调用线程的最后错误代码。SetLastError :设置调用线程的最后错误代码(通常不直接调用,而是由 API 函数在出错时设置)。FormatMessage :格式化一个错误消息字符串。
内存管理
GlobalAlloc :从全局堆中分配指定数量的字节。GlobalFree :释放通过GlobalAlloc 分配的全局内存块。GlobalLock :锁定一个全局内存对象,并返回指向它的第一个字节的指针。GlobalUnlock :解锁之前通过GlobalLock 锁定的全局内存对象。LocalAlloc :从本地堆中分配内存。LocalFree :释放通过LocalAlloc 分配的本地内存。
进程和线程
CreateProcessAsUser :在指定用户的安全上下文中创建一个新进程。TerminateProcess :立即终止指定进程及其所有线程。OpenThread :打开一个已存在的线程对象,并返回线程的句柄。SuspendThread :挂起(暂停)指定线程的执行。ResumeThread :恢复指定线程的执行。SwitchToThread :使调用线程放弃其时间片,使其他线程可以运行。
文件操作
CopyFile :复制一个已存在的文件到一个新文件。MoveFile :移动(或重命名)一个已存在的文件或目录。DeleteFile :删除一个已存在的文件。FindFirstFile :搜索目录中的第一个文件或子目录。FindNextFile :继续搜索目录中的文件或子目录。FindClose :关闭由FindFirstFile 或FindFirstFileEx 打开的搜索句柄。
系统信息
GetComputerName :检索当前计算机的名称。GetUserName :检索当前用户的登录名称。GetSystemDirectory :检索系统目录的路径。GetWindowsDirectory :检索 Windows 目录的路径。GetTempPath :检索当前系统的临时文件夹路径。GetEnvironmentStrings :检索当前进程的环境块。
性能计数
QueryPerformanceCounter :检索当前的高分辨率性能计数器的值。QueryPerformanceFrequency :检索高分辨率性能计数器的频率。
时间和日期
GetSystemTimeAsFileTime :以FILETIME 结构的形式获取当前系统日期和时间。FileTimeToSystemTime :将FILETIME 结构转换为SYSTEMTIME 结构。SystemTimeToFileTime :将SYSTEMTIME 结构转换为FILETIME 结构。GetLocalTime :检索当前本地日期和时间。
字符串处理
lstrcmp :比较两个字符串(区分大小写)。lstrcmpi :比较两个字符串(不区分大小写)。lstrcpy :复制一个字符串到另一个字符串。lstrcat :将一个字符串附加到另一个字符串的末尾。lstrlen :获取字符串的长度。
注: 以上列出的一些函数(如
这些只是其中的一小部分函数。每个函数都有详细的参数说明、返回值和错误处理信息,这些信息对于正确使用这些函数至关重要。
要获取每个函数的详细用法和用处,应该:
- 查阅官方的 Windows API 文档,这通常是最准确和最新的资源。
- 使用 Microsoft 的开发工具,如 Visual Studio,这些工具提供了对 Windows API 的内置帮助和智能感知功能。
- 参考书籍和在线教程,这些通常提供对 API 的更深入解释和示例代码。
由于 Windows API 的广度和深度,学习它的最佳方式是通过实践经验,结合具体的项目和需求来逐渐掌握。
以上是一部分windows.h中的函数,更多函数可参考:Programming reference for the Win32 API - Win32 apps | Microsoft Learn
谢谢大家,以上就是今天的内容!