fix transmute crash
This commit is contained in:
parent
27de5b6971
commit
4c9dadc41a
@ -21,19 +21,21 @@ static mut LAYOUT: HKL = std::ptr::null_mut();
|
|||||||
pub const ENIGO_INPUT_EXTRA_VALUE: ULONG_PTR = 100;
|
pub const ENIGO_INPUT_EXTRA_VALUE: ULONG_PTR = 100;
|
||||||
|
|
||||||
fn mouse_event(flags: u32, data: u32, dx: i32, dy: i32) -> DWORD {
|
fn mouse_event(flags: u32, data: u32, dx: i32, dy: i32) -> DWORD {
|
||||||
let mut input = INPUT {
|
let mut input: INPUT = unsafe { std::mem::MaybeUninit::zeroed().assume_init() };
|
||||||
type_: INPUT_MOUSE,
|
input.type_ = INPUT_MOUSE;
|
||||||
u: unsafe {
|
unsafe {
|
||||||
transmute(MOUSEINPUT {
|
let dst_ptr = (&mut input.u as *mut _) as *mut u8;
|
||||||
dx,
|
let m = MOUSEINPUT {
|
||||||
dy,
|
dx,
|
||||||
mouseData: data,
|
dy,
|
||||||
dwFlags: flags,
|
mouseData: data,
|
||||||
time: 0,
|
dwFlags: flags,
|
||||||
dwExtraInfo: ENIGO_INPUT_EXTRA_VALUE,
|
time: 0,
|
||||||
})
|
dwExtraInfo: ENIGO_INPUT_EXTRA_VALUE,
|
||||||
},
|
};
|
||||||
};
|
let src_ptr = (&m as *const _) as *const u8;
|
||||||
|
std::ptr::copy_nonoverlapping(src_ptr, dst_ptr, std::mem::size_of::<MOUSEINPUT>());
|
||||||
|
}
|
||||||
unsafe { SendInput(1, &mut input as LPINPUT, size_of::<INPUT>() as c_int) }
|
unsafe { SendInput(1, &mut input as LPINPUT, size_of::<INPUT>() as c_int) }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user