Funzione MessageProc
Descrizione
Funzione di callback definita dall'applicazione o definita dalla libreria usata con la funzione SetWindowsHookExA/SetWindowsHookExW . Il sistema chiama questa funzione dopo che si verifica un evento di input in una finestra di dialogo, una finestra di messaggio, un menu o una barra di scorrimento, ma prima dell'elaborazione del messaggio generato dall'evento di input. La procedura hook consente di monitorare i messaggi per una finestra di dialogo, una finestra di messaggio, un menu o una barra di scorrimento creata da una determinata applicazione o da tutte le applicazioni.
Il tipo HOOKPROC definisce un puntatore a questa funzione di callback. MessageProc è un segnaposto per il nome di funzione definito dall'applicazione o definito dalla libreria.
LRESULT CALLBACK MessageProc(
_In_ int code,
WPARAM wParam,
_In_ LPARAM lParam
);
Parametri
codice [in]
Tipo: int
Tipo di evento di input che ha generato il messaggio.
Se il codice è minore di zero, la routine hook deve passare il messaggio alla funzione CallNextHookEx senza ulteriori elaborazioni e restituire il valore restituito da CallNextHookEx.
Questo parametro può avere uno dei valori seguenti.
Valore | Significato |
---|---|
MSGF_DDEMGR 0x8001 | L'evento di input si è verificato durante l'attesa del completamento di una transazione sincrona da parte della libreria DDEML (Dynamic Data Exchange Management Library). Per altre informazioni su DDEML, vedere Dynamic Data Exchange Management Library. |
MSGF_DIALOGBOX 0 | L'evento di input si è verificato in una finestra di messaggio o in una finestra di dialogo. |
MSGF_MENU 2 | L'evento di input si è verificato in un menu. |
MSGF_SCROLLBAR 5 | L'evento di input si è verificato in una barra di scorrimento. |
wParam
Tipo: WPARAM
Questo parametro non viene usato.
lParam [in]
Tipo: LPARAM
Puntatore a una struttura MSG .
Restituisce
Tipo: LRESULT
Se il codice è minore di zero, la routine hook deve restituire il valore restituito da CallNextHookEx.
Se il codice è maggiore o uguale a zero e la routine hook non ha elaborato il messaggio, è consigliabile chiamare CallNextHookEx e restituire il valore restituito; in caso contrario, altre applicazioni che hanno installato WH_MSGFILTER hook non riceveranno notifiche hook e potrebbero comportarsi in modo non corretto di conseguenza. Se la routine hook ha elaborato il messaggio, può restituire un valore diverso da zero per impedire al sistema di passare il messaggio al resto della catena di hook o alla routine della finestra di destinazione.
Commenti
Un'applicazione installa la routine hook specificando il tipo di hook WH_MSGFILTER e un puntatore alla routine hook in una chiamata alla funzione SetWindowsHookExA/SetWindowsHookExW .
Se un'applicazione che usa DDEML ed esegue transazioni sincrone deve elaborare i messaggi prima dell'invio, deve usare l'hook WH_MSGFILTER .