Querendo saber por que perco dados da área de transferência ao copiar um arquivo. Depois de selecionar uma string de texto e copiá-la para a área de transferência, esses dados de texto copiados são perdidos de alguma forma se eu selecionar um arquivo e copiá-lo no Windows Explorer antes de colar o texto em algum lugar.
Por exemplo, eu seleciono e copio esta string de texto:
O cachorro preto corre à noite
Em seguida, vou ao Windows Explorer para selecionar e copiar um arquivo:
sem título.bat
Depois disso, colo uma cópia do untitled.bat
arquivo. Se eu navegar para algum lugar onde possa colar texto (como o Bloco de Notas), a string de texto originalmente copiada não estará mais na área de transferência para colar.
Por que o Windows faz isso?
Executando o Windows10 Pro
A área de transferência pode manter apenas um item por vez , possivelmente em um ou vários formatos. Por exemplo, o navegador pode colocar o bitmap da imagem, o URL da imagem, o site, o texto alternativo... quando você copia uma imagem de algum site e o aplicativo de destino seleciona o formato apropriado ao colar, mas ainda é apenas um item. É o mesmo em quase todos os sistemas operacionais. Se você copiar outra coisa, independentemente do tipo, o conteúdo antigo será perdido. A cópia de imagem de um arquivo coloca o objeto que representa o arquivo e também coloca o caminho do arquivo como texto na área de transferência, então como o texto antigo pode ser retido?
No entanto, no Windows, há um recurso de histórico da área de transferência integrado, basta ativá-lo e pressionar Win+ V. Pode até ser sincronizado em PCs com Windows
Você não "perde" os dados da área de transferência. Ele é substituído por novos dados e, por padrão, você não pode acessar os dados antigos, pois são armazenados como um único registro na RAM. Existem maneiras melhores de rastreá-lo, porém, uma delas está listada mais adiante.
É porque o sistema não pode saber exatamente o que você deseja colar e há apenas um Ctrl+ Vatalho para isso. Os aplicativos podem ser codificados para verificar formatos específicos e lidar com todos eles adequadamente, se necessário. Portanto, cabe ao usuário decidir qual é o último item. E até o aplicativo notificar o usuário se o formato atual é suportado, infelizmente muitos deles simplesmente não fazem nada se acontecer uma colagem de formato não suportado.
As caixas de texto de perguntas/respostas neste site são um bom exemplo. Você pode ter texto (
CF_TEXT
/CF_UNICODETEXT
type) como último item e ele será colado como texto. Você também pode ter uma imagem como último item (CF_DIB
tipo) e carregará uma imagem. Ou você pode ter um arquivo copiado do Windows Explorer (CF_HDROP
tipo) e colado que não fará nada, pois o upload regular de arquivos sem imagem não é bem-vindo aqui.Para comparar, se você escrever um e-mail, digamos, no Gmail, todos esses tipos serão suportados.
CF_TEXT
ainda irá colar o texto.CF_DIB
ainda irá colar a imagem embutida. No entanto,CF_HDROP
será tratado melhor desta vez e enviado como anexo.Você pode ler mais sobre os tipos/formatos disponíveis no Windows aqui .
Você pode usar gerenciadores avançados de área de transferência como o Ditto para contornar essa limitação:
Options
->Copy Buffers
você define 3 combinações de teclas para cada buffer (lista separada): copiar, colar e recortar. Digamos que você defina os atalhos tradicionais + Shift. Então você pode copiar todos os arquivos para o buffer recém-definido com Shift+ Ctrl+ Ce sua área de transferência principal ainda conterá texto. Isso pode ser útil para determinados fluxos de trabalho.E no Linux existe o CopyQ .
Por que os próprios sistemas não implementam buffers múltiplos? Vários motivos que entram no território "baseado em opinião", mas o fato é que eles introduzem confusão em termos de atalhos/botões de teclado extras se seu uso for confortável, e sistemas desordenados de usuários que não precisam desse recurso não seja grande.
A área de transferência do Windows pode conter vários formatos, quando você copia algo, o aplicativo de origem geralmente coloca os dados na área de transferência em vários formatos. O aplicativo de destino pode escolher o "melhor" formato compatível com ambos os aplicativos. Copiar um novo item para a área de transferência normalmente substitui o conteúdo existente.
Quando você copia e cola coisas no Windows Explorer, a área de transferência do Windows é usada, mas em vez de realmente mover/copiar o arquivo inteiro para a área de transferência, ele apenas armazena os detalhes do arquivo lá, junto com se o usuário escolheu um "cortar" (mover arquivo) ou uma operação "copy" (copiar arquivo). Então, quando o usuário cola o arquivo no destino, a movimentação ou cópia real é executada.
Costumava ser que, se você copiasse algo em outro aplicativo e colasse no Windows Explorer, ele criaria um arquivo de "sucata" contendo o conteúdo da área de transferência, mas esse recurso raramente era usado e foi removido no Windows Vista.
Isso deixa o Windows Explorer na posição um pouco estranha, onde usa a área de transferência do sistema, mas não consegue interagir com a maioria dos outros aplicativos.