C++ 无法捕获屏幕保护程序事件

C++ 无法捕获屏幕保护程序事件,c++,windows,callback,screensaver,C++,Windows,Callback,Screensaver,我正在努力捕捉屏幕保护程序事件。这是我的代码: #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 >

我正在努力捕捉屏幕保护程序事件。这是我的代码:

#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;
}

注册成功。但我没有赶上这场比赛。甚至没有进入回调函数。我做错了什么?

您是想创建屏幕保护程序还是程序来截屏桌面?如果您正在制作屏幕保护程序,请按照以下步骤操作

屏幕保护程序是一个扩展名为.scr的普通程序。屏幕保护程序应接受以下命令行参数

\S-在全屏模式下运行 \P-在“预览”对话框中运行 \C-显示配置对话框
但是\p开关有点不同。其后是系统对话框的冒号和窗口句柄。例如,它可能是/P:1234567890

您是否正在尝试创建屏幕保护程序或程序来截屏桌面?如果您正在制作屏幕保护程序,请按照以下步骤操作

屏幕保护程序是一个扩展名为.scr的普通程序。屏幕保护程序应接受以下命令行参数

\S-在全屏模式下运行 \P-在“预览”对话框中运行 \C-显示配置对话框
但是\p开关有点不同。其后是系统对话框的冒号和窗口句柄。例如,它可能是/P:1234567890

听起来像是一个只显示消息的窗口适合您的需要。克里斯,您能解释一下或给我一些建议的参考资料吗?谢谢听起来只有留言窗口才适合你的需要。克里斯,你能解释一下或者给我一些建议的参考资料吗?谢谢