38 lines
876 B
Plaintext
38 lines
876 B
Plaintext
// rustc 0.9 (7613b15 2014-01-08 18:04:43 -0800)
|
|
|
|
use std::libc::{BOOL, HANDLE, LONG};
|
|
use std::ptr::mut_null;
|
|
|
|
type HWND = HANDLE;
|
|
|
|
#[deriving(Eq)]
|
|
struct POINT {
|
|
x: LONG,
|
|
y: LONG
|
|
}
|
|
|
|
#[link_name = "user32"]
|
|
extern "system" {
|
|
fn GetCursorPos(lpPoint:&mut POINT) -> BOOL;
|
|
fn GetForegroundWindow() -> HWND;
|
|
fn ScreenToClient(hWnd:HWND, lpPoint:&mut POINT);
|
|
}
|
|
|
|
fn main() {
|
|
let mut pt = POINT{x:0, y:0};
|
|
loop {
|
|
std::io::timer::sleep(100); // sleep duration in milliseconds
|
|
|
|
let pt_prev = pt;
|
|
unsafe { GetCursorPos(&mut pt) };
|
|
if pt != pt_prev {
|
|
let h = unsafe { GetForegroundWindow() };
|
|
if h == mut_null() { continue }
|
|
|
|
let mut pt_client = pt;
|
|
unsafe { ScreenToClient(h, &mut pt_client) };
|
|
println!("x: {}, y: {}", pt_client.x, pt_client.y);
|
|
}
|
|
}
|
|
}
|