我正在开发一个涉及键盘挂钩的 c++ win32 程序。该应用程序是一个没有任何用户界面的 win32 项目。我需要阻止应用程序关闭而不使用导致挂钩不起作用或耗尽大量系统资源。我曾经使用消息框,但我需要应用程序完全不可见。
任何帮助,将不胜感激!
如果你有问题,就问吧。
我认为您需要的是仅消息窗口
(MSDN 说)只有消息的窗口使您能够发送和接收消息。它不可见,没有 z 顺序,无法枚举,并且不接收广播消息。窗口只是发送消息。
你真的需要窗户吗?MSDN LowLevelKeyboardProc 页面建议使用简单的消息循环。只需在钩子调用之后插入此代码段即可。
// message loop to keep the keyboard hook running
MSG msg;
while(GetMessage(&msg, NULL, 0, 0) > 0)
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
更好的方法是添加一个不断循环的循环。
bool shouldExit = false;
do
{
//some code to handle events
shouldExit = handleEvents();
//sleep for a small bit so we dont take up 100% cpu
sleep(500);
}
while (!shouldExit);