Estou tentando descobrir como usar essa classe. Acho que sei como fazê-la funcionar quando quero verificar se a área de transferência tem um text
formato. Com o texto copiado, o seguinte retorna true
:
[System.Windows.Forms.Clipboard]::ContainsData('text')
Mas se eu copiar um artigo com links de um artigo ou de uma página da web, o seguinte retorna false
:
[System.Windows.Forms.Clipboard]::ContainsData('html')
Tenho certeza de que tenho o formato HTML na minha área de transferência, pois posso colá-lo em um software que me permite fazer isso, como o Obsidian.
Estou fazendo isso porque quero obter o conteúdo das minhas áreas de transferência em formato html. Tentei o seguinte:
[System.Windows.Forms.Clipboard]::GetData('text')
e retorna um objeto:
CanRead : True
CanSeek : True
CanWrite : True
Capacity : 2354
Length : 2354
Position : 0
CanTimeout : False
ReadTimeout :
WriteTimeout :
mas fazer a mesma coisa não [System.Windows.Forms.Clipboard]::GetData('html')
retorna nada, novamente tenho certeza de que tenho conteúdo HTML na minha área de transferência.
Preciso fazer isso porque simplesmente preciso obter o conteúdo HTML da minha área de transferência como uma string, para processamento posterior no PowerShell. Estou no pwsh 7.4
Use os campos estáticos da
[System.Windows.Forms.DataFormats]
classe estática para especificar um formato de dados conhecido como argumento em uma[System.Windows.Forms.Clipboard]::ContainsData()
chamada, especificamente[System.Windows.Forms.DataFormats]::Html
neste caso:Observe que isso testa dados que foram explicitamente declarados como representando HTML quando foram copiados — como acontece principalmente quando você seleciona e copia texto em um navegador da web — e não apenas quaisquer dados de string que sejam HTML.
Da mesma forma, você pode passar os mesmos campos para o
[System.Windows.Forms.Clipboard]::GetData()
método para recuperar um formato conhecido:Observe que o resultado, multilinha ,
[string]
inclui metadados que precedem o código-fonte HTML bruto; por exemplo: