change how vks are stored
This commit is contained in:
@@ -1,11 +1,12 @@
|
||||
use crate::util::{self, consts::game::WINDOW_TITLE};
|
||||
use std::time::{Duration, Instant};
|
||||
use windows::Win32::UI::Input::KeyboardAndMouse::{
|
||||
KEYBD_EVENT_FLAGS, MAP_VIRTUAL_KEY_TYPE, MapVirtualKeyW, VK_NUMPAD4, VK_NUMPAD6, keybd_event,
|
||||
KEYBD_EVENT_FLAGS, MAP_VIRTUAL_KEY_TYPE, MapVirtualKeyW, VIRTUAL_KEY, VK_NUMPAD4, VK_NUMPAD6,
|
||||
keybd_event,
|
||||
};
|
||||
|
||||
pub const INTERVAL: Duration = Duration::from_secs(60);
|
||||
const PRESS_KEYS: [u8; 2] = [VK_NUMPAD4.0 as u8, VK_NUMPAD6.0 as u8];
|
||||
const PRESS_KEYS: [VIRTUAL_KEY; 2] = [VK_NUMPAD4, VK_NUMPAD6];
|
||||
|
||||
#[derive(Debug)]
|
||||
pub struct AntiAfk {
|
||||
@@ -36,17 +37,25 @@ pub fn can_activate() -> bool {
|
||||
is_window_focused(WINDOW_TITLE) && !is_any_key_pressed(&PRESS_KEYS) && !is_cursor_visible()
|
||||
}
|
||||
|
||||
pub fn send(vk_codes: &[u8]) {
|
||||
vk_codes.iter().for_each(|vk_code: &u8| unsafe {
|
||||
pub fn send(vk_codes: &[VIRTUAL_KEY]) {
|
||||
vk_codes.iter().for_each(|vk_code| unsafe {
|
||||
keybd_event(
|
||||
*vk_code,
|
||||
u8::try_from(MapVirtualKeyW(u32::from(*vk_code), MAP_VIRTUAL_KEY_TYPE(0))).unwrap(),
|
||||
vk_code.0 as u8,
|
||||
u8::try_from(MapVirtualKeyW(
|
||||
u32::from(vk_code.0),
|
||||
MAP_VIRTUAL_KEY_TYPE(0),
|
||||
))
|
||||
.unwrap(),
|
||||
KEYBD_EVENT_FLAGS(0),
|
||||
0,
|
||||
);
|
||||
keybd_event(
|
||||
*vk_code,
|
||||
u8::try_from(MapVirtualKeyW(u32::from(*vk_code), MAP_VIRTUAL_KEY_TYPE(0))).unwrap(),
|
||||
vk_code.0 as u8,
|
||||
u8::try_from(MapVirtualKeyW(
|
||||
u32::from(vk_code.0),
|
||||
MAP_VIRTUAL_KEY_TYPE(0),
|
||||
))
|
||||
.unwrap(),
|
||||
KEYBD_EVENT_FLAGS(2),
|
||||
0,
|
||||
);
|
||||
|
||||
+3
-3
@@ -4,7 +4,7 @@ use windows::{
|
||||
Security::{GetTokenInformation, TOKEN_ELEVATION, TOKEN_QUERY, TokenElevation},
|
||||
System::Threading::{GetCurrentProcess, OpenProcessToken},
|
||||
UI::{
|
||||
Input::KeyboardAndMouse::GetAsyncKeyState,
|
||||
Input::KeyboardAndMouse::{GetAsyncKeyState, VIRTUAL_KEY},
|
||||
Shell::ShellExecuteW,
|
||||
WindowsAndMessaging::{
|
||||
CURSOR_SHOWING, CURSORINFO, GetCursorInfo, GetForegroundWindow, GetWindowTextW,
|
||||
@@ -41,9 +41,9 @@ pub fn is_window_focused(target_title: &str) -> bool {
|
||||
}
|
||||
}
|
||||
|
||||
pub fn is_any_key_pressed(keys: &[u8]) -> bool {
|
||||
pub fn is_any_key_pressed(keys: &[VIRTUAL_KEY]) -> bool {
|
||||
keys.iter()
|
||||
.any(|&key| unsafe { (GetAsyncKeyState(i32::from(key)) & i16::MIN) != 0 })
|
||||
.any(|&key| unsafe { (GetAsyncKeyState(i32::from(key.0)) & i16::MIN) != 0 })
|
||||
}
|
||||
|
||||
pub fn elevate(closing: ElevationExitMethod) {
|
||||
|
||||
Reference in New Issue
Block a user