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 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 usar um 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 transmitindo 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 o mesmo LUID especificado no membro luid da estrutura BSMINFO .

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

BSF_NOHANG
0x00000008
Força um aplicativo não responsável a atingir o 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 esse e BSF_QUERY estiverem definidos, o 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 pelo 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 TRUE.
BSF_SENDNOTIFYMESSAGE
0x00000100
Envia a mensagem usando a 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 transmitirá para todos os componentes.

Esse parâmetro pode usar um 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 Mensagens definidas pelo sistema.

[in] wParam

Tipo: WPARAM

Obter informações adicionais específicas de mensagem.

[in] lParam

Tipo: LPARAM

Obter informações adicionais específicas de mensagem.

[out, optional] pbsmInfo

Tipo: PBSMINFO

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

Retornar valor

Tipo: long

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 retornar BROADCAST_QUERY_DENY para a mensagem correspondente, o valor retornado será zero. Para obter informações de erro estendidas, chame GetLastError.

Comentários

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 hdesk retornado.

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

Observação

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 de pré-processador UNICODE. Misturar o uso do alias neutro de codificação com código que não seja neutro em codificação pode levar a incompatibilidades que resultam em erros de compilação ou de runtime. Para obter mais informações, consulte Convenções para protótipos de função.

Requisitos

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

Confira também

BSMINFO

BroadcastSystemMessage

Conceitual

Mensagens e filas de mensagens

Referência

Sendnotifymessage