保持一个无形的应用程序关闭键盘钩子

时间:2008-12-24 05:02:10

标签: c++ winapi keyboard hook

我正在研究一个涉及键盘钩子的c ++ win32程序。该应用程序是一个win32项目,没有任何用户界面。我需要保持应用程序不关闭而不使用挂钩不工作或耗尽大量系统资源。我曾经使用过消息框,但我需要应用程序完全不可见。

任何帮助将不胜感激!

如果您有任何问题,请询问。

3 个答案:

答案 0 :(得分:7)

我认为您需要的是message only window

  

MSDN说 )仅限消息窗口可让您发送和接收消息。它不可见,没有z顺序,无法枚举,也不接收广播消息。该窗口只是发送消息。

答案 1 :(得分:0)

你真的需要窗户吗? MSDN LowLevelKeyboardProc page建议使用简单的消息循环。 只需在挂钩调用后插入此代码段即可。

// message loop to keep the keyboard hook running
MSG msg;
while(GetMessage(&msg, NULL, 0, 0) > 0)
{
    TranslateMessage(&msg);
    DispatchMessage(&msg);
}

答案 2 :(得分:-3)

更好的方法是添加一个循环的循环。

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);