【发布时间】:2014-06-09 21:44:05
【问题描述】:
我正在编写一个使用 Win32 API WH_KEYBOARD 钩子的应用程序,这样它就可以在没有焦点的情况下被激活(即显示在前台)。回调自然是一个函数指针(HOOKPROC 类型)。 WH_KEYBOARD 和 WH_KEYBOARD_LL 的许多文档都说回调必须驻留在 DLL 中并且不能直接在 EXE 中,但是我发现在 Windows XP 及更高版本中并非如此,所以我认为这是一个历史怪癖。
应用程序是用 Go 编写的。我知道(并为)github.com/AllenDang/w32 做出了贡献,但我没有看到任何可用于处理函数指针的东西。由于 goroutines 的结构,这甚至可能吗?我知道从 Go 调用 C 很简单,但是对于像这样的回调函数指针有什么作用呢?
现在我的任务是编写一个通过标准输出发送消息的 EXE,单独编译它,使用 go-bindata 包含它,并在运行时将它写入一个临时文件并执行它,而一个 goroutine 监视该进程的标准输出。它让我畏缩。请告诉我有一种更好的方法,无需使用外部进程和糟糕的 IPC 黑客。
【问题讨论】:
标签: c windows winapi go keyboard-hook