ファイルシステム上にないものをドラッグ&ドロップで提供する話の続きです。前回は空のフォルダ(非実在フォルダをエクスプローラにD&Dする)でしたので、今回は中身のあるフォルダの話です。より正確には、中身のファイルが主題です。
これは分かってしまえば簡単な話でした。Does format CFSTR_FILECONTENTS will be worked for drag a virtual folder object to explorer ?に書かれているように、相対パスで指定するだけです。
簡単なことなので、今回のサンプルコードはWPF版のみです。
ネイティブコードやWindows Formsで試したければ、非実在ファイルをエクスプローラにD&Dするのコードを元に、ファイル名の文字列を書き換えてみてください。上記のWPF版のコードもそれをやっただけです。
wcscpy_s(fileGroupDescriptor->fgd[0].cFileName, LR"(hoge\test.txt)"); |
これだけで、ドラッグ&ドロップした先に、hogeというフォルダが作られ、その中にtest.txtが作られるという動作になります。
なお、フォルダに対する各種情報(作成日時など)を指定したければ、複数項目を作るときの要領で、フォルダの項目も用意しておけば良いのではないかと推測しています(複数:非実在ファイルのD&Dで複数ファイルを送り出す)、フォルダ:非実在フォルダをエクスプローラにD&Dする)。
これでドラッグ元がファイルシステム上にない場合のドラッグ&ドロップの話はひととおり済んだと思っています。たとえば、ドロップした瞬間ZIPファイルから中身を展開するなんてことももう実装できますよね。というわけで、次回はドラッグ&ドロップ以外のことを書こうと考えています。
スポンサード リンク |