Compartilhar via


Função BroadcastSystemMessageExA (winuser.h)

Envia uma mensagem para os destinatários especificados. Os destinatários podem ser aplicativos, drivers instaláveis, drivers de rede, drivers de dispositivo no nível do sistema ou qualquer combinação desses componentes do sistema.

Essa função é semelhante a BroadcastSystemMessage, exceto pelo fato de que essa função pode retornar mais informações dos destinatários.

Sintaxe

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

Parâmetros

[in] flags

Tipo: DWORD

A opção de transmissão. Esse parâmetro pode ser um ou mais dos valores a seguir.

Valor Significado
BSF_ALLOWSFW
0x00000080
Permite que o destinatário defina a janela em primeiro plano durante o processamento da mensagem.
BSF_FLUSHDISK
0x00000004
Libera o disco depois que cada destinatário processa a mensagem.
BSF_FORCEIFHUNG
0x00000020
Continua a transmitir a mensagem, mesmo que o período de tempo limite se esvaia ou um dos destinatários não esteja respondendo.
BSF_IGNORECURRENTTASK
0x00000002
Não envia a mensagem para janelas que pertencem à tarefa atual. Isso impede que um aplicativo receba sua própria mensagem.
BSF_LUID
0x00000400
Se BSF_LUID estiver definido, a mensagem será enviada para a janela que tem a mesma LUID especificada no luid membro da estrutura BSMINFO .

Windows 2000: Não há suporte para esse sinalizador.

BSF_NOHANG
0x00000008
Força um aplicativo não responsivo a um tempo limite. Se um dos destinatários atingir o tempo limite, não continue transmitindo a mensagem.
BSF_NOTIMEOUTIFNOTHUNG
0x00000040
Aguarda uma resposta à mensagem, desde que o destinatário não esteja respondendo. Não faz tempo limite.
BSF_POSTMESSAGE
0x00000010
Posta a mensagem. Não use em combinação com BSF_QUERY.
BSF_RETURNHDESK
0x00000200
Se o acesso for negado e esta e BSF_QUERY estiverem definidas, BSMINFO retornará o identificador da área de trabalho e o identificador da janela. Se o acesso for negado e apenas BSF_QUERY estiver definido, somente o identificador de janela será retornado por BSMINFO.

Windows 2000: Não há suporte para esse sinalizador.

BSF_QUERY
0x00000001
Envia a mensagem para um destinatário de cada vez, enviando para um destinatário subsequente somente se o destinatário atual retornar VERDADEIRO.
BSF_SENDNOTIFYMESSAGE
0x00000100
Envia a mensagem usando função SendNotifyMessage. Não use em combinação com BSF_QUERY.

[in, out, optional] lpInfo

Tipo: LPDWORD

Um ponteiro para uma variável que contém e recebe informações sobre os destinatários da mensagem.

Quando a função retorna, essa variável recebe uma combinação desses valores identificando quais destinatários realmente receberam a mensagem.

Se esse parâmetro for NULL, a função será transmitida para todos os componentes.

Esse parâmetro pode ser um ou mais dos valores a seguir.

Valor Significado
BSM_ALLCOMPONENTS
0x00000000
Difundir para todos os componentes do sistema.
BSM_ALLDESKTOPS
0x00000010
Difundir para todas as áreas de trabalho. Requer o privilégio SE_TCB_NAME.
BSM_APPLICATIONS
0x00000008
Difundir para aplicativos.

[in] Msg

Tipo: UINT

A mensagem a ser enviada.

Para obter listas das mensagens fornecidas pelo sistema, consulte System-Defined Mensagens.

[in] wParam

Tipo: WPARAM

Informações adicionais específicas da mensagem.

[in] lParam

Tipo: LPARAM

Informações adicionais específicas da mensagem.

[out, optional] pbsmInfo

Tipo: PBSMINFO

Um ponteiro para uma estrutura de BSMINFO que contém informações adicionais se a solicitação for negada e dwFlags estiver definida como BSF_QUERY.

Valor de retorno

Tipo: longo

Se a função for bem-sucedida, o valor retornado será um valor positivo.

Se a função não puder transmitir a mensagem, o valor retornado será –1.

Se o parâmetro dwFlags for BSF_QUERY e pelo menos um destinatário retornado BROADCAST_QUERY_DENY para a mensagem correspondente, o valor retornado será zero. Para obter informações de erro estendidas, chame GetLastError.

Observações

Se BSF_QUERY não for especificado, a função enviará a mensagem especificada a todos os destinatários solicitados, ignorando os valores retornados por esses destinatários.

Se o thread do chamador estiver em uma área de trabalho diferente da janela que negou a solicitação, o chamador deverá chamar setThreadDesktop(hdesk) para consultar qualquer coisa nessa janela. Além disso, o chamador deve chamar CloseDesktop no identificador de hdesk retornado.

O sistema só faz marshalling para mensagens do sistema (aquelas no intervalo de 0 a (WM_USER-1)). Para enviar outras mensagens (aquelas >= WM_USER) para outro processo, você deve fazer o marshalling personalizado.

Nota

O cabeçalho winuser.h define BroadcastSystemMessageEx como um alias que seleciona automaticamente a versão ANSI ou Unicode dessa função com base na definição da constante do pré-processador UNICODE. A combinação do uso do alias neutro de codificação com código que não é neutro em codificação pode levar a incompatibilidades que resultam em erros de compilação ou de runtime. Para obter mais informações, consulte Conventions for Function Prototypes.

Requisitos

Requisito Valor
de cliente com suporte mínimo Windows XP [somente aplicativos da área de trabalho]
servidor com suporte mínimo Windows Server 2003 [somente aplicativos da área de trabalho]
da Plataforma de Destino Windows
cabeçalho winuser.h (inclua Windows.h)
biblioteca User32.lib
de DLL User32.dll

Consulte também

BSMINFO

BroadcastSystemMessage

Conceitual

mensagens e filas de mensagens

de referência de

SendNotifyMessage