【 二进制】Windows API 记录
阅读原文时间:2023年07月10日阅读:3

FindWindow

原型:

HWND FindWindow(
LPCTSTR lpClassName,
LPCTSTR lpWindowName
);

该函数获得一个顶层窗口的句柄,该窗口的类名和窗口名与给定的字符串相匹配,这个函数不查找子窗口,在查找时不区分大小写。

示例:FindWindow(NULL, L"植物大战僵尸中文版");

参数:

lpClassName :指向一个指定了类名的空结束字符串,或一个标识类名字符串的成员的指针。如果该参数为一个成员,则它必须为前次调用 theGlobafAddAtom 函数产生的全局成员。该成员为 16 位,必须位于 lpClassName 的低 16 位,高位必须为 0

lpWindowName:指向一个指定了窗口名(窗口标题)的空结束字符串。如果该参数为空,则为所有窗口全匹配

返回值:如果函数成功,返回值为具有指定类名和窗口名的窗口句柄;如果函数失败,返回值为 NULL

GetWindowThreadProcessId

原型:

DWORD GetWindowThreadProcessld(
HWND hwnd,
LPDWORD lpdwProcessld
);

函数功能:该函数返回创建指定窗口线程的标识和创建窗口的进程的标识符,后一项是可选的。

示例:GetWindowThreadProcessId(hwnd_Game, &ProcessID)

参数:

hWnd: 窗口句柄

lpdwProcessld: 接收进程标识的 32 位值的地址。如果这个参数不为 NULL,GetWindwThreadProcessld 将进程标识拷贝到这个 32 位值中,否则不拷贝

返回值:返回值为创建窗口的线程标识

OpenProcess

原型:

HANDLE OpenProcess(
DWORD fdwAccess,
BOOL fInherit,
DWORD IDProcess
);

函数功能:OpenProcess 函数用来打开一个已存在的进程对象,并返回进程的句柄

示例:OpenProcess(PROCESS_ALL_ACCESS, false, ProcessID)

参数:

dwDesiredAccess:访问权限

bInheritHandle:继承标志

dwProcessId:进程 ID

WriteProcessMemory

原型:

BOOL WriteProcessMemory(
HANDLE hProcess,
LPVOID lpBaseAddress,
LPVOID lpBuffer,
DWORD nSize,
LPDWORD lpNumberOfBytesWritten
);

函数功能:该函数在指定的进程中写入内存。 必须写入整个区域,否则操作将失败

示例:WriteProcessMemory(h_process, (LPVOID)0x20194DC8, &num, 4, NULL)

参数:

hProcess:从OpenProcess函数返回的句柄,该函数提供了对该进程的完全访问权限

lpBaseAddress:指向指定进程中的基址的指针

lpBuffer:指向缓冲区的指针,该缓冲区提供要写入指定进程的地址空间的数据

nSize:指定要写入指定进程的请求字节数

lpNumberOfBytesWritten:指向转移到指定进程中的字节数的指针,此参数是可选的,如果lpNumberOfBytesWritten为NULL,则忽略该参数