Не удается поймать событие заставки

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

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

Регистрация прошла успешно. Но я не ловлю событие. Даже не входя в функцию обратного вызова. Что я делаю неправильно?

2

Решение

Вы пытаетесь создать заставку или программу для скриншота рабочего стола? Если вы делаете заставку, следуйте этим инструкциям.

Заставка — это обычная программа с .scr расширение. Заставка должна принимать следующие параметры командной строки.

  • \ S — запустить в полноэкранном режиме
  • \ P — запустить в диалоговом окне предварительного просмотра
  • \ C — Показать диалог конфигурации

Тем не менее \P Переключатель немного другой. За ним следует двоеточие и дескриптор окна системного диалогового окна. Например, это может быть /P:1234567890

-1

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

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

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