2
화면 보호기 이벤트를 잡으려고합니다. 내 코드는 다음과 같습니다.화면 보호기 이벤트 잡기
#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 : 모듈 핸들없이 비 로컬 후크를 설정할 수 없습니다
뭐야 내가 잘못하고 있어요 그것은 코드를 반환? 감사합니다.
Windows에 이전 API 호출이 실패한 이유에 대한 자세한 정보를 얻기 위해 GetLastError 함수 (또는 이와 비슷한 함수)가 없습니까? 너 그거 해봤 니? – Mat
@Mat - 시도해 보겠습니다 ... – Sanich
메시지 루프도 절반 정도 인 것처럼 보입니다. – Benj