Função OleGetClipboardWithEnterpriseInfo (ole2.h)

Habilita o Windows Proteção de Informações habilitado
aplicativos para recuperar um IDataObject da área de transferência OLE
acompanhados pelo Windows Proteção de Informações informações sobre os dados e o
aplicativo de origem. Essas informações permitem o
aplicativo habilitado para assumir a responsabilidade de aplicar o Windows Proteção de Informações
política, incluindo voar quaisquer prompts de interface do usuário apropriados e
casos de auditoria em que o usuário aprova explicitamente a cópia
dados corporativos em um contexto pessoal.

Se o aplicativo de chamada não for habilitado ou for
configurado como "não permitido" para acessar dados corporativos,
em seguida, essa chamada se comporta exatamente como OleGetClipboard - aplicando a política antes de decidir qual IDataObject retornar,
e fornecendo cadeias de caracteres vazias como saída.

Sintaxe

HRESULT OleGetClipboardWithEnterpriseInfo(
  [out] IDataObject **dataObject,
  [out] PWSTR       *dataEnterpriseId,
  [out] PWSTR       *sourceDescription,
  [out] PWSTR       *targetDescription,
  [out] PWSTR       *dataDescription
);

Parâmetros

[out] dataObject

Endereço da variável de ponteiro IDataObject que recebe o ponteiro de interface para o objeto de dados da área de transferência.

[out] dataEnterpriseId

A ID corporativa do aplicativo que define os dados da área de transferência. Se os dados forem pessoais, essa será uma cadeia de caracteres vazia.

[out] sourceDescription

A descrição do aplicativo que define a área de transferência.

[out] targetDescription

A descrição do aplicativo do chamador a ser usado na auditoria.

[out] dataDescription

A descrição do objeto de dados a ser usado na auditoria.

Retornar valor

Essa função retorna S_OK em caso de êxito. Outros valores possíveis incluem o seguinte.

Código de retorno Descrição
CLIPBRD_E_CANT_OPEN
Falha na função OpenClipboard usada no OleFlushClipboard .
CLIPBRD_E_CANT_CLOSE
Falha na função CloseClipboard usada no OleFlushClipboard .

Comentários

Cuidado Os dados da área de transferência não são confiáveis. Analise os dados cuidadosamente antes de usá-los em seu aplicativo.
 
Se você estiver escrevendo um aplicativo que pode aceitar dados da área de transferência, chame a função OleGetClipboardWithEnterpriseInfo para obter um ponteiro para a interface IDataObject que você pode usar para recuperar o conteúdo da área de transferência.

OleGetClipboardWithEnterpriseInfo manipula três casos:

  • O aplicativo que colocou dados na área de transferência com a função OleSetClipboard ainda está em execução.
  • O aplicativo que colocou dados na área de transferência com a função OleSetClipboard posteriormente chamou a função OleFlushClipboard .
  • Há dados de um aplicativo não OLE na área de transferência.
No primeiro caso, o objeto de dados da área de transferência retornado por OleGetClipboardWithEnterpriseInfo pode encaminhar chamadas conforme necessário para o objeto de dados original colocado na área de transferência e, portanto, pode potencialmente fazer chamadas RPC.

No segundo caso, o OLE cria um objeto de dados padrão e o retorna ao usuário. Como os dados na área de transferência se originaram de uma chamada OleSetClipboard , o objeto de dados fornecido pelo OLE contém informações mais precisas sobre o tipo de dados na área de transferência. Em particular, o meio original (TYMED) no qual os dados foram oferecidos é conhecido. Portanto, se um aplicativo de fonte de dados oferecer um formato de área de transferência específico, por exemplo cfFOO, em um objeto de armazenamento e chamar a função OleFlushClipboard , o objeto de armazenamento será copiado para a memória e o identificador de memória hglobal será colocado na área de transferência. Em seguida, quando a função OleGetClipboardWithEnterpriseInfo cria seu objeto de dados padrão, o hglobal da área de transferência novamente se torna um objeto IStorage . Além disso, o enumerador FORMATETC e o método IDataObject::QueryGetData indicariam corretamente que o cfFOO (formato da área de transferência original) está novamente disponível em um TYMED_ISTORAGE.

No terceiro caso, o OLE ainda cria um objeto de dados padrão, mas não há informações especiais sobre os dados nos formatos da área de transferência (especialmente para formatos de área de transferência definidos pelo aplicativo). Portanto, se um meio de armazenamento baseado em hGlobal fosse colocado na área de transferência diretamente por uma chamada para a função SetClipboardData , o enumerador FORMATETC e o método IDataObject::QueryGetData não indicariam que os dados estavam disponíveis em um meio de armazenamento. No entanto, uma chamada para o método IDataObject::GetData para TYMED_ISTORAGE teria êxito. Devido a essas limitações, é altamente recomendável que os aplicativos com reconhecimento de OLE interajam com a área de transferência usando as funções da área de transferência OLE.

O objeto de dados da área de transferência criado pela função OleGetClipboardWithEnterpriseInfo tem uma implementação IDataObject bastante extensa. O objeto de dados fornecido por OLE pode converter dados de formato de área de transferência OLE 1 na representação esperada por um chamador OLE 2. Além disso, todos os dados estruturados estão disponíveis em qualquer meio estruturado ou simples e todos os dados simples estão disponíveis em qualquer meio simples. No entanto, objetos GDI (como metarquivos e bitmaps) só estão disponíveis em seus respectivos meios.

Observe que o membro tymed da estrutura FORMATETC usada no enumerador FORMATETC contém a união de meios com suporte. Os aplicativos que procuram informações específicas (como se CF_TEXT está disponível em TYMED_HGLOBAL) devem fazer a máscara de bits apropriada ao verificar esse valor.

Se você chamar a função OleGetClipboardWithEnterpriseInfo , só deverá manter o IDataObject retornado por um tempo muito curto. Ele consome recursos no aplicativo que o ofereceu.

Requisitos

Requisito Valor
Cliente mínimo com suporte Windows 10 [somente aplicativos da área de trabalho]
Servidor mínimo com suporte Windows Server 2016 [somente aplicativos da área de trabalho]
Plataforma de Destino Windows
Cabeçalho ole2.h
Biblioteca Ole32.lib
DLL Ole32.dll

Confira também

OleGetClipboard

OleSetClipboard