Direi che explorer esegue la copia sui file di destinazione, quindi non c'è modo di farlo direttamente scrivere i file di destinazione, questo ha senso, perché i nomi dei file sorgente possono provenire solo dall'applicazione che ha copiato i dati negli Appunti, che non devono necessariamente essere Explorer. OTOH i nomi dei file di destinazione potrebbero effettivamente differire, perché i file di lo stesso nome potrebbe già esistere nella cartella di destinazione e solo explorer può creare i nomi modificati per i file di destinazione (ad esempio anteponendo "Copia di" o aggiungendo "(2)" al nome del file di base)
Sarà necessario fornire il formato degli appunti per Windows Explorer o che può incollare i file. Lo documentation of standard clipboard formats suggerisce che CF _ HDROP è quello giusto. Con questo formato di appunti si fornisce un elenco di nomi di file di origine, ma i file devono necessariamente esistere, quindi è necessario salvarli sul disco.
Si potrebbe provare a rendere il processo il più leggero possibile, però. Di solito quando un utente copia i dati negli Appunti viene inserito immediatamente, indipendentemente dal fatto che verrà utilizzato per un'operazione di incolla. Per la tua applicazione ciò significherebbe che avresti bisogno di creare i file e inserire l'elenco di nomi di file negli Appunti, ogni volta. Tuttavia, Windows supporta una modalità chiamata Delayed Rendering, che viene utilizzata esattamente per tali casi. Fondamentalmente si mette solo uno stub vuoto dei dati negli appunti e solo quando un'altra applicazione tenta di accedere ai dati verrà richiesta dalla propria app. Quindi potresti implementarlo in un modo che solo quando l'utente tenta di incollare i file in explorer li salverà sul disco e restituirà l'elenco dei nomi di file.
Cose interessanti - grazie per i collegamenti :-) –
Grazie anche a me. Impara qualcosa di nuovo ogni giorno! –