服务器之家:专注于服务器技术及软件下载分享
分类导航

PHP教程|ASP.NET教程|Java教程|ASP教程|编程技术|正则表达式|C/C++|IOS|C#|Swift|Android|VB|R语言|JavaScript|易语言|vb.net|

服务器之家 - 编程语言 - 易语言 - 易语言通过句柄名来关闭互斥体实现游戏多开的代码

易语言通过句柄名来关闭互斥体实现游戏多开的代码

2022-02-19 17:07易语言源码教程 易语言

今天小编就为大家分享一篇关于易语言通过句柄名来关闭互斥体实现游戏多开的代码,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧

DLL命令代码

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
.版本 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

自定义数据类型表

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
.版本 2
.数据类型 句柄信息
  .成员 句柄, 整数型
  .成员 对象名, 文本型
.数据类型 LPPROCESSENTRY32
  .成员 dwSize, 整数型
  .成员 cntUsage, 整数型
  .成员 th32ProcessID, 整数型
  .成员 th32DefaultHeapID, 整数型
  .成员 th32ModuleID, 整数型
  .成员 cntThreads, 整数型
  .成员 th32ParentProcessID, 整数型
  .成员 pcPriClassBase, 整数型
  .成员 dwFlags, 整数型
  .成员 szExeFile, 字节型, , "260"

关闭互斥体游戏多开的代码

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
.版本 2
.程序集 窗口程序集_启动窗口
.程序集变量 记录句柄, 整数型
.子程序 _开启按钮_被单击
时钟1.时钟周期 = 200
.子程序 启动多开
.局部变量 句柄列表, 句柄信息, , "0"
.局部变量 计次, 整数型
.局部变量 进程句柄, 整数型, , "0"
.局部变量 l1, 整数型
取进程句柄 (“shiqiee.exe”, 进程句柄)
.计次循环首 (取数组成员数 (进程句柄), l1)
  枚举句柄 (进程句柄 [l1], 句柄列表)
  .计次循环首 (取数组成员数 (句柄列表), 计次)
    .如果真 (句柄列表 [计次].对象名 = “\Device\HarddiskVolume4\Windows\eelock1.txt” 或 句柄列表 [计次].对象名 = “\Device\HarddiskVolume4\Windows\eelock0.txt” 或 句柄列表 [计次].对象名 = “\Sessions\1\BaseNamedObjects\SA_MUTE0” 或 句柄列表 [计次].对象名 = “\Sessions\1\BaseNamedObjects\SA_MUTE1”)
      关闭句柄 (进程句柄 [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

运行结果:

易语言通过句柄名来关闭互斥体实现游戏多开的代码

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对服务器之家的支持。如果你想了解更多相关内容请查看下面相关链接

延伸 · 阅读

精彩推荐
  • 易语言易语言在画板中写出指定文本当画板中已满会自动滚屏

    易语言在画板中写出指定文本当画板中已满会自动滚屏

    今天小编就为大家分享一篇关于易语言在画板中写出指定文本当画板中已满会自动滚屏,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,...

    易语言帮助手册9092022-01-12
  • 易语言易语言设置进度条边框样式的方法

    易语言设置进度条边框样式的方法

    今天小编就为大家分享一篇关于易语言设置进度条边框样式的方法,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随...

    易语言帮助手册4422022-01-20
  • 易语言实例操作易语言载入窗口

    实例操作易语言载入窗口

    在本文中小编给大家整理的是关于易语言载入窗口的教程和步骤内容,需要的可以跟着学习下...

    易语言教程网19162022-03-02
  • 易语言易语言关于程序进程和线程的基础知识

    易语言关于程序进程和线程的基础知识

    今天小编就为大家分享一篇关于易语言关于程序进程和线程的基础知识,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起...

    三叶资源网6662022-02-24
  • 易语言一步一步跟我学易语言之第二个易程序菜单设计

    一步一步跟我学易语言之第二个易程序菜单设计

    今天小编就为大家分享一篇关于的一步一步跟我学易语言之第二个易程序菜单设计,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要...

    易语言帮助手册7092021-06-17
  • 易语言易语言获取指定磁盘的名称

    易语言获取指定磁盘的名称

    今天小编就为大家分享一篇关于易语言获取指定磁盘的名称,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来...

    易语言帮助手册12662022-01-04
  • 易语言易语言生成exe文件的方法

    易语言生成exe文件的方法

    在本篇内容中小编给大家分享的是关于易语言生成exe文件的方法知识点,需要的朋友们参考下。...

    易语言教程网14792022-03-01
  • 易语言一步一步跟我学易语言之关于变量

    一步一步跟我学易语言之关于变量

    今天小编就为大家分享一篇关于一步一步跟我学易语言之关于变量,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随...

    易语言帮助手册10822021-06-17