• 締切済み

COM

Windowsプログラミングについて質問です。 自分の好きな拡張子のファイルアイコンにドラッグドロップの動作を付けたいと思っています。 レジストリにShellEx\DropHandlerを追加して、CLSIDを書きこめばできるっぽいという所まではわかりました。 ですがどのようなプログラムを組めばよいのか、それ以上わかりません。 MSDNライブラリを眺めてもIPersistFileとかIDropTargetとかを 使えば良さそうな感じなのか?というような程度しかわかりませんでした。 具体的にはドロップされた対象のフルパスとドロップされたファイルのフルパスのリストを得たいのですが、 わかりづらい質問内容かもしれませんが、どなたか教えていただけないでしょうか?

  • Sephy
  • お礼率30% (18/60)

みんなの回答

  • haporun
  • ベストアンサー率40% (230/562)
回答No.3

Microsoft PowerToysのSendTo Extensionsが実行ファイル以外のものに、ファイルを送るとかいう機構を使っているようなので、参考にならないかな(じしんなし)。

参考URL:
http://plaza7.mbn.or.jp/~suto/pt.htm
  • hyde-la
  • ベストアンサー率28% (42/146)
回答No.2

それってごく一般的に、自作アプリケーションにドラッグ&ドロップ ってことですよね? ご使用のライブラリはATLってことでよいでしょうか。 アプリケーション一個丸ごとATLで作ってるのでしょうか? それとも、自作COMコンポーネントでDrag&Drop動作の サポートのため・・・ということでしょうか。 IPersistFileは多分関係ないと思います。 IDropTargetインターフェイスを継承して、 RegisterDragDropで目的のウインドウをターゲットとして 登録してください。 その後、IDropTargetのDropメソッドを実装してください。 引数にIDataObjectのポインタがありますので、 こいつにアクセスしてGetDataメソッドを起動し、STGMEDIUM構造体へのポインタを得てください。 STGMEDIUM構造体にファイル名を示すメンバがありますよね? 私はやったことないので、ちょっとこれで上手く行くか断言出来ませんが 私がMSDNから読み取れるのはこの程度です。 あとはCOMコンテナにイベントをFireするなり何なりお好きに いじればいいと思います。

Sephy
質問者

補足

>自作アプリケーションにドラッグ&ドロップ とは違うんですけど、同じ処理で問題無いということでしょうか? >目的のウインドウをターゲットとして登録してください 下記の補足に書いた例でいうと、 「目的のウインドウ」とはa.txtとb.txtが表示されている エクスプローラのウインドウのことでいいのでしょうか? それとついでなのですが、 DropメソッドとDoDragDropメソッドの違いが HELPからあまりよく理解できませんでした・・・ もしよければこの違いも教えていただけないでしょうか?

回答No.1

ちょっとわかりづらい質問です。。。 ウィンドウにドロップされたファイルのパスを取得するのであれば、DragAcceptFiles関数、DragQueryFile関数を調べてみてください。 IPersistFileとかIDropTargetについてはパスです。

Sephy
質問者

補足

ウインドウにドロップするのではなく、 エクスプローラ上にあるアイコンにドロップしたいんです。 それも.exeにじゃなくて、自分が指定した拡張子のファイルに。 例えばa.txtのアイコンの上にb.txtをドロップさせたら このソフトが起動して二つのファイルの内容を連結したものがa.txtに書きこまれた状態でメモ帳が起動する・・・ とかをやりたいんです。 ATLとかCOMとかの話しだと思うのですが、 どうもよくわからなくて・・・

関連するQ&A

  • WMP10の再生リスト

    再生リストはファイルとして保存するしかできないのですか? ライブラリに新しい再生リストを作り、 ドラッグアンドドロップで項目を追加することができたような気がするのですが。

  • コマンドプロンプト(XP)

    初歩的な質問ですが、batファイルにドラッグ&ドロップされたファイルのパスを引数にする方法を教えてください。 また、そのパスから拡張子を取り去る方法を教えてください。

  • ListViewでのリスト表示(初歩的な質問です)

    WinXP Pro VB6.0で開発を行っています。 現在、ドラッグ&ドロップにより、ListViewでファイルのパスをリスト表示するプログラムを作成しています。 ListBoxではなくListViewを利用する理由は、パスの長さに合わせてスクロールバーを表示したいためです。 そこで、ドラッグ&ドロップイベントでファイルのパスを取得することは出来たのですが、単純なリスト表示ができません。 ListView1.ListItems.Add(, , tmpPath) でパスを追加しているのですが、プロパティの設定がよく分からずうまく表示できません。 Viewを2-lvwLstに変更し、何となく表示はしているのですが2列表示になり、縦のスクロールバーが表示されません。 なお、表示の際、ヘッダ部分は必要ありません。 また、パスのみの表示であるため、一項目の表示です。 プロパティの設定例を教えていただけませんか? 非常に初歩的な質問ですがよろしくお願いします。

  • wma→iTunesに取り込めるようなファイルへ

    wmaファイルをiTunesに取り込める形にするにはどうすればよいでしょうか。曲をiTunesへドラッグドロップや、ライブラリに追加 ではできませんでした。

    • ベストアンサー
    • Mac
  • (vb.net)リッチテキストボックスへのドラッグアンドドロップによるファイルの貼り付け

    こん@@は、どうしても出来なくて困ってます。 vb.netにおいて、リッチテキストボックスへのドラッグアンドドロップで、ファイルそのものを貼り付けたいのですが、どうしても出来ません。 ワードパッドや、outlookの文字入力部分にファイルをドラッグしたらアイコン状態でファイルが張り付きますよね? このような動作をvb.netのRichTextBoxにて実装したいのです。(ダブルクリックしたらそのファイルを開けれる状態で貼り付けたい) vb6.0だとRichTextBoxを作成するだけでその辺のことは最初から出来るのですが、vb.netだとうまく行きません。 現状AllowDropとかはTrueにもちろんしています。 MSDN Library 等調べてもtextやビットマップを貼り付けると言うような情報しか得られませんでした。 どなたか、わかる方がいらっしゃいましたら教えてください。 お願いします。

  • バッチファイルでドラッグ&ドロップの情報を取得

    こんばんは bat ファイルを書いているのですが、次のような情報の取得仕方がわからず困っています。 bat ファイルを起動するには、あるファイルをドラッグアンドドロップします。 このとき、 set FilePath = ドロップされたファイルの、ドロップされる前にあったパス set FileName = ドロップされたファイルの拡張子を除くファイル名 set FileExt = ドロップされたファイルの拡張子部分 のように、それぞれの情報を変数に格納したいのですが、どのように書けばよいのでしょうか。 教えてください。

  • ニコニコ動画をipodに入れたくて、URLにfireをつけてmp4でダ

    ニコニコ動画をipodに入れたくて、URLにfireをつけてmp4でダウンロードしたのですが、そのあとのipodへの入れ方がわかりません。 ドラッグ&ドロップしてもなにもならないし、ファイル→ファイルをライブラリに追加、でもとくになにもかわりません。。 情報おねがいします!

  • VC++でドラッグドロップ

    いつもお世話になっております。 今回はドラッグドロップについてお聞きしたいことがあります。 ダイアログに読取専用エディットボックスとリストボックスをつけて フォルダをドロップするとエディットにはフォルダのフルパス、 リストにはフォルダ内のファイルが列挙されるというソフトを 作っております。 現状、リストへフォルダをドロップした場合は以上の動作をしますが エディットへドロップしても何の反応も起きません。 今回はエディットとリストどちらにドロップしても同様の動作をしたく、 ResourceViewで両方ドラッグドロップ許可にしていますが、 リストのほうはドロップするとアイコンには+がでて、 ドロップ可能のようになっていますが実際にはWM_DROPFILESすら 捕まえることができません。 読み取り専用がよくない等いろいろ試しては見ましたが できませんでした。 リストのほうをドロップ不可(エディットのほうのみ可能)にした場合も 何もおきなかったのですが、そもそもエディットボックスではドロップは 不可能なのでしょうか? 以上の点をご教授願いたいです。 よろしくお願いします。 開発環境は VC++6.0 Professional SP2 OSは WindowsXP です。

  • 「ファイルスペック」の意味

    ファイルスペック とは何のことなのでしょうか? WEBで検索したところ、ファイルのフルパス名の ことらしいのですが、MSDNを見ると 「パス区切り文字がない場合、そのパスはファイルスペックと見なされます。」 という記述がありました。 じゃあ、パス区切り文字がある場合はファイルスペ ックでないの? http://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/vclib/html/vclrfcpathtisfilespec.asp ご存知の方、ご教授願います。

  • iTunesで特定のmp3が再生できない

    mac初心者です。 ある特定のmp3ファイルだけ、iTunesで再生できません。 他のファイルは、ライブラリにドラッグ&ドロップしたりして曲を追加すると 再生できるのですが、(若しくはダブルクリック)ある特定のファイルは ライブラリに登録できないため、再生できません。 新規プレイリストを作成し、そこにドラッグしても追加されませんでした。 メニューのファイルから指定しても追加できませんでした。 しかし、ファイルの表示をカラムにしてプレビューすると再生できました。 ファイルの種類はmp3オーディオファイルと、きちんと認識している模様です。 ちなみにquicktimeではきちんと再生できます。 なぜiTuneだけ再生できないか、とても不思議です。  これは一体どうすればいいのでしょうか? ご存じの方いらっしゃいましたらご教授お願いします。 powerbookG4 os X 10.2.3(6G30) iTunes 3.0.1

    • 締切済み
    • Mac

専門家に質問してみよう