溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

易語言怎么通過句柄名來關(guān)閉互斥體實(shí)現(xiàn)游戲多開

發(fā)布時(shí)間:2021-06-16 15:51:15 來源:億速云 閱讀:477 作者:小新 欄目:編程語言

這篇文章主要為大家展示了“易語言怎么通過句柄名來關(guān)閉互斥體實(shí)現(xiàn)游戲多開”,內(nèi)容簡(jiǎn)而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領(lǐng)大家一起研究并學(xué)習(xí)一下“易語言怎么通過句柄名來關(guān)閉互斥體實(shí)現(xiàn)游戲多開”這篇文章吧。

DLL命令代碼

.版本 2
.DLL命令 GetProcessHandleCount, 邏輯型
  .參數(shù) hProcess, 整數(shù)型
  .參數(shù) pdwHandleCount, 整數(shù)型, 傳址
.DLL命令 DuplicateHandle, 邏輯型
  .參數(shù) hSourceProcessHandle, 整數(shù)型
  .參數(shù) hSourceHandle, 整數(shù)型
  .參數(shù) hTargetProcessHandle, 整數(shù)型
  .參數(shù) lpTargetHandle, 整數(shù)型, 傳址
  .參數(shù) dwDesiredAccess, 整數(shù)型
  .參數(shù) bInheritHandle, 邏輯型
  .參數(shù) dwOptions, 整數(shù)型
.DLL命令 GetCurrentProcess, 整數(shù)型
.DLL命令 ZwQueryObject, 整數(shù)型, "ntdll.dll"
  .參數(shù) ObjectHandle, 整數(shù)型
  .參數(shù) ObjectInformationClass, 整數(shù)型
  .參數(shù) ObjectInformation, 字節(jié)集, 傳址
  .參數(shù) Length, 整數(shù)型
  .參數(shù) ResultLength, 整數(shù)型, 傳址
.DLL命令 CloseHandle, 邏輯型
  .參數(shù) hObject, 整數(shù)型
.DLL命令 WideCharToMultiByte, 整數(shù)型
  .參數(shù) CodePage, 整數(shù)型
  .參數(shù) dwFlags, 整數(shù)型
  .參數(shù) lpWideCharStr, 字節(jié)集
  .參數(shù) cchWideChar, 整數(shù)型
  .參數(shù) lpMultiByteStr, 文本型
  .參數(shù) cchMultiByte, 整數(shù)型
  .參數(shù) lpDefaultChar, 文本型
  .參數(shù) lpUsedDefaultChar, 整數(shù)型
.DLL命令 OpenProcess, 整數(shù)型
  .參數(shù) dwDesiredAccess, 整數(shù)型
  .參數(shù) bInheritHandle, 邏輯型
  .參數(shù) dwProcessId, 整數(shù)型
.DLL命令 CreateToolhelp32Snapshot, 整數(shù)型
  .參數(shù) dwFlags, 整數(shù)型
  .參數(shù) th42ProcessID, 整數(shù)型
.DLL命令 Process32First, 整數(shù)型
  .參數(shù) hSnapshot, 整數(shù)型
  .參數(shù) lppe, LPPROCESSENTRY32
.DLL命令 Process32Next, 整數(shù)型
  .參數(shù) hSnapshot, 整數(shù)型
  .參數(shù) lppe, LPPROCESSENTRY32

自定義數(shù)據(jù)類型表

.版本 2
.數(shù)據(jù)類型 句柄信息
  .成員 句柄, 整數(shù)型
  .成員 對(duì)象名, 文本型
.數(shù)據(jù)類型 LPPROCESSENTRY32
  .成員 dwSize, 整數(shù)型
  .成員 cntUsage, 整數(shù)型
  .成員 th42ProcessID, 整數(shù)型
  .成員 th42DefaultHeapID, 整數(shù)型
  .成員 th42ModuleID, 整數(shù)型
  .成員 cntThreads, 整數(shù)型
  .成員 th42ParentProcessID, 整數(shù)型
  .成員 pcPriClassBase, 整數(shù)型
  .成員 dwFlags, 整數(shù)型
  .成員 szExeFile, 字節(jié)型, , "260"

關(guān)閉互斥體游戲多開的代碼

.版本 2
.程序集 窗口程序集_啟動(dòng)窗口
.程序集變量 記錄句柄, 整數(shù)型
.子程序 _開啟按鈕_被單擊
時(shí)鐘1.時(shí)鐘周期 = 200
.子程序 啟動(dòng)多開
.局部變量 句柄列表, 句柄信息, , "0"
.局部變量 計(jì)次, 整數(shù)型
.局部變量 進(jìn)程句柄, 整數(shù)型, , "0"
.局部變量 l1, 整數(shù)型
取進(jìn)程句柄 (“shiqiee.exe”, 進(jìn)程句柄)
.計(jì)次循環(huán)首 (取數(shù)組成員數(shù) (進(jìn)程句柄), l1)
  枚舉句柄 (進(jìn)程句柄 [l1], 句柄列表)
  .計(jì)次循環(huán)首 (取數(shù)組成員數(shù) (句柄列表), 計(jì)次)
    .如果真 (句柄列表 [計(jì)次].對(duì)象名 = “\Device\HarddiskVolume4\Windows\eelock1.txt” 或 句柄列表 [計(jì)次].對(duì)象名 = “\Device\HarddiskVolume4\Windows\eelock0.txt” 或 句柄列表 [計(jì)次].對(duì)象名 = “\Sessions\1\BaseNamedObjects\SA_MUTE0” 或 句柄列表 [計(jì)次].對(duì)象名 = “\Sessions\1\BaseNamedObjects\SA_MUTE1”)
      關(guān)閉句柄 (進(jìn)程句柄 [l1], 句柄列表 [計(jì)次].句柄)
    .如果真結(jié)束
  .計(jì)次循環(huán)尾 ()
.計(jì)次循環(huán)尾 ()
.子程序 枚舉句柄, 整數(shù)型
.參數(shù) 進(jìn)程句柄, 整數(shù)型
.參數(shù) 句柄列表, 句柄信息, 數(shù)組
.局部變量 句柄信息, 句柄信息
.局部變量 HandleCount, 整數(shù)型
.局部變量 sHandle, 整數(shù)型
.局部變量 tHandle, 整數(shù)型
.局部變量 i, 整數(shù)型
.局部變量 Buf, 字節(jié)集
.局部變量 len, 整數(shù)型
.如果真 (GetProcessHandleCount (進(jìn)程句柄, HandleCount))
  .判斷循環(huán)首 (HandleCount > i 且 sHandle < 65536)
    sHandle = sHandle + 4
    .如果真 (DuplicateHandle (進(jìn)程句柄, sHandle, GetCurrentProcess (), tHandle, 0, 假, 2))
      i = i + 1
      句柄信息.句柄 = sHandle
      句柄信息.對(duì)象名 = “”
      Buf = 取空白字節(jié)集 (8192)
      .如果真 (ZwQueryObject (tHandle, 1, Buf, 8192, 0) = 0)
        len = 取字節(jié)集數(shù)據(jù) (Buf, 2, )
        Buf = 取字節(jié)集中間 (Buf, 9, len)
        句柄信息.對(duì)象名 = UnicodeToAnsi (Buf)
      .如果真結(jié)束
      CloseHandle (tHandle)
      加入成員 (句柄列表, 句柄信息)
    .如果真結(jié)束
  .判斷循環(huán)尾 ()
.如果真結(jié)束
返回 (i)
.子程序 UnicodeToAnsi, 文本型
.參數(shù) Unicode, 字節(jié)集
.局部變量 ansi_len, 整數(shù)型
.局部變量 unicode_len, 整數(shù)型
.局部變量 ansi, 文本型
unicode_len = 取字節(jié)集長(zhǎng)度 (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)
.子程序 關(guān)閉句柄, 邏輯型
.參數(shù) 進(jìn)程句柄, 整數(shù)型
.參數(shù) 對(duì)象句柄, 整數(shù)型
.局部變量 Handle, 整數(shù)型
.如果 (DuplicateHandle (進(jìn)程句柄, 對(duì)象句柄, GetCurrentProcess (), Handle, 0, 假, 1))
  CloseHandle (Handle)
  返回 (真)
.否則
  返回 (假)
.如果結(jié)束
.子程序 取進(jìn)程句柄, 整數(shù)型
.參數(shù) 進(jìn)程名, 文本型
.參數(shù) 進(jìn)程句柄, 整數(shù)型, 可空 數(shù)組
.局部變量 LPPROCESSENTRY32, LPPROCESSENTRY32
.局部變量 hSnapshot, 整數(shù)型
.局部變量 hProcess, 整數(shù)型
.局部變量 j, 整數(shù)型
hSnapshot = CreateToolhelp32Snapshot (2, 0)
.如果真 (hSnapshot ≠ -1)
  LPPROCESSENTRY32.dwSize = 296
  j = Process32First (hSnapshot, LPPROCESSENTRY32)
  .判斷循環(huán)首 (j ≠ 0)
    .如果真 (到小寫 (進(jìn)程名) = 到小寫 (到文本 (LPPROCESSENTRY32.szExeFile)))
      hProcess = OpenProcess (2035711, 假, LPPROCESSENTRY32.th42ProcessID)
      加入成員 (進(jìn)程句柄, hProcess)
    .如果真結(jié)束
    j = Process32Next (hSnapshot, LPPROCESSENTRY32)
  .判斷循環(huán)尾 ()
  CloseHandle (hSnapshot)
  返回 (hProcess)
.如果真結(jié)束
返回 (0)
.子程序 _時(shí)鐘1_周期事件
啟動(dòng)多開 ()
.子程序 _關(guān)閉按鈕_被單擊
時(shí)鐘1.時(shí)鐘周期 = 0

運(yùn)行結(jié)果:

易語言怎么通過句柄名來關(guān)閉互斥體實(shí)現(xiàn)游戲多開

以上是“易語言怎么通過句柄名來關(guān)閉互斥體實(shí)現(xiàn)游戲多開”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對(duì)大家有所幫助,如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注億速云行業(yè)資訊頻道!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI