WH_JOURNALPLAYBACK хук в C # - PullRequest
       15

WH_JOURNALPLAYBACK хук в C #

1 голос
/ 21 сентября 2011

Я пытаюсь создать обратный вызов для хука "WH_JOURNALPLAYBACK" в C #.Это код

private delegate IntPtr JournalPlaybackProc(int nCode, IntPtr wParam, IntPtr lParam);

private static IntPtr JournalPlaybackCallback(int nCode, IntPtr wParam, IntPtr lParam)
{
        if (HC_GETNEXT == nCode && curr < EventMsgs.Count)
        {
            EVENTMSG hookStruct = (EVENTMSG)Marshal.PtrToStructure(lParam, typeof(EVENTMSG));
            EVENTMSG currentMsg = EventMsgs[curr];
            hookStruct.message = currentMsg.message;
            hookStruct.paramL = currentMsg.paramL;
            hookStruct.paramH = currentMsg.paramH;
            hookStruct.hwnd = currentMsg.hwnd;
            hookStruct.time = currentMsg.time;
        }
        if (HC_SKIP == nCode)
        {
            curr++;
        }
        if (curr == EventMsgs.Count)
        {
            UnhookWindowsHookEx(_journalPlaybackProcHookID);
            _journalPlaybackProcHookID = IntPtr.Zero;
        }
        return CallNextHookEx(_journalPlaybackProcHookID, nCode, wParam, lParam);
}

Я получаю обратный вызов правильно, я полагаю, мне нужно изменить значение lParam с моими данными для воспроизведения событий.Как мне это сделать?

1 Ответ

0 голосов
/ 14 февраля 2012

Полагаю, вам нужно

Marshal.StructureToPtr (hookStruct, lParam, true);

Чтобы записать его обратно в какой-то момент.Когда я бегу это просто зависает, хотя.

...