-PR-
締切り
済み

COM

  • 暇なときにでも
  • 質問No.18495
  • 閲覧数75
  • ありがとう数4
  • 気になる数0
  • 回答数3
  • コメント数0

お礼率 30% (18/60)

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

具体的にはドロップされた対象のフルパスとドロップされたファイルのフルパスのリストを得たいのですが、
わかりづらい質問内容かもしれませんが、どなたか教えていただけないでしょうか?
通報する
  • 回答数3
  • 気になる
    質問をブックマークします。
    マイページでまとめて確認できます。

回答 (全3件)

  • 回答No.1
レベル9

ベストアンサー率 56% (45/80)

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

お礼率 30% (18/60)

ウインドウにドロップするのではなく、
エクスプローラ上にあるアイコンにドロップしたいんです。
それも.exeにじゃなくて、自分が指定した拡張子のファイルに。

例えばa.txtのアイコンの上にb.txtをドロップさせたら
このソフトが起動して二つのファイルの内容を連結したものがa.txtに書きこまれた状態でメモ帳が起動する・・・
とかをやりたいんです。

ATLとかCOMとかの話しだと思うのですが、
どうもよくわからなくて・・・
投稿日時 - 2000-12-15 01:25:13


  • 回答No.2
レベル10

ベストアンサー率 28% (42/146)

それってごく一般的に、自作アプリケーションにドラッグ&ドロップ ってことですよね? ご使用のライブラリはATLってことでよいでしょうか。 アプリケーション一個丸ごとATLで作ってるのでしょうか? それとも、自作COMコンポーネントでDrag&Drop動作の サポートのため・・・ということでしょうか。 IPersistFileは多分関係ないと思います。 IDropTarge ...続きを読む
それってごく一般的に、自作アプリケーションにドラッグ&ドロップ
ってことですよね?
ご使用のライブラリはATLってことでよいでしょうか。
アプリケーション一個丸ごとATLで作ってるのでしょうか?
それとも、自作COMコンポーネントでDrag&Drop動作の
サポートのため・・・ということでしょうか。

IPersistFileは多分関係ないと思います。
IDropTargetインターフェイスを継承して、
RegisterDragDropで目的のウインドウをターゲットとして
登録してください。
その後、IDropTargetのDropメソッドを実装してください。
引数にIDataObjectのポインタがありますので、
こいつにアクセスしてGetDataメソッドを起動し、STGMEDIUM構造体へのポインタを得てください。
STGMEDIUM構造体にファイル名を示すメンバがありますよね?

私はやったことないので、ちょっとこれで上手く行くか断言出来ませんが
私がMSDNから読み取れるのはこの程度です。

あとはCOMコンテナにイベントをFireするなり何なりお好きに
いじればいいと思います。
補足コメント
Sephy

お礼率 30% (18/60)

>自作アプリケーションにドラッグ&ドロップ
とは違うんですけど、同じ処理で問題無いということでしょうか?

>目的のウインドウをターゲットとして登録してください
下記の補足に書いた例でいうと、
「目的のウインドウ」とはa.txtとb.txtが表示されている
エクスプローラのウインドウのことでいいのでしょうか?


それとついでなのですが、
DropメソッドとDoDragDropメソッドの違いが
HELPからあまりよく理解できませんでした・・・
もしよければこの違いも教えていただけないでしょうか?
投稿日時 - 2000-12-16 02:40:10
  • 回答No.3
レベル12

ベストアンサー率 40% (230/562)

Microsoft PowerToysのSendTo Extensionsが実行ファイル以外のものに、ファイルを送るとかいう機構を使っているようなので、参考にならないかな(じしんなし)。 ...続きを読む
Microsoft PowerToysのSendTo Extensionsが実行ファイル以外のものに、ファイルを送るとかいう機構を使っているようなので、参考にならないかな(じしんなし)。
このQ&Aのテーマ
このQ&Aで解決しましたか?
関連するQ&A
-PR-
-PR-
こんな書き方もあるよ!この情報は知ってる?あなたの知識を教えて!
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する
-PR-
-PR-
-PR-

特集


関連するQ&A

-PR-

ピックアップ

-PR-
ページ先頭へ