Funzione SendMessage (winuser.h)

Invia il messaggio specificato a una finestra o a una finestra. La funzione SendMessage chiama la routine della finestra per la finestra specificata e non restituisce finché la routine della finestra non è stata elaborata.

Per inviare un messaggio e restituire immediatamente, usare la funzione SendMessageCallback o SendNotifyMessage . Per pubblicare un messaggio nella coda di messaggi di un thread e restituire immediatamente, usare la funzione PostMessage o PostThreadMessage .

Sintassi

LRESULT SendMessage(
  [in] HWND   hWnd,
  [in] UINT   Msg,
  [in] WPARAM wParam,
  [in] LPARAM lParam
);

Parametri

[in] hWnd

Tipo: HWND

Handle nella finestra la cui procedura della finestra riceverà il messaggio. Se questo parametro è HWND_BROADCAST ((HWND)0xffff), il messaggio viene inviato a tutte le finestre di primo livello del sistema, incluse finestre disabilitate o invisibili, finestre sovrapposte e finestre popup; ma il messaggio non viene inviato a finestre figlio.

L'invio di messaggi è soggetto a UIPI. Il thread di un processo può inviare messaggi solo alle code di messaggi dei thread nei processi di livello di integrità minore o uguale.

[in] Msg

Tipo: UINT

Messaggio da inviare.

Per elenchi dei messaggi forniti dal sistema, vedere Messaggi definiti dal sistema.

[in] wParam

Tipo: WPARAM

Ulteriori informazioni specifiche del messaggio.

[in] lParam

Tipo: LPARAM

Ulteriori informazioni specifiche del messaggio.

Valore restituito

Tipo: LRESULT

Il valore restituito specifica il risultato dell'elaborazione del messaggio; dipende dal messaggio inviato.

Commenti

Quando un messaggio viene bloccato dall'interfaccia utente l'ultimo errore, recuperato con GetLastError, è impostato su 5 (accesso negato).

Le applicazioni che devono comunicare usando HWND_BROADCAST devono usare la funzione RegisterWindowMessage per ottenere un messaggio univoco per la comunicazione tra applicazioni.

Il sistema esegue solo il marshalling per i messaggi di sistema (quelli inclusi nell'intervallo da 0 a (WM_USER-1)). Per inviare altri messaggi (quelli >= WM_USER) a un altro processo, è necessario eseguire il marshalling personalizzato.

Se la finestra specificata è stata creata dal thread chiamante, la procedura della finestra viene chiamata immediatamente come subroutine. Se la finestra specificata è stata creata da un thread diverso, il sistema passa a tale thread e chiama la procedura di finestra appropriata. I messaggi inviati tra thread vengono elaborati solo quando il thread di ricezione esegue il codice di recupero dei messaggi. Il thread di invio viene bloccato finché il thread di ricezione elabora il messaggio. Tuttavia, il thread di invio elabora i messaggi non conqueued in ingresso durante l'attesa dell'elaborazione del messaggio. Per evitare questo problema, usare SendMessageTimeout con SMTO_BLOCK set. Per altre informazioni sui messaggi nonqueued, vedere Messaggi nonqueued.

Un'applicazione di accessibilità può usare SendMessage per inviare messaggi WM_APPCOMMAND alla shell per avviare applicazioni. Questa funzionalità non è garantita per altri tipi di applicazioni.

Esempio

Per un esempio, vedere Visualizzazione dell'input della tastiera.

Requisiti

   
Client minimo supportato Windows 2000 Professional [solo app desktop]
Server minimo supportato Windows 2000 Server [solo app desktop]
Piattaforma di destinazione Windows
Intestazione winuser.h (include Windows.h)
Libreria User32.lib
DLL User32.dll
Set di API ext-ms-win-ntuser-message-l1-1-0 (introdotto in Windows 8)

Vedi anche

Informazioni concettuali

InSendMessage

Messaggi e code di messaggi

PostMessage

PostThreadMessage

Riferimento

RegisterWindowMessage

SendDlgItemMessage

SendMessageCallback

SendMessageTimeout

SendNotifyMessage