Função JournalPlaybackProc
Descrição
Aviso
As APIs do Journaling Hooks não têm suporte a partir de Windows 11 e serão removidas em uma versão futura. Por isso, é altamente recomendável chamar a API SendInput TextInput.
Uma função de retorno de chamada definida pelo aplicativo ou definida pela biblioteca usada com a função SetWindowsHookExA/SetWindowsHookExW . A função registra mensagens que o sistema remove da fila de mensagens do sistema. Posteriormente, um aplicativo pode usar um procedimento de gancho JournalPlaybackProc para reproduzir as mensagens.
Observação
Normalmente, um aplicativo usa essa função para reproduzir uma série de mensagens de mouse e teclado gravadas anteriormente pelo procedimento de gancho JournalRecordProc . Enquanto um procedimento de gancho JournalPlaybackProc estiver instalado, a entrada regular de mouse e teclado será desabilitada.
O tipo HOOKPROC define um ponteiro para essa função de retorno de chamada. JournalRecordProc é um espaço reservado para o nome da função definida pelo aplicativo ou definida pela biblioteca.
LRESULT CALLBACK JournalRecordProc(
_In_ int code,
WPARAM wParam,
_In_ LPARAM lParam
);
Parâmetros
code [in]
Tipo: int
Um código que o procedimento de gancho usa para determinar como processar a mensagem.
Se o código for menor que zero, o procedimento de gancho deverá passar a mensagem para a função CallNextHookEx sem processamento adicional e deverá retornar o valor retornado por CallNextHookEx.
Esse parâmetro pode usar um dos valores a seguir.
Valor | Significado |
---|---|
HC_GETNEXT 1 | O procedimento de gancho deve copiar a mensagem de mouse ou teclado atual para a estrutura EVENTMSG apontada pelo parâmetro lParam . |
HC_NOREMOVE 3 | Um aplicativo chamou a função PeekMessage com wRemoveMsg definido como PM_NOREMOVE, indicando que a mensagem não é removida da fila de mensagens após o processamento peekMessage . |
HC_NOREMOVE 2 | O procedimento de gancho deve se preparar para copiar a próxima mensagem de mouse ou teclado para a estrutura EVENTMSG apontada por lParam. Ao receber o código HC_GETNEXT , o procedimento de gancho deve copiar a mensagem para a estrutura. |
HC_SYSMODALOFF 5 | Uma caixa de diálogo modal do sistema foi destruída. O procedimento de gancho deve retomar a reprodução das mensagens. |
HC_SYSMODALON 4 | Uma caixa de diálogo modal do sistema está sendo exibida. Até que a caixa de diálogo seja destruída, o procedimento de gancho deve parar de reproduzir mensagens. |
wParam
Tipo: WPARAM
Este parâmetro não é usado.
lParam
Tipo: LPARAM
Um ponteiro para uma estrutura EVENTMSG que representa uma mensagem sendo processada pelo procedimento de gancho. Esse parâmetro só é válido quando o parâmetro de código é HC_GETNEXT.
Retornos
Tipo: LRESULT
Para que o sistema aguarde antes de processar a mensagem, o valor retornado deve ser a quantidade de tempo, em tiques de relógio, que o sistema deve aguardar.
(Esse valor pode ser calculado calculando a diferença entre os membros de tempo nas mensagens de entrada atuais e anteriores.)
Para processar a mensagem imediatamente, o valor retornado deve ser zero. O valor retornado será usado somente se o código de gancho for HC_GETNEXT; caso contrário, ele será ignorado.
Comentários
Um procedimento de gancho JournalPlaybackProc deve copiar uma mensagem de entrada para o parâmetro lParam . A mensagem deve ter sido registrada anteriormente usando um procedimento de gancho JournalRecordProc , que não deve modificar a mensagem.
Para recuperar a mesma mensagem várias vezes, o procedimento de gancho pode ser chamado várias vezes com o parâmetro de código definido como HC_GETNEXT sem uma chamada intervindo com código definido como HC_SKIP.
Se o código for HC_GETNEXT e o valor retornado for maior que zero, o sistema dormirá para o número de milissegundos especificado pelo valor retornado. Quando o sistema continua, ele chama o procedimento de gancho novamente com o código definido como HC_GETNEXT para recuperar a mesma mensagem. O valor retornado dessa nova chamada para JournalPlaybackProc deve ser zero; caso contrário, o sistema voltará a dormir pelo número de milissegundos especificado pelo valor retornado, chamará JournalPlaybackProc novamente e assim por diante. O sistema parecerá não estar respondendo.
Ao contrário da maioria dos outros procedimentos de gancho global, os procedimentos de gancho JournalRecordProc e JournalPlaybackProc são sempre chamados no contexto do thread que define o gancho.
Depois que o procedimento de gancho retorna o controle para o sistema, a mensagem continua a ser processada. Se o código for HC_SKIP, o procedimento de gancho deverá se preparar para retornar a próxima mensagem de evento gravada em sua próxima chamada.
Instale o procedimento de gancho JournalPlaybackProc especificando o tipo de WH_JOURNALPLAYBACK e um ponteiro para o procedimento de gancho em uma chamada para a função SetWindowsHookEx .
Se o usuário pressionar CTRL+ESC OU CTRL+ALT+DEL durante a reprodução do diário, o sistema interromperá a reprodução, desativará o procedimento de reprodução do diário e postará uma mensagem WM_CANCELJOURNAL no aplicativo de registro em diário.
Se o procedimento de gancho retornar uma mensagem no intervalo WM_KEYFIRST para WM_KEYLAST, as seguintes condições se aplicam:
- O membro paramL da estrutura EVENTMSG especifica o código de tecla virtual da tecla que foi pressionada.
- O membro paramH da estrutura EVENTMSG especifica o código de verificação.
- Não há como especificar uma contagem de repetição. O evento sempre é levado para representar um evento chave.