avatar
Articles
287
Tags
106
Categories
25

Theqiqi_blog
Search

Theqiqi_blog

4.1在dll中对raylib渲染函数进行Hook加载搜索框
Created2024-03-28|graphi_with_draw|C++•raylib•graphi
Hook raylib关键函数DLL 劫持(Hook) EndDrawing 函数。 强行注入思路如果你想这个搜索框注入到别人的 raylib 程序里: 需要用到 CreateRemoteThread。 需要找到主程序调用 EndDrawing 的内存地址。 需要把那个地址的指令跳转(JMP)到你的 DLL 函数地址。 raylib主程序main.cpp 12345678910111213141516171819202122232425262728#define RAYGUI_IMPLEMENTATION#include "raylib.h"#ifndef _DEBUG#pragma comment(lib, "raylib.lib")#pragma comment(lib, "winmm.lib")// #pragma comment(lib, "opengl32.lib")// #pragma comment(lib, "gdi32.lib")// #pragma comment ...
3.主程序预留接口搜索框写成dll注入
Created2024-03-28|graphi_with_draw|C++•raylib•graphi
1. 核心原理要实现“注入并显示”,DLL 必须能把自己挂载到主程序的渲染循环里。在 raylib 中,由于它是顺序执行的,最简单的“注入”方式是: 主程序提供一个入口(类似一个“插件槽位”)。 2. DLL 端代码:searchbox_dll.cpp1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071#include "IPlugin.h"#include <vector>// 插件内部私有变量(被封存在 DLL 内存空间中)static char inputText[64] = { 0 };static int letterCount = 0;static bool active = false;// --- 接口实现函数 ---void SearchOnInit() { // 可以在这里初始化资源, ...
2.ray实现搜索框架
Created2024-03-28|graphi_with_draw|C++•raylib•graphi
在 raylib 中实现搜索框,主要需要解决三个问题:键盘输入捕捉、光标闪烁动画、以及文本溢出处理。 1. 核心逻辑:即时模式输入搜索框的本质是一个字符串。每一帧,你都要检查键盘是否有按键被按下,并将其追加到字符串末尾。 2. 代码实现示例这段代码演示了如何创建一个带圆角阴影、支持退格键(Backspace)和动态光标的现代搜索框。 C++ 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586#include "raylib.h"#include <string.h>int main() { InitWindow(800, 450, "Raylib Search Box"); // 搜索框状态 char inputText[64] = & ...
1.ray实现桌面挂件
Created2024-03-28|graphi_with_draw|C++•raylib•graphi
实现一个现代桌面挂件的代码。它具备以下特性: 无边框与全透明:图片像直接贴在桌面上一样。 鼠标拖动:因为去掉了系统边框,我们手动实现点击图片即可拖拽。 圆角处理:利用 Shader 实时裁剪图片为圆角。 置顶显示:永远浮在其他窗口上方。 1. 准备工作请确保目录下有一张名为 image.png 的图片,并创建一个 mask.fs 文件用于圆角裁剪: mask.fs (圆角裁剪着色器) OpenGL Shading Language 123456789101112131415#version 330in vec2 fragTexCoord;out vec4 finalColor;uniform sampler2D texture0;uniform float roundness; // 0.0 到 0.5void main() { vec2 p = fragTexCoord - vec2(0.5); vec2 q = abs(p) - vec2(0.5 - roundness); float dist = length(max(q, 0.0)) + min ...
13.linux下使用cmake与preset构建cpp项目
Created2024-03-04|cmake|cmake•C++•linux
.linux下使用cmake与preset构建cpp项目1.main.cpp12345678910111213#include <iostream>int main(){ auto lang = "C++"; std::cout << "Hello and welcome to " << lang << "!\n"; for (int i = 1; i <= 5; i++) { std::cout << "i = " << i << std::endl; } return 0;} CMakeLists.txt12345678910111213cmake_minimum_required(VERSION 3.31)project(preset1 VERSION 0.1 LANGUAGES CXX C)set(CMAKE_CXX_STAN ...
12.使用cmake构建vcpkg管理的opencv库
Created2024-03-04|cmake|cmake•C++•opencv•vcpkg
1.使用vcpkg安装opencv库1./vcpkg install opencv:x64-windows --head --clean-after-build 2.在cmake中引入vcpkg管理的qt6静态库1.main.cpp12345678910#include <QCoreApplication>int main(int argc, char *argv[]){ QCoreApplication a(argc, argv); qDebug("hello,world\n"); qDebug() << "hi:" << "see you"; return a.exec();} 2.cmakelists.txt1234567891011121314151617181920212223242526272829303132cmake_minimum_required(VERSION 3.16)# 移除或修改三元组:改为动态版本 x64- ...
11.cmake使用ninja配合配置构建qt程序
Created2024-03-04|cmake|cmake•C++•Qt6•GUI•Ninja
cmake使用ninja配合配置构建qt程序1.控制台程序1.src/main.cpp1234567891011#include <QCoreApplication>#include <qDebug>int main(int argc, char *argv[]){ QCoreApplication a(argc, argv); qDebug("hello,world\n"); qDebug() << "hi:" << "see you"; return a.exec();} 2.CMakeLists.txt123456789101112131415161718192021222324252627282930cmake_minimum_required(VERSION 3.24.0)# 设置项目名称和版本project(MyQtApp VERSION 0.1 LANGUAGES CXX)#系统变量中没有Qt目录需要添加路径o ...
10.cmake使用不同编译器
Created2024-03-04|cmake|c•cmake•compile
使用不同编译器强制使用命令行选择编译器123456789101112131415161718# 强制使用 Clangcmake -S . -B build -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang# 强制使用 GCC (确保已经在环境变量中)cmake -G "MinGW Makefiles" -DCMAKE_C_COMPILER=gcc -DCMAKE_CXX_COMPILER=g++# 强制使用 msvc# 方式 A:使用默认的 Visual Studio 生成器(生成 .sln 工程)cmake -S . -B build_msvc -G "Visual Studio 17 2022" -A x64# 方式 B:使用 Ninja 生成器(更推荐,速度更快,但需要进入“开发者命令提示符”)cmake -G "Ninja" -S . -B build_msvc -DCMAKE_C_COMPILER=cl.exe -DCMAKE_CXX_COMPILER=cl.ex ...
9.cmake编译静态库与动态库
Created2024-03-04|cmake|c•cmake•lib
1使用cmake编译静态库项目结构12345678910111213│ CMakeLists.txt│├─out│ └─build│ └─x64-debug├─ProjectA│ CMaKeLists.txt│ main.cpp│└─ProjectB_lib CMakeLists.txt ProjectB.cpp ProjectB.h 根目录文件CMakeLists.txt1234567891011121314151617181920cmake_minimum_required(VERSION 3.15)project(MultiProjectSolution)# --- 1. MSVC 特殊优化配置 ---if (MSVC) # 开启多核并行编译 add_compile_options(/MP) # 智能调试信息格式策略 (CMP0141) if (POLICY CMP0141) cmake_policy(SET CMP0141 NEW) set( ...
8.cmake使用vcpkg在vs2022中链接gtest库
Created2024-03-04|cmake|c•cmake•raylib
gtest在vs2022中使用cmake添加vcpkg管理的gtest库1.在CMakePresets.json中添加配置 123"cacheVariables": { "CMAKE_TOOLCHAIN_FILE": "C:/D/test/CC++/cc++lib/vcpkg/vcpkg/scripts/buildsystems/vcpkg.cmake"} 项目结构1234567891011121314151617181920│ CMakeLists.txt│ CMakePresets.json│├─CMakeProject2│ CMakeLists.txt│ CMakeProject2.cpp│ MyClass.cpp│ MyClass.h│├─CMakeProject3│ CMakeLists.txt│ CMakeProject3.cpp│├─out│ └─build└─unit_tests CMakeLists.txt ...
1…222324…29
avatar
Theqiqi
Articles
287
Tags
106
Categories
25
Follow Me
Announcement
This is my Blog
Recent Post
101.使用Grop网站提供的api2026-01-03
光猫开telnet与配置2025-04-13
9.压测2025-03-27
8.Linux Socket并发模型http服务器2025-03-27
7.web服务器中收发REST接口2025-03-27
Categories
  • C with Socks16
  • C_Sound10
  • C_Windows_Graphi9
  • Cpp5
  • Cpp_Socket4
  • C语言在Windows中实现抓包4
  • C语言的万种用法9
  • Debian1
Tags
lib Graphi sql graphi Ninja epoll jsp mysql android Sound Hacking UltraISO qemu WindowsDriver javascript GUI OperatingSystem Python Websocket Capture Socket assembly Ethernet Makefile Socks compiled glfw3 nasm rufus linux WindowsDrive link system x86汇编程序 c first pragram Linux OpenGl UDP vcpkg
Archives
  • January 20261
  • April 20251
  • March 202595
  • February 202523
  • September 20242
  • August 202471
  • June 20242
  • March 202443
Info
Article :
287
UV :
PV :
Last Update :
©2020 - 2026 By Theqiqi
Framework Hexo|Theme Butterfly
Search
Loading the Database