Базовая служба регистрации ключей не может регистрировать ключи в рабочем потоке

Недавно я попытался попробовать свои силы в службах программирования, начиная с простого регистратора ключей. Оригинальный код очень сырой, но работает, если текущее окно сфокусировано. Проблема началась, когда я попытался облегчить эту проблему, добавив регистратор в службу. Однако я хочу регистрировать ключи без использования хуков. Вот рабочая нить:

    DWORD WINAPI ServiceWorkerThread(LPVOID lpParam){
std::ofstream           File("Info.txt");
char                    C = 0;
// Periodically check if the service has been requested to stop
while (WaitForSingleObject(g_ServiceStopEvent, 0) != WAIT_OBJECT_0){
if(kbhit()){
C = getch();
File.open("Info.txt", std::fstream::out | std::fstream::app);
File << C;
File.close();
Sleep(100);
//The thread needs to sleep so that it won't eat CPU
//Additionally people cannot type as fast as a computer can process data
}
}
return ERROR_SUCCESS;
}

Весь остальной код просто запускает и обрабатывает сервис.

-1

Решение

Однако я хочу регистрировать ключи без использования хуков.

Извините, но в сервисе вы иметь использовать хук клавиатуры, иначе он не сможет обнаружить ввод пользователя, так как это невизуальный процесс, работающий в фоновом режиме. Пользователь не может вводить ничего, что непосредственно связано со службой.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]