易语⾔通过句柄名来关闭互斥体实现游戏多开的代码
DLL命令代码
.版本 2
.DLL命令 GetProcessHandleCount, 逻辑型
.参数 hProcess, 整数型
.参数 pdwHandleCount, 整数型, 传址
.DLL命令 DuplicateHandle, 逻辑型
.参数 hSourceProcessHandle, 整数型
.参数 hSourceHandle, 整数型
.参数 hTargetProcessHandle, 整数型
.参数 lpTargetHandle, 整数型, 传址
.
参数 dwDesiredAccess, 整数型
.参数 bInheritHandle, 逻辑型
.参数 dwOptions, 整数型
.DLL命令 GetCurrentProcess, 整数型
.DLL命令 ZwQueryObject, 整数型, "ntdll.dll"
.参数 ObjectHandle, 整数型
.参数 ObjectInformationClass, 整数型
.参数 ObjectInformation, 字节集, 传址
.参数 Length, 整数型
.参数 ResultLength, 整数型, 传址
.DLL命令 CloseHandle, 逻辑型
.
参数 hObject, 整数型
.DLL命令 WideCharToMultiByte, 整数型
.参数 CodePage, 整数型
.参数 dwFlags, 整数型
.参数 lpWideCharStr, 字节集
.参数 cchWideChar, 整数型
.参数 lpMultiByteStr, ⽂本型
.参数 cchMultiByte, 整数型
.参数 lpDefaultChar, ⽂本型
.参数 lpUsedDefaultChar, 整数型
.DLL命令 OpenProcess, 整数型
.
参数 dwDesiredAccess, 整数型
.参数 bInheritHandle, 逻辑型
.参数 dwProcessId, 整数型
.DLL命令 CreateToolhelp32Snapshot, 整数型
.参数 dwFlags, 整数型
.参数 th32ProcessID, 整数型
.DLL命令 Process32First, 整数型
.参数 hSnapshot, 整数型
.参数 lppe, LPPROCESSENTRY32
.DLL命令 Process32Next, 整数型
.参数 hSnapshot, 整数型
.
参数 lppe, LPPROCESSENTRY32
⾃定义数据类型表
.版本 2
.数据类型句柄信息
.成员句柄, 整数型
.成员对象名, ⽂本型
.数据类型 LPPROCESSENTRY32
.成员 dwSize, 整数型
.成员 cntUsage, 整数型
.成员 th32ProcessID, 整数型
.成员 th32DefaultHeapID, 整数型
.
成员 th32ModuleID, 整数型
.成员 cntThreads, 整数型
.成员 th32ParentProcessID, 整数型
.成员 pcPriClassBase, 整数型
.成员 dwFlags, 整数型
.成员 szExeFile, 字节型, , "260"
关闭互斥体游戏多开的代码
.版本 2
.程序集窗⼝程序集_启动窗⼝
.程序集变量记录句柄, 整数型
.⼦程序 _开启按钮_被单击
时钟1.时钟周期= 200
.⼦程序启动多开
.局部变量句柄列表, 句柄信息, , "0"
.局部变量计次, 整数型
.局部变量进程句柄, 整数型, , "0"
.局部变量 l1, 整数型
取进程句柄 (“”, 进程句柄)
.计次循环⾸ (取数组成员数 (进程句柄), l1)
枚举句柄 (进程句柄 [l1], 句柄列表)
.计次循环⾸ (取数组成员数 (句柄列表), 计次)
.如果真 (句柄列表 [计次].对象名= “\Device\HarddiskVolume4\” 或句柄列表 [计次].
对象名= “\Device\HarddiskVolume4\” 或句柄列表 [计次].对象名= “\Sessions\1\BaseNamedObjects\SA_MUTE0” 或句柄列表 [计次关闭句柄 (进程句柄 [l1], 句柄列表 [计次].句柄)
.如果真结束
.计次循环尾 ()
.计次循环尾 ()
.⼦程序枚举句柄, 整数型
.参数进程句柄, 整数型
.参数句柄列表, 句柄信息, 数组
.局部变量句柄信息, 句柄信息
.局部变量 HandleCount, 整数型
.局部变量 sHandle, 整数型
.局部变量 tHandle, 整数型
.局部变量 i, 整数型
.局部变量 Buf, 字节集
.局部变量 len, 整数型
.如果真 (GetProcessHandleCount (进程句柄, HandleCount))
.判断循环⾸ (HandleCount > i 且 sHandle < 65536)
sHandle = sHandle + 4
.如果真 (DuplicateHandle (进程句柄, sHandle, GetCurrentProcess (), tHandle, 0, 假, 2))
i = i + 1
句柄信息.句柄= sHandle
句柄信息.对象名= “”
Buf =取空⽩字节集 (8192)
.如果真 (ZwQueryObject (tHandle, 1, Buf, 8192, 0) = 0)
len =取字节集数据 (Buf, 2, )
Buf =取字节集中间 (Buf, 9, len)
句柄信息.对象名= UnicodeToAnsi (Buf)
.如果真结束
CloseHandle (tHandle)
加⼊成员 (句柄列表, 句柄信息)
.如果真结束
.判断循环尾 ()
.如果真结束
返回 (i)
.⼦程序 UnicodeToAnsi, ⽂本型
.参数 Unicode, 字节集
.局部变量 ansi_len, 整数型
.局部变量 unicode_len, 整数型
.局部变量 ansi, ⽂本型
unicode_len =取字节集长度 (Unicode) ÷ 2
ansi_len = WideCharToMultiByte (936, 0, Unicode, unicode_len, ansi, 0, “”, 0)
ansi =取空⽩⽂本 (ansi_len)
WideCharToMultiByte (936, 0, Unicode, unicode_len, ansi, ansi_len, “”, 0)
返回 (ansi)
.
⼦程序关闭句柄, 逻辑型
.参数进程句柄, 整数型
.参数对象句柄, 整数型
易语言怎么制作游戏
.局部变量 Handle, 整数型
.如果 (DuplicateHandle (进程句柄, 对象句柄, GetCurrentProcess (), Handle, 0, 假, 1))
CloseHandle (Handle)
返回 (真)
.否则
返回 (假)
.如果结束
.⼦程序取进程句柄, 整数型
.
参数进程名, ⽂本型
.参数进程句柄, 整数型, 可空数组
.局部变量 LPPROCESSENTRY32, LPPROCESSENTRY32
.局部变量 hSnapshot, 整数型
.局部变量 hProcess, 整数型
.局部变量 j, 整数型
hSnapshot = CreateToolhelp32Snapshot (2, 0)
.如果真 (hSnapshot ≠ -1)
LPPROCESSENTRY32.dwSize = 296
j = Process32First (hSnapshot, LPPROCESSENTRY32)
.判断循环⾸ (j ≠ 0)
.
如果真 (到⼩写 (进程名) =到⼩写 (到⽂本 (LPPROCESSENTRY32.szExeFile)))
hProcess = OpenProcess (2035711, 假, LPPROCESSENTRY32.th32ProcessID)
加⼊成员 (进程句柄, hProcess)
.如果真结束
j = Process32Next (hSnapshot, LPPROCESSENTRY32)
.判断循环尾 ()
CloseHandle (hSnapshot)
返回 (hProcess)
.如果真结束
返回 (0)
.⼦程序 _时钟1_周期事件
启动多开 ()
.⼦程序 _关闭按钮_被单击
时钟1.时钟周期= 0
运⾏结果:
总结
以上就是这篇⽂章的全部内容了,希望本⽂的内容对⼤家的学习或者⼯作具有⼀定的参考学习价值,谢谢⼤家对的⽀持。如果你想了解更多相关内容请查看下⾯相关链接