DLL文件说明
后缀 为 .exe是 应用程序, .py 的python的 .rar .zip的是压缩文件 .txt 是文本文档
.dll的是 应用程序扩展 文件
DLL文件为动态链接库 (全称是 Dynamic Link Library),又称应用程序扩展
在Windows中,许多应用程序并不是一个完整的可执行文件,它们被分割成一些相对独立的动态链接库,即DLL文件,放置于系统中。当我们执行某一个程序时,相应的DLL文件就会被调用。一个应用程序可使用多个DLL文件,一个DLL文件也可能被不同的应用程序使用,这样的DLL文件被称为共享DLL文件。
DLL文件就相当于 模块 优点 简化代码
调用方法 可以使用导入库的方法 和 LoadLibrary 函数 加载函数的方式调用
kernel32.dll
路径: c:windowssystem32
属于内核级文件。它控制着系统的内存管理、数据的输入输出操作和中断处理,当Windows启动时,kernel32.dll就驻留在内存中特定的写保护区域,使别的程序无法占用这个内存区域。
有关进程 内存的操作都可以用这个模块实现
CreatMutex
很多程序都有多开限制,比如游戏 DNF 任何一款不能多开的游戏,都不可以多开
就是因为用了 互斥体,
一个程序或一个项目要求不能多开 ,这个时候就要如何防止多开
1. CreatMutex
原理:创建一个互斥体,并检查它是否已经有拥有者,如果有,表明互斥体已经建立(程序已经启动),否则表明程序未启动。
2. 使用窗口属性
原理:在程序启动时,枚举桌面所有窗口,并检查其属性列表中是否存在特殊的属性值,如果有则表明程序已经启动,否则程序未启动。
3.使用公共文件
原理:程序启动时,在一个公共目录(比如C:或者Temp目录)中创建一个公共文件,并将此文件设置为不共享读写。第二个程序启动时,也打开此文件,如果打开成功,则表示程序未启动过,否则表示程序已经启动。
CloseHandle关闭句柄
万能关闭句柄
ReadProcessMemory 读内存
是一个内存操作的函数 5个参数
HANDLE hProcess, // 被读取进程的句柄;
LPCVOID lpBaseAddress, // 读的起始地址;
LPVOID lpBuffer, // 存放读取数据缓冲区;
DWORD nSize, // 一次读取的字节数;
LPDWORD lpNumberOfBytesRead // 实际读取的字节数;
WriteProcessMemory 写内存
hProcess , 进程的句柄
lpBaseAddress, 写入进程的位置
lpBuffer, 数据当前存放地址
nSize, 数据的长度
lpNumberOfBytesWritten,实际数据的长度
nSize以字节为单位,一个字节Byte等于8位
user32.dll
比如红蜘蛛 置顶问题,所有关于窗口的操作 这个模块都可以实现,比如 改变窗口大小,改窗口标题 取标题,取坐标,闪动,是否置顶,最大化,最小化
user32.dll是Windows用户界面相关应用程序接口,用于包括Windows处理,基本用户界面等特性,如创建窗口和发送消息。
FindWindowA 寻找窗口 (类名,标题)
类名是 window 内部标识该窗口的名字
返回的是一个窗口句柄
MoveWindow 设置窗口位置和大小()
有6个参数
hWnd指定了窗口的句柄
x指定了CWnd的左边的新位置。
y指定了CWnd的顶部的新位置。
nWidth指定了CWnd的新宽度。
nHeight指定了CWnd的新高度。
bRepaint指定了是否要重画CWnd。如果为TRUE