2
화면 보호기 이벤트를 잡으려고합니다. 내 코드 :화면 보호기 이벤트를 수신 할 수 없습니다.
#include "stdafx.h"
#include <iostream>
#include "stdio.h"
#include <Windows.h>
#include <strsafe.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()
{
HINSTANCE hinstDLL = LoadLibrary(L"user32.dll");
if (!(_hook = SetWindowsHookEx(WH_GETMESSAGE,HookCallback,hinstDLL,0)))
{
std::cout<<"Failed to install hook!\n";
}
}
void ReleaseHook()
{
UnhookWindowsHookEx(_hook);
}
int _tmain(int argc, _TCHAR* argv[])
{
SetHook();
// Don't mind this, it is a meaningless loop to keep a console application running.
// I used this to test the keyboard hook functionality. If you want to test it, keep it in ;)
MSG msg;
while (GetMessage(&msg, NULL, 0, 0))
{
}
ReleaseHook();
return 0;
}
등록이 성공적입니다. 그러나 나는 그 사건을 잡지 못하고있다. 콜백 함수 안에 들어 가지 않습니다. 내가 도대체 뭘 잘못하고있는 겁니까?
메시지 전용 창과 같은 소리가 사용자의 요구에 맞을 수 있습니다. – chris
Chris, 제발 설명해 주시거나 나에게 제안 된 것에 대한 참고 자료를 제공해 주실 수 있습니까? 감사! – Sanich
http://msdn.microsoft.com/en-us/library/windows/desktop/ms632599(v=vs.85).aspx#message_only – chris