C#のFormからWindowsのExplorerへのD&Dした時のパスの取得方法とは?

このQ&Aのポイント
  • C#のプログラム歴1ヵ月の新参者が、C#のFormからWindowsのExplorerへのドラッグ&ドロップした時のパスの取得方法について知りたいです。
  • ネットで検索してみたのですが、ドラッグ&ドロップの解説は見つけられたのですが、Windows Explorerへのドラッグ&ドロップの解説が見つけられませんでした。
  • C#だけでの実装では難しいのでしょうか?どなたか教えていただけると助かります。
回答を見る
  • ベストアンサー

C#:C#のFormから、WindowsのExplorerへのD&Dした時のパスの取得

C#のプログラム歴1ヵ月の新参者です。 (C,C++の経験はありません。) C#のListViewのアイテムを、WindowsのExplorerに ドラッグ&ドロップしたときの、フォルダパスを C#側で拾いたいのですが、拾い方がわからず困っています。   ネットで検索してみたのですが、WindowsのExplorerから C#側へのドラッグ&ドロップの解説は沢山あるのですが、 Windows Explorerへのドラッグ&ドロップの解説をしてくれる所が、全く見つけられずトホホな状況になっています。 C#だけでの実装では無理なのでしょうか? すいませんが、よろしくお願いいたします。

  • mil9
  • お礼率90% (10/11)

質問者が選んだベストアンサー

  • ベストアンサー
  • JeanneNet
  • ベストアンサー率48% (100/208)
回答No.1

こんにちは、じゃんぬねっと です。 ドロップ後のお仕事は Explorer 側のお仕事ですので基本的にはムリだと思います。 OLE の SetData を使えばコピー自体は実装可能ですが、 コピー先のパスを取得するのはムリだと思います。

参考URL:
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/shellcc/platform/shell/programmersguide/shell_basics/sh
mil9
質問者

お礼

じゃんぬねっとさん、お返事が遅くなり吸いませんでした。 PCの調子が悪く中々回答をチェックすることができませんでした。お許しください。 やはり、C#側での機能で取得することは無理なんですか、残念です。 でも、別の方法で実現できそうなのでもう少し調べてみることにします。 ありがとうございました。

関連するQ&A

  • ドラッグ&ドロップについて

    VB.NETについて質問です。 ListViewでドラッグ&ドロップするコーディングをしているのですが、 外からListViewへのドラッグ&ドロップ(データ取り込み)、ListViewから外へのドラッグ&ドロップ(データ出力)、ListView内でのドラッグ&ドロップ(アイテム並べ替え)を区別する方法を教えて下さい。

  • ドラッグしたファイルのパスを取得したい

    Windows2000(sp3) VisualBasic6.0(sp5) で開発しています。 テキストボックス付きのあるアプリケーションを作成し、そのアプリのテキストボックス上へ、エクスプローラーからファイルをドラッグ&ドロップすると、そのファイルのフルパスを表示する。 ということをしたいと考えています。 例 コマンドプロンプトに、エクスプローラーからファイルをドラッグ&ドロップすると、そのファイルのパス付きの名称が表示される。 良い方法をご存知の方いらっしゃいましたら教えてください。 よろしくお願いします。

  • DragEnterイベントについて(VS2008、ドラッグ&ドロップ)

    VisualStudio2008 C# で開発をしています。 ListViewにエクスプローラーからファイルをドラッグ&ドロップしようとしているのですが、うまくできません。 いろいろと調べて下記の3点を抑えればできるのかと思っていますが、思ったように動きません。 ListViewのAllowDrop=True; DragEnterイベントでe.Effect = DragDropEffects.Copy; DragDropイベントでDropした後の処理 きちんと記述しているつもりですが、DragEnterイベントが発生しません。 ちなみに、同じListViewの要素をドラッグ&ドロップするとDragEnterイベントは発生するので、あくまで外部(エクスプローラーなど)からドラッグされたものが受け付けないようです。 何が原因なのでしょうか? ほかに設定などあるのでしょうか?

  • リストビューでのドラッグ&ドロップでの反転表示

    VC++にてエクスプローラもどきを作成していて、 ドラッグ&ドロップの操作を実装中です。 ListViewにて、OnLButtonDown内で マウスで押下されたフォルダイメージを CreateDragImageで作成しマウスカーソルを変更しました。 そして、ドラッグ中に、別フォルダへカーソルが移動した際、 そのフォルダを反転させるために、 OnDragOver内で、まず、全ての選択状態をクリアし、 for ( i = 0; i < list.GetItemCount(); i++ ){   item.iItem = i;   ListView_GetItem( list, &item2 );   item2.state = 0;   item2.stateMask = LVIS_SELECTED;   ListView_SetItem( list, &item ); } 対象となるフォルダのLV_ITEMを取得後に、 item.state = LVIS_SELECTED; item.stateMask = LVIS_SELECTED; ListView_SetItem( list, &item ); を行い選択状態に変更させました。 一応、ドラッグ&ドロップは、ある程度できているのですが、 描画が汚く、下記の2点について困っています。 1.ドラッグされたフォルダの反転表示が綺麗ではない(画像参照) 2.カーソル下に何のフォルダも無い場合は、   全ての選択状態をクリアだけでDragOverの処理を終了しているが、   前回選択状態にしたフォルダが反転表示(汚い状態で…)されたまま なにか、修正方法はありますでしょうか?

  • VB.NET リストビュー内で移動

    いつもお世話になっております。 ListViewとImageListを組み合わせ画像一覧表示できるように プログラムをしたのですが、 その際にドラッグ&ドロップでListView内の画像を移動(並び替え)を行いたいのですが、そのような方法はあるのでしょうか。 ListViewからListViewの移動は行えたのですが、一つのListView内での 移動が検索してもわからず投稿致しました。 ご教授お願い致します。

  • VSC# ListViewへのドラッグ&ドロップ

    エクスプローラにある複数のファイル同時にListViewにドラッグ&ドロップしてそのファイル名をListViewに追加したいのですが、どのようにすれば出来るのでしょうか? ※ファイル名の表示はすでに出来ています。複数追加のやり方を知りたいです。 教えてください、お願いします><

  • [C#]ListView一覧表示時の幅設定について

    [開発言語] C# [開発環境] Visual Studio 2005 C#のListViewに関して質問です。 ViewプロパティにListを指定した場合のItemの幅はどのように設定するのでしょうか? 理想としては、エクスプローラのように ItemのTextの長さに応じて最適な幅に調節したいのです。 よろしくお願いいたします。

  • Windows エクスプローラー上

    Windowsのエクスプローラー上でボタンを押すと検索できる機能がありますよね? (cと入力すると頭文字cの部分に飛ぶもの) Windows8でやろうとすると左上に矢印付きの変なの(説明しづらい)出るときって検索できるようにするにはどうすれば良いのでしょうか? 中々説明しづらい物で検索もどうやってして良いのかわからない状態です。 アホですみません

  • C#でD&D時に同一アプリを複数起動したい

    XXX.exeというアプリがあります。 このアプリは、フォーム1つからなり、1ファイルを読み込んで、対象の行を抽出し、1つのウィンドウ上に表示する簡単なプログラムです。 【やりたい事】 XXX.exeに複数ファイルをドラッグ&ドロップ(以下D&D)した時に、D&Dした数だけウィンドウが開く様にしたいです。 イメージとしては、テキストファイルを複数選択し、エンターキーを押すとメモ帳が複数起動する様な動作をD&Dで行えたらと思います。 (このプログラムも、現状、複数ファイルを選択し、エンターキーを押すことで複数起動ができるのですが、やりたい事としてはD&Dで複数ウィンドウを開きたく思います。) "別プロセス 起動"とか"ドラッグ&ドロップ 複数ファイル 起動"とか色々調べてみたのですが、二十起動禁止のものしか見つからりませんでした。 このような類のソフトは、たくさんあると思うのでもっと簡単にできそうな感じがするのですが。 どうなのでしょうか? どのようにすれば良いかご存知の方、アドバイス宜しくお願いいたします。

  • 【C#】Form1からForm2を表示したとき、Form2がForm1

    【C#】Form1からForm2を表示したとき、Form2がForm1を所有する 検索しても見つからなかったので質問させていただきます。 Form1からForm2を表示(Form2.Instance.Show();)したとき、 Form2がForm1の上にこないように、また、Form2は必ずForm1のすぐ後ろであるようにして欲しいんです。 たとえば、 IEで検索ウィンドウを開いたときに、検索ウィンドウを表示していてもIEは操作できるけど(モードレス)、IEの後ろに検索ウィンドウが行くことはありません。 これはForm2.Instance.Show(this);とすればいいだけですが、 自分がやりたいのはその逆です。 検索ウィンドウの後ろにIEが行くことがないようにしたいんです。 Form1.Activateなどを使って無理やりさせようとしましたが、 無理だったので質問しました。 わかる方は教えていただけると嬉しいです。 お願いします。 (ちなみにVisualStudio2010、.NET Framework3.5です。)

専門家に質問してみよう