【问题标题】:Can't figure out how to use SetWindowsHookEx within Dart using ffi无法弄清楚如何使用 ffi 在 Dart 中使用 SetWindowsHookEx
【发布时间】:2020-07-08 09:55:01
【问题描述】:

我想在用户每次按键时使用 SetWindowsHookEx 调用一个函数

最接近我想要做的是键盘记录器

我从GiacomoLaw/Keyloggertimsneath/win32/blob/master/example/tetris 的这些项目中得到启发

我几乎没有使用 winapi 或 c++ 的经验,我正在学习 dart

抱歉我的代码乱七八糟,重要的填充物是main.dartlib/native_functions/SetWindowsHookEx.dartlib/native_functions/GetModuleHandle.dartlib/native_functions/CallNextHookEx.dart

这是zip file

【问题讨论】:

  • 你应该尝试要求更具体的行动。你不能只问“我想要这个,帮我修好”。如果您对 winapi 不熟悉,也许您应该首先尝试制作一个小型 Windows 应用程序,以便您在尝试使用 ffi 将其连接到 dart 之前习惯该 api。 FFI 部分让你更难理解 api。
  • @Rene 我修复了它,哈哈,今天晚些时候会发布修复
  • 你能发布一个答案来结束这个帖子吗?这将对其他社区有益。
  • 我完全忘记了这个
  • 将在今天晚些时候添加完整的答案,基本上你只需要 GetMessage 循环 while(GetMessage(..)),

标签: windows winapi dart ffi


【解决方案1】:

我刚刚添加了这个

hhook = SetWindowsHookEx(WH_KEYBOARD_LL, lpfn, hmod, 0);

// more code above ^
// i added this
final MSG msg = MSG.allocate();

while (GetMessage(msg.addressOf, 0, 0, 0) != 0) {
  TranslateMessage(msg.addressOf);
  DispatchMessage(msg.addressOf);
}

别忘了为GetMessageTranslateMessageDispatchMessage编写绑定

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-17
    • 2011-02-08
    相关资源
    最近更新 更多