Função OleGetClipboard (ole2.h)
Recupera um objeto de dados que você pode usar para acessar o conteúdo da área de transferência.
Sintaxe
HRESULT OleGetClipboard(
[out] LPDATAOBJECT *ppDataObj
);
Parâmetros
[out] ppDataObj
Endereço da variável de ponteiro IDataObject que recebe o ponteiro de interface para o objeto de dados da área de transferência.
Retornar valor
Essa função retorna S_OK com êxito. Outros valores possíveis incluem o seguinte.
Código de retorno | Descrição |
---|---|
|
Falha na função OpenClipboard usada no OleFlushClipboard . |
|
Falha na função CloseClipboard usada no OleFlushClipboard . |
Comentários
O oleGetClipboard 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 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 por 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 na memória e o identificador de memória hglobal será colocado na área de transferência. Em seguida, quando a função OleGetClipboard 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 indicam corretamente que o cfFOO (formato de á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 de área de transferência OLE.
O objeto de dados da área de transferência criado pela função OleGetClipboard 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, os 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 OleGetClipboard , 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 2000 Professional [somente aplicativos da área de trabalho] |
Servidor mínimo com suporte | Windows 2000 Server [somente aplicativos da área de trabalho] |
Plataforma de Destino | Windows |
Cabeçalho | ole2.h |
Biblioteca | Ole32.lib |
DLL | Ole32.dll |
Conjunto de APIs | ext-ms-win-com-ole32-l1-1-5 (introduzido em Windows 10, versão 10.0.15063) |