Ho lavorato su ciò che suona come una semplice funzionalità troppo a lungo ora. L'idea è che ho un'applicazione con un TreeView. Questa vista ad albero rappresenta il contenuto di un database organizzato in file e cartelle, proprio come in Esplora risorse. Quindi ha senso che l'utente dovrebbe essere in grado di trascinare quei file/cartelle dalla mia app e in Esplora risorse.Trascinare e rilasciare da C# a Windows Explorer con IStorage/IStream
Ho deciso di utilizzare un IStream
se trascina un file o un IStorage
se trascina una cartella. Dopo un tempo molto lungo e un modo di apprendimento più di quanto abbia mai voluto sapere su Win32/COM (e una spinta da una persona molto utile qui), finalmente ho creato quello IStream
o IStorage
.
Poi ho scoperto che di passare questo IStream
o IStorage
off a Windows Explorer, ho dovuto farlo in un STGMEDIUM
. Naturalmente, medium.tymed sarà o IStream
o IStorage
, a seconda di quale utilizzo, ma, a quanto ho capito, lo medium.unionmember
deve essere un puntatore allo IStream/IStorage
.
Ho provato a utilizzare la parola chiave fissa (ma non è blittabile, ovviamente), ho provato a convertire la cosa distrutta in un array di byte, ma non riesco a trovare un modo per farlo accadere, Ho provato a utilizzare GCHandle per collegarlo (ma non è ancora blittabile) e molte altre cose che non hanno funzionato.
Quindi la mia domanda è questa: Dato IStorage s
e STGMEDIUM m
, come faccio a popolare m.unionmember
in modo che Windows Explorer sia soddisfatto e accetti il rilascio?
se qualcuno sa di un'implementazione completa di IStream/IStorage per un URL http, si prega di inviare un'altra risposta qui, ci sono alcuni risultati di Google per questo problema. –
http://stackoverflow.com/questions/3168145/download-a-file-using-windows-istream –