keyboard_win 0.1.1

A mini tools for Windows keyboard by winapi
use std::ffi::CString;
use std::thread::sleep;
use winapi::shared::windef;
use winapi::um::winuser::{FindWindowA, PostMessageA,  VK_F5, WM_KEYDOWN, WM_KEYUP};

pub fn get_hwnd_by_win_title(title: CString) -> windef::HWND {
    unsafe { FindWindowA(std::ptr::null(), title.as_ptr()) }
}

pub fn key_down(hwnd: windef::HWND, key: usize) {
    unsafe {
        PostMessageA(hwnd, WM_KEYDOWN, key, 0);
    }
}

pub fn key_up(hwnd:windef::HWND,key:usize){
    unsafe {
        PostMessageA(hwnd, WM_KEYUP, key, 0);
    }
}

pub fn key_press(hwnd: windef::HWND, key: usize) {
    unsafe {
        PostMessageA(hwnd, WM_KEYDOWN, key, 0);
        sleep(std::time::Duration::from_millis(100));
        PostMessageA(hwnd, WM_KEYUP, key, 0);
    }
}



#[cfg(test)]
mod keyboard_tests {
    use super::*;
    use std::ffi::CString;

    #[test]
    fn get_hwnd_by_title() {
        let hwnd = get_hwnd_by_win_title(CString::new("123.txt - Notepad").unwrap());
        print!("{:?}", hwnd);
        assert_eq!(hwnd, std::ptr::null_mut());
    }

    #[test]
    fn test_key_down() {
        let hwnd = get_hwnd_by_win_title(CString::new("123.txt - Notepad").unwrap());
        print!("{:?}", hwnd);
        key_down(hwnd,VK_F5 as usize);
    }
}