- 按键认证大神
- 728264
- 3502
- 18
- 1899 朵
- 27454 个
- 1718 个
- 82980
- 2011-08-04
|
1#
t
T
发表于 2022-04-07 03:23
|
|只看楼主
前言: 以下源码仅针对部分游戏的远程截屏以及窗口内关键字查找来检测按键精灵是否开启,不涉及进程保护之类的功能。
注:以下代码仅在WIN7系统下通过测试,其他系统是否可用请自行测试,仅提供思路参考。由于按键自带窗口插件无法查找多层或隐藏窗口句柄,故使用了大漠插件,可自行斟酌更换其他能查找窗口的插件。
函数名:设置是否显示桌面壁纸 参数定义: 显示或隐藏 布尔型:true为显示,false为隐藏。 返回值: 整数型:成功返回1,失败返回0。 - Function 设置是否显示桌面壁纸(显示或隐藏)
- Dim WallpaperPath,ParentFolderName
- WallpaperPath = 获取桌面壁纸()
- If WallpaperPath = "" Then
- 设置是否显示桌面壁纸 = 0
- Exit Function
- End If
- ParentFolderName = 获取路径父文件夹(WallpaperPath) & "\"
- If 显示或隐藏 = true Then //桌面恢复
- If Plugin.File.IsFileExist(ParentFolderName & "TranscodedWallpaper.bak") = true Then //存在原有壁纸备份
- Call Plugin.File.DeleteFile(ParentFolderName & "TranscodedWallpaper.jpg")//删除黑屏壁纸
- Call Plugin.File.ReNameFile(ParentFolderName & "TranscodedWallpaper.bak", ParentFolderName & "TranscodedWallpaper.jpg") //恢复原有壁纸
- End If
- 设置是否显示桌面壁纸 = 设置桌面壁纸(ParentFolderName & "TranscodedWallpaper.jpg")
- End If
- If 显示或隐藏 = false Then //桌面黑屏
- If Plugin.File.IsFileExist(ParentFolderName & "TranscodedWallpaper.bak") = false Then //不存在原有壁纸备份
- Call Plugin.File.ReNameFile(ParentFolderName & "TranscodedWallpaper.jpg", ParentFolderName & "TranscodedWallpaper.bak")//重命名原有壁纸
- End If
- Call Plugin.File.CopyFile(脚本文件存放路径&"TranscodedWallpaper.jpg", ParentFolderName & "TranscodedWallpaper.jpg") //拷贝新黑屏壁纸
- 设置是否显示桌面壁纸 = 设置桌面壁纸(ParentFolderName & "TranscodedWallpaper.jpg")
- End If
- End Function
- Function 获取桌面壁纸()
- WallpaperPath = Space(255)
- If SystemParametersInfoW(115, 200, WallpaperPath, 0) <> 0 Then
- 获取桌面壁纸 = Left(WallpaperPath, InStr(WallpaperPath, ".jpg") + 3)
- Else
- 获取桌面壁纸 = ""
- End If
- End Function
- Function 设置桌面壁纸(path)
- 设置桌面壁纸 = SystemParametersInfoW(20, 0, path, 1)
- End Function
复制代码函数名:设置是否显示桌面图标 参数定义: 显示或隐藏 布尔型:true为显示,false为隐藏 返回值: 整数型:成功返回1,失败返回0。 - Function 设置是否显示桌面图标(显示或隐藏)
- 设置是否显示桌面图标 = 0
- Dim 桌面主区域窗口句柄,桌面主区域窗口句柄_其他, i
- 桌面主区域窗口句柄 = dm.FindWindowEx(0, "Progman", "")//第一层
- 桌面主区域窗口句柄 = dm.FindWindowEx(桌面主区域窗口句柄, "SHELLDLL_DefView", "")//第二层
- If 桌面主区域窗口句柄 = 0 Then //第二层查找失败
- 桌面主区域窗口句柄_其他 = dm.EnumWindow(0, "", "WorkerW", 2 + 4 + 8 + 16)//其他第一层
- If 桌面主区域窗口句柄_其他 <> "" Then
- 桌面主区域窗口句柄_其他 = Split(桌面主区域窗口句柄_其他, ",")
- For i = 0 To UBound(桌面主区域窗口句柄_其他)
- 桌面主区域窗口句柄 = dm.FindWindowEx(CLng(桌面主区域窗口句柄_其他(i)), "SHELLDLL_DefView", "") //其他第二层
- If 桌面主区域窗口句柄 <> 0 Then //其他第二层查找成功
- Exit For
- End If
- Next
- End If
- End If
- 桌面主区域窗口句柄 = dm.FindWindowSuper(桌面主区域窗口句柄, 4, 0, "SysListView32", 2, 0)//第三层
- If 桌面主区域窗口句柄 <> 0 Then
- If 显示或隐藏 = true Then
- Call dm.SetWindowState(桌面主区域窗口句柄, 7)//显示
- 设置是否显示桌面图标 = 1
- Else
- Call dm.SetWindowState(桌面主区域窗口句柄, 6)//隐藏
- 设置是否显示桌面图标 = 1
- End If
- End If
- End Function
复制代码函数名:设置是否显示托盘图标 参数定义: 显示或隐藏 布尔型:true为显示,false为隐藏。 返回值: 整数型:成功返回1,失败返回0。 - Function 设置是否显示托盘图标(显示或隐藏)
- 设置是否显示托盘图标 = 0
- Dim 托盘主区域窗口句柄
- 托盘主区域窗口句柄 = dm.FindWindowSuper("", 0, 0, "Shell_TrayWnd", 2, 0)
- If 托盘主区域窗口句柄 <> 0 Then
- 托盘主区域窗口句柄 = dm.FindWindowSuper(托盘主区域窗口句柄, 4, 0, "TrayNotifyWnd", 2, 0)
- If 托盘主区域窗口句柄 <> 0 Then
- 托盘主区域窗口句柄 = dm.FindWindowSuper(托盘主区域窗口句柄, 4, 0, "SysPager", 2, 0)
- If 托盘主区域窗口句柄 <> 0 Then
- If 显示或隐藏 = true Then
- Call dm.SetWindowState(托盘主区域窗口句柄, 7)//显示
- 设置是否显示托盘图标 = 1
- Else
- Call dm.SetWindowState(托盘主区域窗口句柄, 6)//隐藏
- 设置是否显示托盘图标 = 1
- End If
- End If
- End If
- End If
- Dim 托盘隐藏区域窗口句柄
- 托盘隐藏区域窗口句柄 = dm.FindWindowSuper("", 0, 0, "NotifyIconOverflowWindow", 2, 0)
- If 托盘隐藏区域窗口句柄 <> 0 Then
- 托盘隐藏区域窗口句柄 = dm.FindWindowSuper(托盘隐藏区域窗口句柄, 4, 0, "ToolbarWindow32", 2, 0)
- If 托盘隐藏区域窗口句柄 <> 0 Then
- If 显示或隐藏 = true Then
- Call dm.SetWindowState(托盘隐藏区域窗口句柄, 7)//显示
- 设置是否显示托盘图标 = 1
- Else
- Call dm.SetWindowState(托盘隐藏区域窗口句柄, 6)//隐藏
- 设置是否显示托盘图标 = 1
- End If
- End If
- End If
- End Function
复制代码函数名:简体繁体火星文互转 参数定义: 原内容 字符串型:待转换的内容 转换方式 整数型:1、简体转繁体 2、简体转火星 3、繁体转简体 4、繁体转火星 5、火星转简体 6、火星转繁体 返回值: 字符串型:转换后的内容 - Function 简体繁体火星文互转(原内容, 转换方式)
- Dim 简体字, 繁体字, 火星文
- 简体字 = dm.ReadFile(脚本文件存放路径 & "简体字.txt")
- 繁体字 = dm.ReadFile(脚本文件存放路径 & "繁体字.txt")
- 火星文 = dm.ReadFile(脚本文件存放路径 & "火星文.txt")
- Dim i,新内容,当前字符,字符位置,原文字,新文字
- 新内容 = ""
- Select Case 转换方式
- Case 1
- 原文字 = 简体字
- 新文字 = 繁体字
- Case 2
- 原文字 = 简体字
- 新文字 = 火星文
- Case 3
- 原文字 = 繁体字
- 新文字 = 简体字
- Case 4
- 原文字 = 繁体字
- 新文字 = 火星文
- Case 5
- 原文字 = 火星文
- 新文字 = 简体字
- Case 6
- 原文字 = 火星文
- 新文字 = 繁体字
- Case Else
- 简体繁体火星文互转 = 原内容
- Exit Function
- End Select
- For i = 1 To Len(原内容)
- 当前字符 = Mid(原内容, i, 1)
- 字符位置 = InStr(原文字, 当前字符)
- If 字符位置 > 0 Then
- 当前字符 = Mid(新文字, 字符位置, 1)
- End If
- 新内容 = 新内容 & 当前字符
- Next
- 简体繁体火星文互转 = 新内容
- End Function
复制代码函数名:设置自身进程内窗口是否允许被截图 参数定义: hwnd 整数型:窗口句柄 允许或禁止 布尔型:true为允许,false禁止。 返回值: 整数型:成功返回1,失败返回0。 - Function 设置自身进程内窗口是否允许被截图(hwnd, 允许或禁止)
- If 允许或禁止 = true Then
- 设置自身进程内窗口是否允许被截图 = SetWindowDisplayAffinity(hwnd, 0)
- Else
- 设置自身进程内窗口是否允许被截图 = SetWindowDisplayAffinity(hwnd, 1)
- End If
- End Function
复制代码注:窗口必须为顶层窗口,WIN7系统必须开启DWM(即性能选项中必须勾选“启用桌面组合”和“在窗口和按钮上使用视觉样式”),否则该函数无效,若中途DWM关闭,则该函数也会失效。 源文件: - test.zip (, 下载次数:245)
|