Condividi tramite


Funzione BroadcastSystemMessageExA (winuser.h)

Invia un messaggio ai destinatari specificati. I destinatari possono essere applicazioni, driver installabili, driver di rete, driver di dispositivo a livello di sistema o qualsiasi combinazione di questi componenti di sistema.

Questa funzione è simile a BroadcastSystemMessage , ad eccezione del fatto che questa funzione può restituire altre informazioni dai destinatari.

Sintassi

long BroadcastSystemMessageExA(
  [in]                DWORD    flags,
  [in, out, optional] LPDWORD  lpInfo,
  [in]                UINT     Msg,
  [in]                WPARAM   wParam,
  [in]                LPARAM   lParam,
  [out, optional]     PBSMINFO pbsmInfo
);

Parametri

[in] flags

Tipo: DWORD

Opzione di trasmissione. Questo parametro può essere uno o più dei valori seguenti.

Valore Significato
BSF_ALLOWSFW
0x00000080
Consente al destinatario di impostare la finestra in primo piano durante l'elaborazione del messaggio.
BSF_FLUSHDISK
0x00000004
Scarica il disco dopo che ogni destinatario elabora il messaggio.
BSF_FORCEIFHUNG
0x00000020
Continua a trasmettere il messaggio, anche se il periodo di timeout trascorso o uno dei destinatari non risponde.
BSF_IGNORECURRENTTASK
0x00000002
Non invia il messaggio alle finestre che appartengono all'attività corrente. Ciò impedisce a un'applicazione di ricevere il proprio messaggio.
BSF_LUID
0x00000400
Se BSF_LUID è impostato, il messaggio viene inviato alla finestra con lo stesso LUID specificato nel membro luid della struttura BSMINFO .

Windows 2000: Questo flag non è supportato.

BSF_NOHANG
0x00000008
Forza il timeout di un'applicazione non rispondente. Se uno dei destinatari non esegue il timeout, non continuare a trasmettere il messaggio.
BSF_NOTIMEOUTIFNOTHUNG
0x00000040
Attende una risposta al messaggio, purché il destinatario non sia in grado di rispondere. Non timeout.
BSF_POSTMESSAGE
0x00000010
Invia il messaggio. Non usare in combinazione con BSF_QUERY.
BSF_RETURNHDESK
0x00000200
Se l'accesso viene negato e vengono impostati sia questo che BSF_QUERY , BSMINFO restituisce sia l'handle desktop che l'handle della finestra. Se l'accesso viene negato e viene impostato solo BSF_QUERY , viene restituito solo l'handle della finestra da BSMINFO.

Windows 2000: Questo flag non è supportato.

BSF_QUERY
0x00000001
Invia il messaggio a un destinatario alla volta, inviando a un destinatario successivo solo se il destinatario corrente restituisce TRUE.
BSF_SENDNOTIFYMESSAGE
0x00000100
Invia il messaggio usando la funzione SendNotifyMessage . Non usare in combinazione con BSF_QUERY.

[in, out, optional] lpInfo

Tipo: LPDWORD

Puntatore a una variabile contenente e riceve informazioni sui destinatari del messaggio.

Quando la funzione restituisce, questa variabile riceve una combinazione di questi valori che identificano i destinatari che hanno effettivamente ricevuto il messaggio.

Se questo parametro è NULL, la funzione trasmette a tutti i componenti.

Questo parametro può essere uno o più dei valori seguenti.

Valore Significato
BSM_ALLCOMPONENTS
0x00000000
Trasmettere a tutti i componenti di sistema.
BSM_ALLDESKTOPS
0x00000010
Trasmettere a tutti i desktop. Richiede il privilegio SE_TCB_NAME .
BSM_APPLICATIONS
0x00000008
Trasmettere alle applicazioni.

[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.

[out, optional] pbsmInfo

Tipo: PBSMINFO

Puntatore a una struttura BSMINFO che contiene informazioni aggiuntive se la richiesta viene negata e dwFlags è impostata su BSF_QUERY.

Valore restituito

Tipo: long

Se la funzione ha esito positivo, il valore restituito è un valore positivo.

Se la funzione non è in grado di trasmettere il messaggio, il valore restituito è -1.

Se il parametro dwFlags è BSF_QUERY e almeno un destinatario ha restituito BROADCAST_QUERY_DENY al messaggio corrispondente, il valore restituito è zero. Per informazioni dettagliate sull'errore, chiamare GetLastError.

Commenti

Se BSF_QUERY non è specificato, la funzione invia il messaggio specificato a tutti i destinatari richiesti, ignorando i valori restituiti da tali destinatari.

Se il thread del chiamante si trova in un desktop diverso da quello della finestra che ha negato la richiesta, il chiamante deve chiamare SetThreadDesktop(hdesk) per eseguire query su qualsiasi elemento della finestra. Inoltre, il chiamante deve chiamare CloseDesktop nell'handle hdesk restituito.

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 BroadcastSystemMessageEx 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

Requisito Valore
Client minimo supportato Windows XP [solo app desktop]
Server minimo supportato Windows Server 2003 [solo app desktop]
Piattaforma di destinazione Windows
Intestazione winuser.h (include Windows.h)
Libreria User32.lib
DLL User32.dll

Vedi anche

BSMINFO

BroadcastSystemMessage

Informazioni concettuali

Messaggi e code di messaggi

Riferimento

SendNotifyMessage