не допускать закрытия бесформенного приложения для подключения клавиатуры - PullRequest
1 голос
/ 24 декабря 2008

Я работаю над Win32-программой на c ++, которая включает в себя хук клавиатуры. Приложение представляет собой проект win32 без какого-либо пользовательского интерфейса. Мне нужно, чтобы приложение не закрывалось без использования перехвата или использования системных ресурсов. Раньше я использовал окно сообщения, но мне нужно, чтобы приложение было полностью невидимым.

Любая помощь будет оценена!

Если у вас есть какие-либо вопросы, просто задавайте.

Ответы [ 3 ]

7 голосов
/ 24 декабря 2008

Я думаю, что вам нужно окно только сообщения

( MSDN говорит ) Окно только для сообщений позволяет отправлять и получать сообщения. Он не виден, не имеет z-порядка, не может быть перечислен и не принимает широковещательные сообщения. Окно просто отправляет сообщения.

0 голосов
/ 10 декабря 2010

Вам действительно нужны окна? На странице MSDN LowLevelKeyboardProc рекомендуется использовать простой цикл обработки сообщений. Просто вставьте этот фрагмент после вызова ловушки.

// message loop to keep the keyboard hook running
MSG msg;
while(GetMessage(&msg, NULL, 0, 0) > 0)
{
    TranslateMessage(&msg);
    DispatchMessage(&msg);
}
0 голосов
/ 24 декабря 2008

Лучшим способом было бы добавить цикл, который постоянно повторяется.

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