Funzione SendMessageTimeoutA (winuser.h)

Invia il messaggio specificato a una o più finestre.

Sintassi

LRESULT SendMessageTimeoutA(
  [in]            HWND       hWnd,
  [in]            UINT       Msg,
  [in]            WPARAM     wParam,
  [in]            LPARAM     lParam,
  [in]            UINT       fuFlags,
  [in]            UINT       uTimeout,
  [out, optional] PDWORD_PTR lpdwResult
);

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 nel sistema, incluse finestre disabilitate o invisibili. La funzione non restituisce fino a quando ogni finestra non è scaduta. Pertanto, il tempo di attesa totale può essere fino al valore di uTimeout moltiplicato per il numero di finestre di primo livello.

[in] Msg

Tipo: UINT

Messaggio da inviare.

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

[in] wParam

Tipo: WPARAM

Eventuali informazioni specifiche del messaggio aggiuntive.

[in] lParam

Tipo: LPARAM

Eventuali informazioni specifiche del messaggio aggiuntive.

[in] fuFlags

Tipo: UINT

Comportamento di questa funzione. Questo parametro può essere uno o più dei valori seguenti.

Valore Significato
SMTO_ABORTIFHUNG
0x0002
La funzione restituisce senza attendere che il periodo di timeout venga trascorso se il thread di ricezione non risponde o "blocca".
SMTO_BLOCK
0x0001
Impedisce al thread chiamante di elaborare qualsiasi altra richiesta fino a quando la funzione non restituisce.
SMTO_NORMAL
0x0000
Il thread chiamante non impedisce l'elaborazione di altre richieste durante l'attesa della restituzione della funzione.
SMTO_NOTIMEOUTIFNOTHUNG
0x0008
La funzione non applica il periodo di timeout finché il thread di ricezione sta elaborando i messaggi.
SMTO_ERRORONEXIT
0x0020
La funzione deve restituire 0 se la finestra di ricezione viene eliminata o il relativo thread di proprietà muore durante l'elaborazione del messaggio.

[in] uTimeout

Tipo: UINT

Durata del periodo di timeout, in millisecondi. Se il messaggio è un messaggio di trasmissione, ogni finestra può usare il periodo di timeout completo. Ad esempio, se si specifica un periodo di timeout di cinque secondi e sono presenti tre finestre di primo livello che non riescono a elaborare il messaggio, è possibile avere fino a un ritardo di 15 secondi.

[out, optional] lpdwResult

Tipo: PDWORD_PTR

Risultato dell'elaborazione del messaggio. Il valore di questo parametro dipende dal messaggio specificato.

Valore restituito

Tipo: LRESULT

Se la funzione ha esito positivo, il valore restituito è diverso da zero. SendMessageTimeout non fornisce informazioni sul timeout delle singole finestre se viene usato HWND_BROADCAST .

Se la funzione ha esito negativo o timeout, il valore restituito è 0. Per informazioni dettagliate sull'errore, chiamare GetLastError. Se GetLastError restituisce ERROR_TIMEOUT, la funzione viene timeout.

Windows 2000: Se GetLastError restituisce 0, la funzione viene timeout.

Commenti

La funzione chiama la routine della finestra per la finestra specificata e, se la finestra specificata appartiene a un thread diverso, non restituisce fino a quando la routine della finestra non ha elaborato il messaggio o il periodo di timeout specificato è trascorso. Se la finestra che riceve il messaggio appartiene alla stessa coda del thread corrente, la procedura della finestra viene chiamata direttamente, il valore di timeout viene ignorato.

Questa funzione considera che un thread non risponde se non ha chiamato GetMessage o una funzione simile entro cinque secondi.

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.

Nota

L'intestazione winuser.h definisce SendMessageTimeout come alias che seleziona automaticamente la versione ANSI o Unicode di questa funzione in base alla definizione della costante preprocessore UNICODE. La combinazione dell'utilizzo dell'alias di codifica neutrale con il codice che non è neutrale dalla codifica può causare errori di corrispondenza che causano errori di compilazione o runtime. Per altre informazioni, vedere Convenzioni per i prototipi di funzione.

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

GetMessage

InSendMessage

Messaggi e code di messaggi

PostMessage

Riferimento

SendDlgItemMessage

SendMessage

SendMessageCallback

SendNotifyMessage