注册表工具类

注册表工具类


#pragma once #include <Windows.h> #include <string> class Registry { public: // 定义注册表值的类型枚举 enum class RegistryValueKind { None = REG
劫持窗口完成全屏渲染

劫持窗口完成全屏渲染


通过劫持NVIDIA GeForce或AMD Software的窗口,即可实现全屏渲染。 Overlay.h #pragma once #include <d2d1.h> #include <dwrite.h> #include <windows.h> class Overlay { publi
从剪贴板获得图片内容

从剪贴板获得图片内容


用到的库 opencv【v4.8.0】:用于解码剪贴板中的位图数据 openssl【v1.1.1】:用于对图片数据进行 base64 编码 代码 #include <Windows.h> #include <stdio.h> #include <opencv2/opencv.hpp> #includ
CMake管理多个小项目

CMake管理多个小项目


目录结构 {总项目目录}/ |-- {子项目目录}/ | |-- main.cpp |-- {子项目目录}/ | |-- main.cpp |-- CMakeLists.txt ``` ## CMakeLists.txt ```cmake cmake_minimum
C++获取指定进程命令行参数

C++获取指定进程命令行参数


可以使用 WMI 获取指定进程的输入命令行。 代码示例: bool SelectQuerySQL(LPCWSTR SQL, LPCWSTR Key, OUT char* outBuf, IN size_t bufSize) { HRESULT hRes; CoUninitializ
CEF源码再编译支持MP4格式

CEF源码再编译支持MP4格式


准备工作 1、寻找自己需要的CEF版本,这里Branch为4389,commit为b36241d 参考链接:chromiumembedded / cef / wiki / BranchesAndBuilding — Bitbucket
解决代码自映射后无法调试 & inline hook【Self-Remapping Code】

解决代码自映射后无法调试 & inline hook【Self-Remapping Code】


前言 在一次汉化游戏的过程中,遇见了游戏的CRC校验。笔者想过掉该CRC检测,而由于游戏的代码是通过自映射后的内存区域,无法利用VirtualProtect函数进行修改。所以有了本文记录~ 0x1 如何判断代码用了自映射 判断的方法有以下几点要素: 游戏没有驱动级保护【事无绝对,可能有也会用到此技术
PID控制器

PID控制器


基础解释: P:基础运动量(移动速度) I:增幅器(修正误差) D:抑制器(阻止超出目标) 各个参数过大过小情况 P参数 过小:不能达到目标 过大:超出目标,表现为抖动或脱离控制 I参数 过小:不能到目标,小偏差不能回正,还可能出现颤抖现象 过大:很容易超出目标,表现为系统迟钝,晃动 D参数 过小:
Windows亚克力特效代码实现

Windows亚克力特效代码实现


防止失效,拷贝一份。 #include <windows.h> #include <dwmapi.h> // 定义一个枚举类型,表示不同的窗口组合状态 enum AccentState { ACCENT_DISABLED = 0, ACCENT_ENABLE_GRADIENT =
EnumWindows问题

EnumWindows问题


笔者在日常开发中用到一种场景,该场景是启动一个子线程,在该线程里循环查找指定窗口是否存在。 里面用到了EnumWindows、GetClassName和GetWindowText的API。 从而引发了一个线程无法正常退出,使用WaitForSingleObject等待线程结束将永远无法结束的问题。