【问题标题】:How to use windows-sys to set a global hook for mouse click如何使用windows-sys设置鼠标点击的全局钩子
【发布时间】:2022-12-21 18:18:07
【问题描述】:

我是生锈的初学者

现在我正在使用 windows-sys 为鼠标点击设置一个钩子

windows-sys 提供了一个名为 SetWindowsHookA 的函数,如下所示

#[doc = "*Required features: `\"Win32_UI_WindowsAndMessaging\"`, `\"Win32_Foundation\"`*"]
    #[cfg(feature = "Win32_Foundation")]
    pub fn SetWindowsHookA(nfiltertype: i32, pfnfilterproc: HOOKPROC) -> HHOOK;

我在文档中发现我可以使用这种方法来设置一个钩子

但是这个函数需要一个 HOOKPROC 参数

我不知道如何获得这样的参数

谁能帮我?

【问题讨论】:

    标签: winapi rust


    【解决方案1】:

    我想你说的是SetWindowsHookExA。并且对应的是windows-sys documentation

    use windows_sys::Win32::UI::WindowsAndMessaging::{SetWindowsHookA, UnhookWindowsHookEx};
    
    const WH_MOUSE: i32 = 7;
    
    fn main() {
        unsafe {
            let hook_id =
                SetWindowsHookExA(WH_MOUSE, Some(hook_callback), 0, 0);
        }
    }
    

    HOOKPROC 参数如下所示:

    extern "system" fn hook_callback(code: i32, wparam: usize, lparam: isize) -> isize {
        0
    }
    

    还记得在完成后使用UnhookWindowsHookEx(hook_id); 取消挂钩。除此之外,代码应该看起来类似于任何有关挂钩的 C/C++ 教程。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-01-11
      • 1970-01-01
      • 2013-01-04
      • 2011-03-19
      • 1970-01-01
      • 2015-01-30
      • 1970-01-01
      相关资源
      最近更新 更多