Share via


Funzione di callback CBTProc

Funzione di callback definita dall'applicazione o definita dalla libreria usata con la funzione SetWindowsHookExA/SetWindowsHookExW . Il sistema chiama questa funzione prima di attivare, creare, distruggere, ridurre al minimo, massimizzare, spostare o ridimensionare una finestra; prima di completare un comando di sistema; prima di rimuovere un evento del mouse o della tastiera dalla coda dei messaggi di sistema; prima di impostare lo stato attivo della tastiera; o prima della sincronizzazione con la coda dei messaggi di sistema. Un'applicazione CBT (Computer-Based Training) usa questa procedura di hook per ricevere notifiche utili dal sistema.

Sintassi

LRESULT CALLBACK CBTProc(
  _In_ int    nCode,
  _In_ WPARAM wParam,
  _In_ LPARAM lParam
);

Parametri

  • nCode [in]
    Tipo: int

    Codice usato dalla routine hook per determinare come elaborare il messaggio. Se nCode è minore di zero, la routine hook deve passare il messaggio alla funzione CallNextHookEx senza ulteriori elaborazioni e deve restituire il valore restituito da CallNextHookEx. Questo parametro può avere uno dei valori seguenti.

    Valore Significato
    HCBT_ACTIVATE 5

    Il sistema sta per attivare una finestra.

    HCBT_CLICKSKIPPED 6

    Il sistema ha rimosso un messaggio del mouse dalla coda dei messaggi di sistema. Dopo aver ricevuto questo codice hook, un'applicazione CBT deve installare una procedura hook WH_JOURNALPLAYBACK in risposta al messaggio del mouse.

    HCBT_CREATEWND 3

    Verrà creata una finestra. Il sistema chiama la routine hook prima di inviare il WM_CREATE o WM_NCCREATE messaggio alla finestra. Se la procedura hook restituisce un valore diverso da zero, il sistema distrugge la finestra; La funzione CreateWindow restituisce NULL, ma il messaggio WM_DESTROY non viene inviato alla finestra. Se la routine hook restituisce zero, la finestra viene creata normalmente.

    Al momento della notifica di HCBT_CREATEWND , la finestra è stata creata, ma le dimensioni finali e la posizione potrebbero non essere state determinate e la relativa finestra padre potrebbe non essere stata stabilita. È possibile inviare messaggi alla finestra appena creata, anche se non ha ancora ricevuto WM_NCCREATE o WM_CREATE messaggi. È anche possibile modificare la posizione nell'ordine z della finestra appena creata modificando il membro hwndInsertAfter della struttura CBT_CREATEWND .

    HCBT_DESTROYWND 4

    Una finestra sta per essere distrutta.

    HCBT_KEYSKIPPED 7

    Il sistema ha rimosso un messaggio da tastiera dalla coda dei messaggi di sistema. Dopo aver ricevuto questo codice hook, un'applicazione CBT deve installare una procedura hook WH_JOURNALPLAYBACK in risposta al messaggio della tastiera.

    HCBT_MINMAX 1

    Una finestra sta per essere ridotta a icona o ingrandita.

    HCBT_MOVESIZE 0

    Una finestra sta per essere spostata o ridimensionata.

    HCBT_QS 2

    Il sistema ha recuperato un messaggio WM_QUEUESYNC dalla coda dei messaggi di sistema.

    HCBT_SETFOCUS 9

    Una finestra sta per ricevere lo stato attivo della tastiera.

    HCBT_SYSCOMMAND 8

    Un comando di sistema sta per essere eseguito. Ciò consente a un'applicazione CBT di impedire il cambio di attività tramite tasti di scelta rapida.

     
    • wParam [in]
      Tipo: WPARAM

      Dipende dal parametro nCode . Per informazioni dettagliate, vedere la sezione Osservazioni seguente.

    • lParam [in]
      Tipo: LPARAM

      Dipende dal parametro nCode . Per informazioni dettagliate, vedere la sezione Osservazioni seguente.

    Valore restituito

    Digitare:****

    Tipo: LRESULT

    Il valore restituito dalla routine hook determina se il sistema consente o impedisce una di queste operazioni. Per le operazioni corrispondenti ai codici hook CBT seguenti, il valore restituito deve essere 0 per consentire l'operazione o 1 per impedirlo.

    • HCBT_ACTIVATE
    • HCBT_CREATEWND
    • HCBT_DESTROYWND
    • HCBT_MINMAX
    • HCBT_MOVESIZE
    • HCBT_SETFOCUS
    • HCBT_SYSCOMMAND

    Per le operazioni corrispondenti ai codici hook CBT seguenti, il valore restituito viene ignorato.

    • HCBT_CLICKSKIPPED
    • HCBT_KEYSKIPPED
    • HCBT_QS

    Commenti

    Il tipo HOOKPROC definisce un puntatore a questa funzione di callback. CBTProc è un segnaposto per il nome di funzione definito dall'applicazione o definito dalla libreria.

    La procedura hook non deve installare una WH_JOURNALPLAYBACK procedura hook, ad eccezione delle situazioni descritte nell'elenco precedente di codici hook.

    Un'applicazione installa la routine hook specificando il tipo di hook WH_CBT e un puntatore alla routine hook in una chiamata alla funzione SetWindowsHookExA/SetWindowsHookExW .

    Nella tabella seguente vengono descritti i parametri wParam e lParam per ogni HCBT_ codice hook.

    Valore wParam lParam
    HCBT_ACTIVATE Specifica l'handle per la finestra che sta per essere attivato. Specifica un puntatore lungo a una struttura CBTACTIVATESTRUCT contenente l'handle per la finestra attiva e specifica se l'attivazione cambia a causa di un clic del mouse.
    HCBT_CLICKSKIPPED Specifica il messaggio del mouse rimosso dalla coda dei messaggi di sistema. Specifica un puntatore lungo a una struttura MOUSEHOOKSTRUCT contenente il codice di hit test e l'handle per la finestra per cui è previsto il messaggio del mouse.

    Il valore HCBT_CLICKSKIPPED viene inviato a una procedura di hook CBTProc solo se è installato un hook WH_MOUSE . Per un elenco dei codici di hit test, vedere WM_NCHITTEST.

    HCBT_CREATEWND Specifica l'handle per la nuova finestra. Specifica un puntatore lungo a una struttura CBT_CREATEWND contenente i parametri di inizializzazione per la finestra. I parametri includono le coordinate e le dimensioni della finestra. Modificando questi parametri, una routine hook CBTProc può impostare le dimensioni iniziali e la posizione della finestra.
    HCBT_DESTROYWND Specifica l'handle per la finestra che sta per essere eliminato definitivamente. Non definito e deve essere impostato su zero.
    HCBT_KEYSKIPPED Specifica il codice della chiave virtuale. Specifica il numero di ripetizioni, il codice di analisi, il codice di transizione della chiave, lo stato della chiave precedente e il codice di contesto. Il valore HCBT_KEYSKIPPED viene inviato a una routine hook CBTProc solo se è installato un hook WH_KEYBOARD . Per altre informazioni, vedere WM_KEYUP o WM_KEYDOWN.
    HCBT_MINMAX Specifica l'handle per la finestra ridotta a icona o ingrandita. Specifica, nella parola in ordine basso, un valore della finestra di visualizzazione (SW_) che specifica l'operazione. Per un elenco di valori di finestra mostra, vedere ShowWindow. La parola di ordine elevato non è definita.
    HCBT_MOVESIZE Specifica l'handle per la finestra da spostare o ridimensionare. Specifica un puntatore lungo a una struttura RECT contenente le coordinate della finestra. Modificando i valori nella struttura, una routine hook CBTProc può impostare le coordinate finali della finestra.
    HCBT_QS Non definito e deve essere zero. Non definito e deve essere zero.
    HCBT_SETFOCUS Specifica l'handle nella finestra che ottiene lo stato attivo della tastiera. Specifica l'handle nella finestra che perde lo stato attivo della tastiera.
    HCBT_SYSCOMMAND Specifica un valore di comando di sistema (SC_) che specifica il comando di sistema. Per altre informazioni sui valori dei comandi di sistema, vedere WM_SYSCOMMAND. Contiene gli stessi dati del valore lParam di un messaggio di WM_SYSCOMMAND : se viene scelto un comando di menu di sistema con il mouse, la parola a basso ordine contiene la coordinata x del cursore, nelle coordinate dello schermo e la parola di ordine elevato contiene la coordinata y; in caso contrario, il parametro non viene usato.

     

    Per altre informazioni, vedere Eventi di Windows.

    Requisiti

    Client minimo supportato

    Windows 2000 Professional [solo app desktop]

    Server minimo supportato

    Windows 2000 Server [solo app desktop]

    Intestazione

    Winuser.h (include Windows.h)

    Vedi anche

    CallNextHookEx

    CreateWindowA/CreateWindowW

    SetWindowsHookExA/SetWindowsHookExW

    messaggio WM_SYSCOMMAND

    Hook