Rust で win32api、WH_KEYBOARD_LL をフックするときにハマった
windows クレートを使用した
windows クレートに関する情報は0。本当になかった。
知識もなかった。詰み。
ただ所詮は win32api のラッパー、
似たようなコードになると推測し C++ のコードを元に @CSJSC と書いていった。
コードの記録#1
code:main.rs
use windows::Win32::{Foundation::*, UI::WindowsAndMessaging::*};
fn main() {
unsafe {
let hook = SetWindowsHookExA(WH_KEYBOARD_LL, Some(ll_keyboard_proc), std::ptr::null_mut(), 0);
}
}
extern "system" fn ll_keyboard_proc(code: i32, wparam: WPARAM, lparam: LPARAM) -> LRESULT {
LRESULT::default()
}
(見たウェブサイト)
エラー!hmod に正しいものを入れろ!
winapi では hInstance はこれでいいらしい。が、windows ではそうはいかなくて、isize を渡さなければいけない。
詰み。1-2時間は同じコードでした。
ただこれは解決。サンプル探したら instance GetModuleHandleA(None) で定義してたのでそのまま使用。
頭がわるい?お前それサバンナでも同じ事言えんの?
コードの記録#2
code:main.rs