Поймать событие заставки

Я пытаюсь поймать событие заставки. Это мой код:

#include "stdafx.h"#include <iostream>
#include "stdio.h"
#include <Windows.h>HHOOK _hook;

LRESULT CALLBACK HookCallback(int nCode, WPARAM wParam, LPARAM lParam)
{
if (nCode >= 0)
{LPMSG msg = (LPMSG)lParam;

if(msg->message == WM_SYSCOMMAND)
{
if (msg->wParam == SC_SCREENSAVE)
{
std::cout<<"SC_SCREENSAVE\n";
}
}

}

return CallNextHookEx(_hook, nCode, wParam, lParam);
}

void SetHook()
{

if (!(_hook = SetWindowsHookEx(WH_GETMESSAGE, HookCallback,NULL , 0)))
{
std::cout<<"Failed to install hook!\n";
}
}

void ReleaseHook()
{
UnhookWindowsHookEx(_hook);
}int _tmain(int argc, _TCHAR* argv[])
{

SetHook();

MSG msg;
while (GetMessage(&msg, NULL, 0, 0))
{

}

ReleaseHook();

return 0;
}

Функция SetWindowsHookEx(WH_GETMESSAGE, HookCallback,NULL , 0) выходит из строя. Возвращает код:

ошибка 1428: невозможно установить нелокальный хук без дескриптора модуля

.Что я делаю неправильно?
Спасибо!

2

Решение

Общесистемные хуки требуют, чтобы приложение имело повышенный доступ.
Вам нужно запустить свой код от имени администратора.

Может быть, вам будет интересно этот вопрос ответ.

0

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

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

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