Pergunta

Em que circunstâncias será a função da API Win32 OleGetClipboard () falhar e retornar CLIPBRD_E_CANT_OPEN?

Mais fundo: Estou ajudando com uma correção de bug do Firefox. Detalhes aqui:

bug 444800 - não é possível recuperar os dados de imagem da área de transferência no formato lossless

No teste automatizado que ajudei a escrever, vemos que OleGetClipboard () às vezes falha e retorna CLIPBRD_E_CANT_OPEN. Isso é inesperado, eo código do Firefox para dados de imagem Retire a área de transferência do Windows depende de que a chamada seguinte.

Foi útil?

Solução

A documentação diz que OleGetClipboard pode falhar com este código de erro se OpenClipboard falhar. Por sua vez, se você ler que a documentação, ele diz:

" OpenClipboard falha se outra janela tem a área de transferência aberta."

É um recurso exclusivo: apenas uma janela pode ter a área de transferência aberta de cada vez. Basicamente, se você não pode fazê-lo, esperar um pouco e tente novamente.

Outras dicas

é seu teste de corrida ao longo do Terminal Services? Consulte ao definir a área de transferência do .NET .

Pelo que vejo no MSDN parece implicar que se origina o problema com quem tentou realmente colocar os dados em área de transferência, i, .e. a fonte dos dados. Se a sua chamada para OleSetClipboard () falhou, por qualquer razão, então você não vai ser capaz de extrair material para fora. Gostaria de dar uma olhada em como os dados está sendo colocado na área de transferência, e ver se há um caso de teste que executa essa (copiar os dados para a área de transferência) e, em seguida, faz com que o problema que você está falando.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top