Rust 点鸡指定坐标



use windows::Win32::UI::Input::KeyboardAndMouse::*;
use windows::Win32::Foundation::*;
use windows::Win32::UI::WindowsAndMessaging::{GetSystemMetrics, SM_CXSCREEN, SM_CYSCREEN};

use std::time::Duration;
use std::thread::sleep;

fn main() {
    // 目标坐标(例如,点击屏幕上的坐标 x=500, y=300)
    let x = 500;
    let y = 300;

    unsafe {
        // 设置鼠标位置
        let mut input = INPUT {
            r#type: INPUT_MOUSE,
            Anonymous: INPUT_0 {
                mi: MOUSEINPUT {
                    dx: (x * 65536 / GetSystemMetrics(SM_CXSCREEN)) as i32,
                    dy: (y * 65536 / GetSystemMetrics(SM_CYSCREEN)) as i32,
                    mouseData: 0,
                    dwFlags: MOUSEEVENTF_ABSOLUTE | MOUSEEVENTF_MOVE,
                    time: 0,
                    dwExtraInfo: 0,
                },
            },
        };

        if SendInput(&[input], std::mem::size_of::<INPUT>() as i32) == 0 {
            println!("Failed to move the mouse: {:?}", GetLastError());
        }

        // 模拟鼠标左键按下
        input.Anonymous.mi.dwFlags = MOUSEEVENTF_LEFTDOWN;
        if SendInput(&[input], std::mem::size_of::<INPUT>() as i32) == 0 {
            println!("Failed to send mouse left button down: {:?}", GetLastError());
        }

        sleep(Duration::from_millis(100)); // 等待 100 毫秒

        // 模拟鼠标左键松开
        input.Anonymous.mi.dwFlags = MOUSEEVENTF_LEFTUP;
        if SendInput(&[input], std::mem::size_of::<INPUT>() as i32) == 0 {
            println!("Failed to send mouse left button up: {:?}", GetLastError());
        }
    }
}

[dependencies]
windows-sys="0.59.0"
#winapi = { version = "0.3.8", features = ["winuser","libloaderapi"] }

[dependencies.windows]
version = "0.58.0"
features = [
    "Win32_Foundation",
    "Win32_UI_WindowsAndMessaging",
    "Win32_UI_Input_KeyboardAndMouse",
    "Win32_Security",
    "Win32_System_Diagnostics",
    "Win32_System_Threading",
    "Win32_Graphics_Gdi",
    "Win32_System_LibraryLoader",
    "Win32_UI_WindowsAndMessaging",
    "Win32_System_Diagnostics_Debug",
]

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值