• 按键公众号 :
按键精灵电脑版
立即下载

软件版本:2014.06
软件大小:22.9M
更新时间:2021-12-03

按键精灵安卓版
立即下载

软件版本:3.7.2
软件大小:46.2M
更新时间:2023-05-10

按键精灵iOS版
立即下载

软件版本:1.8.0
软件大小:29.2M
更新时间:2023-03-21

按键手机助手
立即下载

软件版本:3.8.0
软件大小:262M
更新时间:2023-05-30

快捷导航

登录 后使用快捷导航
没有帐号? 注册

发新话题 回复该主题

[昨夜星辰] 【源码】按键精灵部分防检测技巧(第一弹) [复制链接]

1#

前言:
以下源码仅针对部分游戏的远程截屏以及窗口内关键字查找来检测按键精灵是否开启,不涉及进程保护之类的功能。

注:以下代码仅在WIN7系统下通过测试,其他系统是否可用请自行测试,仅提供思路参考。由于按键自带窗口插件无法查找多层或隐藏窗口句柄,故使用了大漠插件,可自行斟酌更换其他能查找窗口的插件。

函数名:设置是否显示桌面壁纸
参数定义:

显示或隐藏 布尔型:true为显示,false为隐藏。

返回值:

整数型:成功返回1,失败返回0。

  1. Function 设置是否显示桌面壁纸(显示或隐藏)
  2. Dim WallpaperPath,ParentFolderName
  3. WallpaperPath = 获取桌面壁纸()
  4. If WallpaperPath = "" Then
  5. 设置是否显示桌面壁纸 = 0
  6. Exit Function
  7. End If
  8. ParentFolderName = 获取路径父文件夹(WallpaperPath) & "\"
  9. If 显示或隐藏 = true Then //桌面恢复
  10. If Plugin.File.IsFileExist(ParentFolderName & "TranscodedWallpaper.bak") = true Then //存在原有壁纸备份
  11. Call Plugin.File.DeleteFile(ParentFolderName & "TranscodedWallpaper.jpg")//删除黑屏壁纸
  12. Call Plugin.File.ReNameFile(ParentFolderName & "TranscodedWallpaper.bak", ParentFolderName & "TranscodedWallpaper.jpg") //恢复原有壁纸
  13. End If
  14. 设置是否显示桌面壁纸 = 设置桌面壁纸(ParentFolderName & "TranscodedWallpaper.jpg")
  15. End If
  16. If 显示或隐藏 = false Then //桌面黑屏
  17. If Plugin.File.IsFileExist(ParentFolderName & "TranscodedWallpaper.bak") = false Then //不存在原有壁纸备份
  18. Call Plugin.File.ReNameFile(ParentFolderName & "TranscodedWallpaper.jpg", ParentFolderName & "TranscodedWallpaper.bak")//重命名原有壁纸
  19. End If
  20. Call Plugin.File.CopyFile(脚本文件存放路径&"TranscodedWallpaper.jpg", ParentFolderName & "TranscodedWallpaper.jpg") //拷贝新黑屏壁纸
  21. 设置是否显示桌面壁纸 = 设置桌面壁纸(ParentFolderName & "TranscodedWallpaper.jpg")
  22. End If
  23. End Function
  24. Function 获取桌面壁纸()
  25. WallpaperPath = Space(255)
  26. If SystemParametersInfoW(115, 200, WallpaperPath, 0) <> 0 Then
  27. 获取桌面壁纸 = Left(WallpaperPath, InStr(WallpaperPath, ".jpg") + 3)
  28. Else
  29. 获取桌面壁纸 = ""
  30. End If
  31. End Function
  32. Function 设置桌面壁纸(path)
  33. 设置桌面壁纸 = SystemParametersInfoW(20, 0, path, 1)
  34. End Function
复制代码

函数名:设置是否显示桌面图标
参数定义:
显示或隐藏 布尔型:true为显示,false为隐藏

返回值:

整数型:成功返回1,失败返回0。

  1. Function 设置是否显示桌面图标(显示或隐藏)
  2. 设置是否显示桌面图标 = 0
  3. Dim 桌面主区域窗口句柄,桌面主区域窗口句柄_其他, i
  4. 桌面主区域窗口句柄 = dm.FindWindowEx(0, "Progman", "")//第一层
  5. 桌面主区域窗口句柄 = dm.FindWindowEx(桌面主区域窗口句柄, "SHELLDLL_DefView", "")//第二层
  6. If 桌面主区域窗口句柄 = 0 Then //第二层查找失败
  7. 桌面主区域窗口句柄_其他 = dm.EnumWindow(0, "", "WorkerW", 2 + 4 + 8 + 16)//其他第一层
  8. If 桌面主区域窗口句柄_其他 <> "" Then
  9. 桌面主区域窗口句柄_其他 = Split(桌面主区域窗口句柄_其他, ",")
  10. For i = 0 To UBound(桌面主区域窗口句柄_其他)
  11. 桌面主区域窗口句柄 = dm.FindWindowEx(CLng(桌面主区域窗口句柄_其他(i)), "SHELLDLL_DefView", "") //其他第二层
  12. If 桌面主区域窗口句柄 <> 0 Then //其他第二层查找成功
  13. Exit For
  14. End If
  15. Next
  16. End If
  17. End If
  18. 桌面主区域窗口句柄 = dm.FindWindowSuper(桌面主区域窗口句柄, 4, 0, "SysListView32", 2, 0)//第三层
  19. If 桌面主区域窗口句柄 <> 0 Then
  20. If 显示或隐藏 = true Then
  21. Call dm.SetWindowState(桌面主区域窗口句柄, 7)//显示
  22. 设置是否显示桌面图标 = 1
  23. Else
  24. Call dm.SetWindowState(桌面主区域窗口句柄, 6)//隐藏
  25. 设置是否显示桌面图标 = 1
  26. End If
  27. End If
  28. End Function
复制代码

函数名:设置是否显示托盘图标
参数定义:
显示或隐藏 布尔型:true为显示,false为隐藏。

返回值:

整数型:成功返回1,失败返回0。

  1. Function 设置是否显示托盘图标(显示或隐藏)
  2. 设置是否显示托盘图标 = 0
  3. Dim 托盘主区域窗口句柄
  4. 托盘主区域窗口句柄 = dm.FindWindowSuper("", 0, 0, "Shell_TrayWnd", 2, 0)
  5. If 托盘主区域窗口句柄 <> 0 Then
  6. 托盘主区域窗口句柄 = dm.FindWindowSuper(托盘主区域窗口句柄, 4, 0, "TrayNotifyWnd", 2, 0)
  7. If 托盘主区域窗口句柄 <> 0 Then
  8. 托盘主区域窗口句柄 = dm.FindWindowSuper(托盘主区域窗口句柄, 4, 0, "SysPager", 2, 0)
  9. If 托盘主区域窗口句柄 <> 0 Then
  10. If 显示或隐藏 = true Then
  11. Call dm.SetWindowState(托盘主区域窗口句柄, 7)//显示
  12. 设置是否显示托盘图标 = 1
  13. Else
  14. Call dm.SetWindowState(托盘主区域窗口句柄, 6)//隐藏
  15. 设置是否显示托盘图标 = 1
  16. End If
  17. End If
  18. End If
  19. End If
  20. Dim 托盘隐藏区域窗口句柄
  21. 托盘隐藏区域窗口句柄 = dm.FindWindowSuper("", 0, 0, "NotifyIconOverflowWindow", 2, 0)
  22. If 托盘隐藏区域窗口句柄 <> 0 Then
  23. 托盘隐藏区域窗口句柄 = dm.FindWindowSuper(托盘隐藏区域窗口句柄, 4, 0, "ToolbarWindow32", 2, 0)
  24. If 托盘隐藏区域窗口句柄 <> 0 Then
  25. If 显示或隐藏 = true Then
  26. Call dm.SetWindowState(托盘隐藏区域窗口句柄, 7)//显示
  27. 设置是否显示托盘图标 = 1
  28. Else
  29. Call dm.SetWindowState(托盘隐藏区域窗口句柄, 6)//隐藏
  30. 设置是否显示托盘图标 = 1
  31. End If
  32. End If
  33. End If
  34. End Function
复制代码

函数名:简体繁体火星文互转
参数定义:
原内容 字符串型:待转换的内容

转换方式 整数型:1、简体转繁体 2、简体转火星 3、繁体转简体 4、繁体转火星 5、火星转简体 6、火星转繁体

返回值:

字符串型:转换后的内容

  1. Function 简体繁体火星文互转(原内容, 转换方式)
  2. Dim 简体字, 繁体字, 火星文
  3. 简体字 = dm.ReadFile(脚本文件存放路径 & "简体字.txt")
  4. 繁体字 = dm.ReadFile(脚本文件存放路径 & "繁体字.txt")
  5. 火星文 = dm.ReadFile(脚本文件存放路径 & "火星文.txt")
  6. Dim i,新内容,当前字符,字符位置,原文字,新文字
  7. 新内容 = ""
  8. Select Case 转换方式
  9. Case 1
  10. 原文字 = 简体字
  11. 新文字 = 繁体字
  12. Case 2
  13. 原文字 = 简体字
  14. 新文字 = 火星文
  15. Case 3
  16. 原文字 = 繁体字
  17. 新文字 = 简体字
  18. Case 4
  19. 原文字 = 繁体字
  20. 新文字 = 火星文
  21. Case 5
  22. 原文字 = 火星文
  23. 新文字 = 简体字
  24. Case 6
  25. 原文字 = 火星文
  26. 新文字 = 繁体字
  27. Case Else
  28. 简体繁体火星文互转 = 原内容
  29. Exit Function
  30. End Select
  31. For i = 1 To Len(原内容)
  32. 当前字符 = Mid(原内容, i, 1)
  33. 字符位置 = InStr(原文字, 当前字符)
  34. If 字符位置 > 0 Then
  35. 当前字符 = Mid(新文字, 字符位置, 1)
  36. End If
  37. 新内容 = 新内容 & 当前字符
  38. Next
  39. 简体繁体火星文互转 = 新内容
  40. End Function
复制代码

数名:设置自身进程内窗口是否允许被截图
参数定义:

hwnd 整数型:窗口句柄
允许或禁止 布尔型:true为允许,false禁止。

返回值:

整数型:成功返回1,失败返回0。

  1. Function 设置自身进程内窗口是否允许被截图(hwnd, 允许或禁止)
  2. If 允许或禁止 = true Then
  3. 设置自身进程内窗口是否允许被截图 = SetWindowDisplayAffinity(hwnd, 0)
  4. Else
  5. 设置自身进程内窗口是否允许被截图 = SetWindowDisplayAffinity(hwnd, 1)
  6. End If
  7. End Function
复制代码

注:窗口必须为顶层窗口,WIN7系统必须开启DWM(即性能选项中必须勾选“启用桌面组合”和“在窗口和按钮上使用视觉样式”),否则该函数无效,若中途DWM关闭,则该函数也会失效。



源文件:

test.zip (, 下载次数:242)


最后编辑昨夜星辰 最后编辑于 2022-04-07 03:33:45
近期制作:
传奇私服各种反外挂插件版本挂机软件,可教可售
原神加速、连发辅助工具
天下3自动钓大鱼辅助工具

承接脚本定制,点击下方联系
QQ:250039815

交流群:101296478

2#

好东西,谢谢分享。

3#


4#

dfsfsdfsdfsd

5#

学习了

6#

学习中

7#

学习学习

8#

学习学习

9#


10#


11#

感谢分享

12#

感谢分享,支持

13#

学习下

14#

厉害了 我的哥

15#

`````````````123

16#

啊啊啊啊这

17#

6666666666

18#

学习一下。。。。。。。。。。。。。

19#

什么个意思?

20#

把把把把把

发新话题 回复该主题