C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[7]: IDropTargetのクラスIDの名称


(過去ログ 32 を表示中)

[トピック内 17 記事 (1 - 17 表示)]  << 0 >>

■15616 / inTopicNo.1)  IDropTargetのクラスIDの名称
  
□投稿者/ 熊谷隆史 (3回)-(2008/03/17(Mon) 13:41:43)

分類:[C/C++] 

2008/03/17(Mon) 13:52:03 編集(投稿者)

IEの履歴削除に使用する
IUrlHistoryStg2インターフェースの
クラスIDの名称は、
「Microsoft Url History Service」ですが、
IDropTargetのクラスIDの名称は
何なのでしょうか?
引用返信 編集キー/
■15620 / inTopicNo.2)  Re[1]: IDropTargetのクラスIDの名称
□投稿者/ シャノン (320回)-(2008/03/17(Mon) 14:16:13)
No15616 (熊谷隆史 さん) に返信
> 2008/03/17(Mon) 13:52:03 編集(投稿者)
>
> IEの履歴削除に使用する
> IUrlHistoryStg2インターフェースの
> クラスIDの名称は、
> 「Microsoft Url History Service」ですが、
> IDropTargetのクラスIDの名称は
> 何なのでしょうか?

IEの履歴削除にIDropTargetは要らないと思いますが、何に使用するIDropTargetのクラス名が欲しいのでしょうか?
IDropTargetを実装したクラスはたくさんありますから。
引用返信 編集キー/
■15621 / inTopicNo.3)  Re[1]: IDropTargetのクラスIDの名称
□投稿者/ 魔界の仮面弁士 (679回)-(2008/03/17(Mon) 14:39:43)
「インターフェイスのクラスID(の名称)」というのが良く分からないのですが、
何のために、それを調べようとしておられるのでしょうか?

■No15616 (熊谷隆史 さん) に返信
> IEの履歴削除に使用する
> IUrlHistoryStg2インターフェースの
> クラスIDの名称は、
> 「Microsoft Url History Service」ですが、

 [uuid(3C374A41-BAE4-11CF-BF7D-00AA006946EE)]
 interface IUrlHistoryStg : IUnknown …

 [uuid(AFA0DC11-C313-11D0-831A-00C04FD5AE38)]
 interface IUrlHistoryStg2 : IUrlHistoryStg …

を実装した

 [uuid(3C374A40-BAE4-11CF-BF7D-00AA006946EE)]
 coclass UrlHistory …

の事であれば、レジストリの
 HKEY_CLASSES_ROOT\CLSID\{3C374A40-BAE4-11CF-BF7D-00AA006946EE}
に "Microsoft Url History Service" と記録されていますね。



> IDropTargetのクラスIDの名称は
> 何なのでしょうか?
(IEの履歴削除と、IDropTarget に何か関係がありましたっけ?)

IDropTarget というと、
 //HKEY_CLASSES_ROOT\Interface\{00000122-0000-0000-C000-000000000046}
 [uuid(00000122-0000-0000-C000-000000000046)]
 interface IDropTarget …
ですよね。

このインターフェイスを実装した、どのクラスの事を指しておられるのでしょうか?
(どのような場面/アプリで使われているクラスなのでしょうか?)

IDropTarget を実装したクラスの例としては、たとえば、
 [uuid(CC6EEFFB-43F6-46C5-9619-51D571967F7D)]
 coclass PublishDropTarget
などがありますが、これなどは
 HKEY_CLASSES_ROOT\CLSID\{CC6EEFFB-43F6-46c5-9619-51D571967F7D}
に、"Web 発行ウィザード" と記録されていますね。(日本語版の場合)

引用返信 編集キー/
■15622 / inTopicNo.4)  Re[2]: IDropTargetのクラスIDの名称
□投稿者/ 熊谷隆史 (4回)-(2008/03/17(Mon) 14:40:28)
No15620 (シャノン さん) に返信
> IEの履歴削除にIDropTargetは要らないと思いますが、何に使用するIDropTargetのクラス名が欲しいのでしょうか?
> IDropTargetを実装したクラスはたくさんありますから。

シャノンさん、ありがとうございます。

レジストリエディタで「IDropTarget」で
検索しても得られるのはインタフェースIDしか、
出てこないので、
おそらく別の名称なのかなと思った次第です。
(IEの履歴削除は比較のために提示しただけで
それを行いたい訳ではないです。
誤解を招きやすい文章ですみません)
引用返信 編集キー/
■15624 / inTopicNo.5)  Re[3]: IDropTargetのクラスIDの名称
□投稿者/ シャノン (321回)-(2008/03/17(Mon) 14:52:26)
No15622 (熊谷隆史 さん) に返信
> レジストリエディタで「IDropTarget」で
> 検索しても得られるのはインタフェースIDしか、
> 出てこないので、
> おそらく別の名称なのかなと思った次第です。
> (IEの履歴削除は比較のために提示しただけで
> それを行いたい訳ではないです。
> 誤解を招きやすい文章ですみません)

インターフェイスとクラスの関係は1:nです。
IDropTargetを実装するクラスは複数あり、自分で作ることもできますから、クラス名は特定できません。

IUrlHistoryStg2 も、実装しているのが事実上IEだけかもしれませんが、他のブラウザでも実装することはできます。
ですから、IUrlHistoryStg2 が常に Microsoft Url History Service とは限らないかもしれません。
FirefoxとかOperaとかは実装していないんでしょうかね。
引用返信 編集キー/
■15625 / inTopicNo.6)  Re[2]: IDropTargetのクラスIDの名称
□投稿者/ 熊谷隆史 (5回)-(2008/03/17(Mon) 15:01:41)
No15621 (魔界の仮面弁士 さん) に返信

魔界の仮面弁士さん、ありがとうございます。

# 最初に書くべきでした(失礼しました)。

RegisterActiveObjectの第一引数に
IDropTargetインターフェースポインタを
渡したいのですが

そうすると、第二引数にクラスIDを指定することに
なりますがここに何を、渡したらいいのかを
悩んでまして。

IDropTargetのクラスIDがあるのかなと
思ったのが今回の質問の動機です。
引用返信 編集キー/
■15626 / inTopicNo.7)  Re[3]: IDropTargetのクラスIDの名称
□投稿者/ 熊谷隆史 (6回)-(2008/03/17(Mon) 15:14:55)
No15624 (シャノン さん) に返信
シャノンさん、ありがとうございます。

> インターフェイスとクラスの関係は1:nです。
> IDropTargetを実装するクラスは複数あり、自分で作ることもできますから、クラス名は特定できません。

なるほどです(勉強になります)。
他アプリのウィンドウプロパティ(OleDropTargetInterface)
に設定されているIDropTargetをGetPropで得た場合、

この実装されているクラスの
クラスIDはどうやって調べるものなのでしょうか?
(調べる方法が存在するのでしょうか)
引用返信 編集キー/
■15627 / inTopicNo.8)  Re[3]: IDropTargetのクラスIDの名称
□投稿者/ シャノン (322回)-(2008/03/17(Mon) 15:16:50)
No15625 (熊谷隆史 さん) に返信
> ■No15621 (魔界の仮面弁士 さん) に返信
>
> 魔界の仮面弁士さん、ありがとうございます。
>
> # 最初に書くべきでした(失礼しました)。
>
> RegisterActiveObjectの第一引数に
> IDropTargetインターフェースポインタを
> 渡したいのですが
>
> そうすると、第二引数にクラスIDを指定することに
> なりますがここに何を、渡したらいいのかを
> 悩んでまして。
>
> IDropTargetのクラスIDがあるのかなと
> 思ったのが今回の質問の動機です。

IDropTarget はインターフェイスであってクラスではありませんから、IDropTarget のクラス ID というものはありません。

ところで、書きかけのコードはありますか?
RegisterActiveObject の第一引数に渡したいポインタはどのように用意しているのでしょうか?
引用返信 編集キー/
■15628 / inTopicNo.9)  Re[4]: IDropTargetのクラスIDの名称
□投稿者/ シャノン (323回)-(2008/03/17(Mon) 15:23:26)
No15626 (熊谷隆史 さん) に返信
> 他アプリのウィンドウプロパティ(OleDropTargetInterface)
> に設定されているIDropTargetをGetPropで得た場合、
>
> この実装されているクラスの
> クラスIDはどうやって調べるものなのでしょうか?
> (調べる方法が存在するのでしょうか)

入れ違いになったようですが、「そもそも何をしたいのか」を詳しく書いたほうがいいと思います。

あと、GetPropでOleDropTargetInterfaceを取得するのはやめたほうがいいでしょう。
MSDNにドキュメントされていないようですので、それで取得できる保証がありません。

他のウィンドウに設定されているIDropTargetを取ってきて、アクティブオブジェクトに登録する…?
やりたいことが見えてきません。
引用返信 編集キー/
■15630 / inTopicNo.10)  Re[5]: IDropTargetのクラスIDの名称
□投稿者/ シャノン (324回)-(2008/03/17(Mon) 15:31:02)
No15628 (シャノン さん) に返信
> やりたいことが見えてきません。

このへんの絡みなのかな? かな?
http://www2.moug.net/bbs/exvba/20071211000035.htm
引用返信 編集キー/
■15635 / inTopicNo.11)  Re[6]: IDropTargetのクラスIDの名称
□投稿者/ 熊谷隆史 (7回)-(2008/03/17(Mon) 16:00:13)
No15630 (シャノン さん) に返信

シャノンさん、度々ありがとうございます。
> やりたいことが見えてきません。

おしゃっる通りですね。
他アプリに対して、
ファイルパスをドロップさせたいのですが、


慣れてるVBA側に出来る限りの処理を
持ち込みたいので、ややこしいことになっています。


本来はDLL側でIShellFolder::GetUIObjectOfで
IDataObjectを取得してやって、
IDropTarget::Drop(だけでいいのか分かりませんが)
を呼んでやればいいのでしょうけど。
(こちらの手法も試行錯誤中なので)

# リンク先もテストなので、IEを対象にしています。
引用返信 編集キー/
■15636 / inTopicNo.12)  Re[7]: IDropTargetのクラスIDの名称
□投稿者/ 熊谷隆史 (8回)-(2008/03/17(Mon) 16:13:46)
> # リンク先もテストなので、IEを対象にしています。

リンク先を下記とカン違いしてました(失礼しました)。

http://www2.moug.net/bbs/program/20080315000002.htm
引用返信 編集キー/
■15637 / inTopicNo.13)  Re[7]: IDropTargetのクラスIDの名称
□投稿者/ シャノン (326回)-(2008/03/17(Mon) 16:16:34)
No15635 (熊谷隆史 さん) に返信
> 他アプリに対して、
> ファイルパスをドロップさせたいのですが、

ネタ元の moug スレを見ても、いまひとつ意図がつかめません。
もうちょっと詳細に書いてみてくださいな。

・対象のウィンドウは WM_DROPFILES を受け付ける?
・対象のウィンドウは IDropTarget を実装している?
・ユーザーのオペレーションなしで、ファイルのD&Dをシミュレートしたい?
 (実際にD&Dするのではなく、対象のアプリにD&Dされたように振舞わせたい)
・D&Dしたいものは何?

など。
引用返信 編集キー/
■15638 / inTopicNo.14)  Re[4]: IDropTargetのクラスIDの名称
□投稿者/ 渋木宏明(ひどり) (676回)-(2008/03/17(Mon) 16:21:36)
渋木宏明(ひどり) さんの Web サイト
> この実装されているクラスの
> クラスIDはどうやって調べるものなのでしょうか?

その COM オブジェクトが IPresist インターフェースまたは IPersist 派生のインターフェースを実装しているなら、IPersist::GetClassID() で取得できます。

それ以外にはメジャーで汎用的な方法はありません。

引用返信 編集キー/
■15640 / inTopicNo.15)  Re[5]: IDropTargetのクラスIDの名称
□投稿者/ 熊谷隆史 (9回)-(2008/03/17(Mon) 16:44:48)
No15638 (渋木宏明(ひどり) さん) に返信
渋木宏明(ひどり) さん、ありがとうございます。

> その COM オブジェクトが IPresist インターフェースまたは IPersist 派生のインターフェースを実装しているなら、IPersist::GetClassID() で取得できます。
>
> それ以外にはメジャーで汎用的な方法はありません。

IPersist::GetClassID() について、調べてみます。
引用返信 編集キー/
■15641 / inTopicNo.16)  Re[6]: IDropTargetのクラスIDの名称
□投稿者/ 熊谷隆史 (10回)-(2008/03/17(Mon) 16:50:36)
No15637 (シャノン さん) に返信
シャノンさん、数多くのレスを
ありがとうございました。
引用返信 編集キー/
■15726 / inTopicNo.17)  Re[7]: IDropTargetのクラスIDの名称
□投稿者/ 熊谷隆史 (11回)-(2008/03/19(Wed) 14:26:47)
IPersist::GetClassIDの呼び出しで
IEが落ちるのでクラスIDが取れるのか
分かりませんでした。
出来る限りDLL側で試行錯誤する別案を
クリアしてから
改めてこちらにもチャレンジしようと
思います。
ありがとうございました。
解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -