hudhook
0.8.0
ไลบรารี hook ตัวเรนเดอร์ Rust สำหรับสร้างโอเวอร์เลย์ Dear ImGui
ปัจจุบันรองรับ DirectX 9, DirectX 11, DirectX 12 และ OpenGL 3 ทำงานบน Windows และ Wine/Proton
หากคุณชอบ hudhook
และต้องการสนับสนุนโปรเจ็กต์นี้ คุณสามารถทำได้ผ่าน Patreon ของฉัน
ฉันดีใจที่โครงการนี้เหมาะกับคุณและขอขอบคุณสำหรับการสนับสนุนของคุณ ขอบคุณ!
// src/lib.rs
use hudhook :: * ;
pub struct MyRenderLoop ;
impl ImguiRenderLoop for MyRenderLoop {
fn render ( & mut self , ui : & mut imgui :: Ui ) {
ui . window ( "My first render loop" )
. position ( [ 0. , 0. ] , imgui :: Condition :: FirstUseEver )
. size ( [ 320. , 200. ] , imgui :: Condition :: FirstUseEver )
. build ( || {
ui . text ( "Hello, hello!" ) ;
} ) ;
}
}
{
// Use this if hooking into a DirectX 9 application.
use hudhook :: hooks :: dx9 :: ImguiDx9Hooks ;
hudhook ! ( ImguiDx9Hooks , MyRenderLoop ) ;
}
{
// Use this if hooking into a DirectX 11 application.
use hudhook :: hooks :: dx11 :: ImguiDx11Hooks ;
hudhook ! ( ImguiDx11Hooks , MyRenderLoop ) ;
}
{
// Use this if hooking into a DirectX 12 application.
use hudhook :: hooks :: dx12 :: ImguiDx12Hooks ;
hudhook ! ( ImguiDx12Hooks , MyRenderLoop ) ;
}
{
// Use this if hooking into an OpenGL 3 application.
use hudhook :: hooks :: opengl3 :: ImguiOpenGl3Hooks ;
hudhook ! ( ImguiOpenGl3Hooks , MyRenderLoop ) ;
}
// src/main.rs
use hudhook :: inject :: Process ;
fn main ( ) {
let mut cur_exe = std :: env :: current_exe ( ) . unwrap ( ) ;
cur_exe . push ( ".." ) ;
cur_exe . push ( "libmyhook.dll" ) ;
let cur_dll = cur_exe . canonicalize ( ) . unwrap ( ) ;
Process :: by_name ( "MyTargetApplication.exe" ) . unwrap ( ) . inject ( cur_dll ) . unwrap ( ) ;
}