Windows ConfidentialEsplora risorse non fa testo

Raymond Chen

C'era una volta C'era una volta il PowerPoy Invia a X. Questo strumento consentiva di effettuare operazioni quali la selezione di una serie di file, l'utilizzo del pulsante destro del mouse e la selezione dell'opzione di invio agli Appunti come nomi. Come previsto, lo strumento copiava i nomi dei file selezionati negli Appunti.

Si trattava sicuramente di uno strumento utile, ma a cosa serviva originariamente? Perché non è possibile semplicemente copiare i file in Esplora risorse di Windows® e incollarli come testo per ottenere i loro nomi? O meglio ancora, perché non è possibile semplicemente trascinare i file da Esplora risorse e rilasciarli nel Blocco note per ottenerne i nomi?

Abbiamo provato a farlo, ma non ci siamo riusciti.

Il trasferimento dei dati, tramite gli Appunti oppure con operazioni di trascinamento, viene mediato dagli oggetti dati OLE, rappresentati dall'interfaccia IDataObject. Un oggetto dati offre una serie di formati. Alcuni formati degli Appunti, tra cui testo e bitmap, sono stati introdotti sin dagli albori di Windows. Altri sono stati aggiunti nel tempo. L'handle HDROP è stato adottato fin dall'avvento delle prime funzionalità di trascinamento di Windows. È possibile rendere disponibile questo handle a funzioni quali DragQueryFile, ad esempio, per estrarre i nomi dei file. Quando si copiano dati negli Appunti da Esplora risorse, l'oggetto dati risultante offre, tra l'altro, il suddetto HDROP, il contenuto dei file e un descrittore di gruppo di file. Tuttavia, uno dei formati non messo a disposizione dall'oggetto dati è il testo.

Quando un obiettivo di rilascio (un elemento in cui è possibile rilasciare gli oggetti) viene informato che sarà la destinazione del trascinamento o del rilascio di un oggetto dati, pone all'oggetto la seguente domanda: "Cosa vuoi ottenere?". L'oggetto dati risponde elencando tutti i formati supportati, dal formato preferito fino a quello meno desiderato. In altre parole, il primo formato restituito dall'oggetto dati è il formato che meglio descrive l'oggetto. Quindi ci sarà il secondo formato preferito, poi il terzo e così via, fino all'ultimo formato che è solo una rappresentazione sbiadita dell'oggetto originale. Ad esempio, l'oggetto dati che rappresenta alcuni oggetti trascinati da una finestra di Esplora risorse offrirebbe probabilmente per prima un elenco di ID shell, poiché è una rappresentazione quasi perfetta del contenuto di una finestra di Esplora risorse. Quindi, l'elenco potrebbe riportare un descrittore di gruppo di file, seguito dal contenuto dei file e infine un HDROP.

Nel 1998, il team shell ha tentato di aggiungere il testo normale all'elenco dei formati, inserendolo alla fine dell'elenco. In sostanza, ciò significava: "Se sei veramente disperato, ti consentirò di estrarre almeno del testo (ovvero, l'elenco di file)". Sfortunatamente, accadde che innumerevoli programmi furono letteralmente abbagliati dallo scintillante formato di testo ed esclamarono: "Adoro il testo!". Questi programmi continuarono impassibili verso la ricerca del formato di testo, che non conteneva altro se non un elenco di file. Di conseguenza, quando un file veniva trascinato da Esplora risorse e incollato in un documento, il programma inseriva semplicemente il nome file anziché inserire il file stesso nel documento.

E poi?

A causa del feedback negativo di compatibilità delle applicazioni, questa situazione è stata letteralmente invertita. Di conseguenza, quando ora esegui un'operazione di trascinamento della selezione o incolli dei file copiati da Esplora risorse, l'oggetto dati shell non offre i nomi file come testo.

Tuttavia, Windows Vista® pone rimedio a questa vecchia ingiustizia fornendoti un modo per copiare il percorso come testo: premere il tasto Maiusc e contemporaneamente fare clic con il pulsante destro del mouse per visualizzare il menu di scelta rapida. In questo menu sarà disponibile la nuova opzione Copia come percorso. Non è più necessario alcun PowerToy.

Raymond Chen, The Old New Thing, così come nel suo libro che porta lo stesso titolo (Addison-Wesley, 2007), vengono illustrate la storia di Windows e la programmazione in Win32. Raymond lascia ad altri il compito di rendere operativi i meccanismi.

© 2008 Microsoft Corporation e CMP Media, LLC. Tutti i diritti riservati. È vietata la riproduzione completa o parziale senza autorizzazione.