• 締切済み

デスクトップへコピー時に処理をしたい

アプリケーションからデスクトップへOLEを使用してドラッグ&ドロップした際、 コピーさせるファイルを収集したいのですがどのようにすればよいのでしょうか? ドラッグ開始時、DoDragDrop()を呼び出すと 後はターゲットとなるアプリケーションがDrop()で受け取ってしまい ファイル収集処理を入れる余地がありません。 OLEを使用しているからできないのでしょうか? 他の方法は知らないもので。 Windows2000、VisualC++6.0です。 何かご存知の方教えてください。

みんなの回答

  • TdnrSym
  • ベストアンサー率0% (0/0)
回答No.3

以前作ったソースを見つけました。 しかしサンプルソースではないので、お見せしても意味がないと思います。 よく覚えていませんが、手元のソースを見る限り以下のようにすればよいと思います。 ただし、『即時レンダリング』にくらべ手間がかかる覚悟が必要ですね。 (※注:以下の内容に責任は取れません。間違った点等、見つけられた人がいらっしゃいましたら  ご指摘ください。) 【クリップボード形式の登録】 ・アプリケーション起動時にRegisterClipboardFormat関数でアプリケーション用クリップボード形式を  登録しておきます。  (CF_HDROPなど既存のクリップボード形式を使う場合は必要ありません。) 【COleDataSource派生クラスの作成】 1.COleDataSourceの派生クラスを作成します。 2.COleDataSource派生クラスでOnRenderXXXをオーバーライドします。 3.OnRenderXXXにドロップ時の処理を記述します。  ・引数のクリップボード形式をチェックして、   アプリケーションがサポートしているものかチェックして処理を行います。  ・別のクラスで処理したい場合は、あらかじめポインタを派生クラスに保持しておいて   処理を委譲するなどすればよいと思います。 【ドラッグ元のウィンドウの処理】 1.ドラッグ開始時にCOleDataSource派生クラスのインスタンス pSource を作成します。 2.pSource->DelayRenderData()を呼び出します。 3.pSource->DoDragDrop()を呼び出します。 【蛇足ですが】 以前作ったソースでは、COleDropTargetクラスを派生させて、そこでドラッグイメージの処理を行っています。

全文を見る
すると、全ての回答が全文表示されます。
  • TdnrSym
  • ベストアンサー率0% (0/0)
回答No.2

質問の意図と違いましたらすいません。 私も3年前に仕事でそのようなプログラムをつくったように思います。 「遅延レンダリング」を使ってみてはどうでしょうか? ドラッグ開始時ではなくドロップ時に処理を行いたいときに便利です。 もしMFCを使われているのであれば、COleDataSourceクラスのDelayRenderData()を使えばできたような・・・ 手元に参考資料がないので具体的な回答ができなくて申し訳ありません。

yuyama
質問者

お礼

ありがとうございます。調べていてそれを見つけたのですが、実装方法がわからず断念してしまいました。 何か情報があれば教えていただけますか? 検索でもほとんど引っかからないもので。

全文を見る
すると、全ての回答が全文表示されます。
  • todo36
  • ベストアンサー率58% (728/1234)
回答No.1

VBならOLESetDataイベントでやればいいのだが

参考URL:
http://homepage2.nifty.com/inform/vbmania/source/drop2explorer.htm
yuyama
質問者

お礼

ありがとうございます。やっぱりなさそうですね。 あきらめて自分でイベント処理を組み込むことにします。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • マイピクチャの画像をデスクトップにコピー

    マイピクチャの画像をデスクトップにコピーすると、マイピクチャの画像のショートカットになってしまい圧縮ソフトに入りません。 デスクトップにドラッグアンドドロップするとマイピクチャの中の画像も移動してしまいます。マイピクチャの中の画像をデスクトップにコピーするいい方法を教えてください。御願いします。

  • APIイベントを発生させる方法を教えてください。

    自作アプリケーション(WindowsのVB)に、 メールファイルをOutLookソフトからドラッグドロップして、ドラッグドロップのAPIイベントを発生させたいのですが、できずに困っています。 (ちなみに、 OutLookソフトからメールファイルをデスクトップ上へドラッグドロップできます。その、デスクトップ上のメールファイルを、自作アプリケーションへドラッグドロップすると、ドラッグドロップのAPIイベントが発生します。) FormのLoadイベントで、2個のAPI関数を実行しています。 (1)サブクラス化開始    Call SubClass(フォーム名.hwnd) (2)フォームがドロップファイルを受け入れるよう設定    Call DragAcceptFiles(フォーム名.hwnd, True) どなたかアドバイスをお願いします。

  • デスクトップで

    XPでデスクトップのアイコンの感覚を詰める ことができたと思うのですが、どうやればよかったでしょうか?? あと少しわかりづらい質問なんですが、 98などはフォルダからファイルをデスクトップに ドラッグ&ドロップしたときに、アイコン群の一番最後に自動的に 置かれたのですが、XPでそのようにできる設定はないでしょうか? もうひとつすいません・・・ また98の話ですが、98のときはフォルダから実行ファイルをデスクトップに ドラッグ&ドロップした時に、exeの実行ファイルがそのままフォルダから出ることなく ショートカットがデスクトップに作られたんですが そのようにXPでもできないでしょうか? わかりづらい質問をいくつも失礼しました。

  • デスクトップに貼り付けたファイル

    いつもお世話になっております。 早速なのですが、デスクトップに貼り付けてあるエクセルファイルを、Cドライブに作ったフォルダにドラッグ&ドロップするとデスクトップにファイルは残りません。Dドライブに作ったフォルダに同じ事をすると、デスクトップに貼り付けてあったエクセルファイルはそのまま残ります。もちろんどちらも目的のフォルダにはエクセルファイルがちゃんと入ります。 つまり切り取っているかコピーしているかの違いだと思うのですが、この設定を変えるにはどうしたらいいのでしょうか。

  • WinXPでデスクトップの「マイドキュメント」を別ドライブに割り当て時

    WinXPでデスクトップの「マイドキュメント」を別ドライブに割り当て時 の詳細設定について教えてください。 WindowsXPで、デスクトップのアイコンにある「マイドキュメント」を、 OSがインストールされているハードディスク「C:\」とは別のドライブ 「F:\My_Documents」フォルダに割り当てているのですが、、 デスクトップに置いてあるファイルを、マイドキュメントフォルダアイコンへ ドラッグ&ドロップしても、F:\My_Documentsフォルダへコピーはされるのですが、 移動扱いにはならずデスクトップに残ってしまいます。 これを、通常のマイドキュメントフォルダ設定と同じく、ファイルの移動扱いに なって、ドラッグ&ドロップしたとしてもデスクトップに残らない設定の方法は あるのでしょうか。 どなたか設定に詳しい方、教えてください。

  • コピー時にアイコンが移動する(Windows7)

    こんにちは。 これはWindows7を搭載しているPCにおいての話です。 USBフラッシュメモリなどに保存しておいたファイルを、 ドラッグ&ドロップによって、デスクトップにコピーした時、 同じ名前のファイルが既に存在していると、上書き確認が行われます。 この時に、上書きすることを選択すると、そのファイルのアイコンの位置が、 ドラッグ&ドロップした場所に移動してしまします。 そこで上書き時に、元のアイコンの位置を保持する方法が知りと思っています。 何かいい方法を知っておられる方がいらっしゃれば、是非アドバイスを頂きたいと思います。 では、よろしくお願い致します。

  • 通常コピーとCMDでコピー速度の差の理由は?

    WindowsXPです。 数が多かったりファイル容量が大きいファイルをコピーする際、ドラッグ&ドロップでコピーするより、XCOPYなどでコピーするほうがコピーし始めもコピー中も早いのですが、これはなぜでしょうか。 ドラッグ&ドロップのほうが、ファイル全体を一旦どこかにキャッシュしたり、ファイル全体にインデックスのようなものを付けたりする分遅くなるような感じなのでしょうか。

  • DVDにコピーできない

    初心者ですみません。 以前、何か良く分からないエラーが出てからDrag'n Dropというソフトが暴れてCPUの使用率がずっと100%になったりしていたので、アンインストールしたところ、DVDにデータをコピーしようとしてもできなくなりました。 ドラッグアンドドロップでDVDドライブにデータを持っていっても「このフォルダをコピー中にエラーが発生しました」とでます。 その後、システムの復元でDrag'n Dropを消す前まで戻したのですが、まともに戻っていない感じで症状も変わりません。 普段あまりDVDにコピーしたりしないので、やり方が悪いのかソフトをアンインストールしたのが悪いのかも良く分からないので誰か分かる方教えてください。 OS:WindowsXP(HITACHI)

  • ファイル移動してもデスクトップからなくなりません

    デスクトップにとりあえずファイルを仮置きします。そのファイルが作業完了し、もう必要ないので、きちんとした場所に収納します。このファイルをドラッグアンドドロップしたら、以前はデスクトップから消えてたものが、今は消えなくなりました。わざわざ消す手間が増えてちょっとうっとうしくなって質問しました。どなたかドラッグアンドドロップで同時に消えるようにするか教えて下さい。

  • デスクトップ上のファイルをHD内に移動するとコピーされてしまう。

    HDにデスクトップ上のファイルをドラッグするとHDにコピーされてしまいます。 コピーせず、ただ移動したいだけなのですが何処かに設定ありましたか?

    • ベストアンサー
    • Mac