COM

■ このスレッドは過去ログ倉庫に格納されています
1IUnkonwn
垢版 |
2007/01/10(水) 20:13:15
いざ語れや
2007/07/16(月) 08:53:34
>>99
System.EnterpriseServices でCOM+
10199
垢版 |
2007/07/16(月) 11:31:25
>>100
なるほど!
結局はCOM+ですか。
.NetはCOMをうまく内包しているんですね。
ということは、「.NetになったらCOMは必要ない」
という意見は的外れなんですね。
2007/07/16(月) 15:54:41
COM+はやめたほうがいいんじゃないか?
2007/07/16(月) 21:18:15
>>101
CLR自身がCOMで実装されてるのに、誰だよそんなこと言った奴は。
2007/08/15(水) 00:05:12
現在どのプロセスがどのCOMコンポーネントを使っているか
知る方法はないでしょうか?
2007/08/17(金) 01:49:01
CoCreateInstanceなんかをHOOKしとけば、判るんじゃない?
(直接DLLからインスタンスを生成する方法がないわけじゃないけど)
2007/08/20(月) 22:00:05
COMが流行のキーワードでなくなり、.NETは使いものにならない
ということで、プログラミング環境は90年代前半に戻りつつあるよね。
ホビープログラマとしてはプログラムなんて動けばなんでもいいし。
2007/08/21(火) 08:37:59
確かにC++のシェアが下がったと思ったら、組み込みでC++再来みたいな。
2007/08/21(火) 19:01:55
ウェブプログラミングに飽きて、.NETも何かいまひとつ、そしてC++に戻ってきた。
2007/08/22(水) 22:17:32
COMでは参照カウンタが0になるとすぐに解放されることは
保証されているんでしょうか?
2007/08/24(金) 13:49:34
インターフェイスは参照カウンタ0で開放する規約になっている。
なってない場合バグ。その辺のロジックはATLとかがサポートしてて
直接コーディングすることは少ないから普通は大丈夫。
アウトプロセスの複合サーバーの場合は、
インターフェイスが開放されてもプロセスが終了しないものがある。
WordやExcelがその例。
2007/08/24(金) 14:44:18
IISでASPからActiveX DLLを使った時、ASPでSet obj = Nothing
してもDLLがロックされたままになるのは別の問題ですかね?
112デフォルトの名無しさん
垢版 |
2007/08/26(日) 08:22:25
http://pc11.2ch.net/test/read.cgi/tech/1143171172/
2007/08/26(日) 12:43:19
・COMオブジェクトの参照カウンタが0になったときに、
 そのオブジェクトが消え去る

・あるDLLに属しているCOMオブジェクトの生存数が0
 になったときにそのDLLをアンロードしてほしい

この二つは全く別の話。
114デフォルトの名無しさん
垢版 |
2007/09/27(木) 10:42:39
奥深いよね〜COM
115デフォルトの名無しさん
垢版 |
2007/09/27(木) 16:33:32
>>107
どの分野でc++のシェアが下がったんだろう

業務系→cobol、j2ee
組み込み系→c、c++、asm
2007/09/27(木) 16:48:30
http://www.premiumtv.12gbfree.com/?X3/?STV=dvdmajestic+trailer+STAR+WARS
2007/09/27(木) 18:15:23
>>115
Windows のソフトでわずかだけれども C# が使われ始めているな。
以前ならMFCで書かれていたような奴が。

Sunが横やり入れなければ数年前にJ++で出来ていたことなのにねぇ・・・
2007/09/28(金) 04:52:55
組み込みでC#使ってるひといる?
119デフォルトの名無しさん
垢版 |
2007/10/01(月) 09:32:59
VB6の後継はC#だよね〜
120デフォルトの名無しさん
垢版 |
2007/10/01(月) 13:13:07
ぽとぺた環境のことか?
2007/10/24(水) 14:50:19
どとねと環境のことだろう
122デフォルトの名無しさん
垢版 |
2007/10/31(水) 06:53:00
getUnk(&pUnk1);
getUnk(&pUnk2);
getUnk(&pUnk3);
123デフォルトの名無しさん
垢版 |
2007/11/03(土) 15:41:50
pUnkOut->release();
2007/11/03(土) 19:23:29
IUnko
2007/11/05(月) 19:49:15
eco->recycle(unko);
2007/11/05(月) 21:55:35
シェルがCOMをまったく使わなくなる日が来たりするのだろうか
2007/11/05(月) 23:14:29
果たしてそれはWindowsなのだろうか。
2007/11/06(火) 01:23:31
果たしてWindowsのそれはシェルなのだろうか
2007/11/11(日) 22:25:40
IThumbnailCache ってどこから手繰りよせたらいいのん?
IThumbnailProviderからもってくるとキャッシュみないよね?
130129
垢版 |
2007/11/12(月) 00:26:45
>IThumbnailProviderからもってくるとキャッシュみないよね?

IShellItem.BindToHandler経由でIThumbnailProviderからサムネールもってくるとキャッシュみないよね?
131129
垢版 |
2007/11/12(月) 02:14:14
自己解決しますた
LocalThumbnailCacheでnewしてやればいいのね
ほんとのところCOMを理解してないけど

キャッシュ見るようになって動画のサムネイル早っ
2007/11/13(火) 23:58:24
先週からVisualStudio2005でCOM/ATLの開発始めたCOM初心者なんだけど、
おっそろしい程に参考になる本とかWEBページとか少ないな

ボチボチ進んでるから、なんとかなるとは思うけど、自力で探るのはめんどい
2007/11/16(金) 02:04:59
Essential COMの第一章はPDFになってて結構参考になった
134129
垢版 |
2007/11/16(金) 02:13:11
>>133
kwsk
2007/11/16(金) 02:16:20
>>134
http://www.ascii.co.jp/pb/bookmart/pdf/47561/4756130666.pdf
直接の役には全然役に立たないよ
でもこれ読む前はなんでCOMがこんなことになってるのか全然わかんなかった
2007/11/16(金) 02:28:35
>>135
ありがとう。
読んでみる。
2007/11/17(土) 02:14:16
レジストリを使わないCOMがあったら便利だなぁと、そう思った
マニフェスト的なものをヘッダに持って
どう実現するかは知らんけど
2007/11/17(土) 03:36:51
>>137
XP以降ならマニフェストでサイドバイサイドできるよ。
2007/11/21(水) 00:20:03
解放忘れのチェックの仕方とエラー処理の書き方がわからんなあ
2007/11/21(水) 00:48:55
CComPtr
_com_ptr_t
2007/11/22(木) 00:08:27
>>137
海外のライブラリでそれできるやつあるよ
2007/11/23(金) 01:44:45
Registration-Free COM

ttp://www.ailight.jp/blog/sha256/archive/2005/03/29/5437.aspx
2007/12/02(日) 02:36:38
翔泳社の「ATL COMプログラミング」でCOMの勉強を始めたのですが、
VisualStudio2005でATLの「実行可能サーバー」を生成すると
ソースが書籍のサンプルと全然対応しなくて困っております

今の開発環境でCOMの学習用にいい書籍とかありますでしょうか?
2007/12/02(日) 02:49:08
ATL Internals: Working with ATL 8 (2nd Edition)
by Christopher Tavares, Kirk Fertitta, Brent Rector and Chris Sells

とかは2006年だ読んだこと無いけど
2007/12/02(日) 17:22:28
>>143
前に日本語でその手の本を探したけど、結局、見つからなかった。
真面目にサンプル作って解説本でも書いたら売れるかな。
売れないだろうな・・・・
2007/12/02(日) 18:08:07
>>143
俺もその本持ってるけど、COM/ATLの根本的なところは大して変わらないんだし、ATLの側でも
互換性のためATL3.0用のクラス残してるし、それで勉強してみたら?
C++属性なんて最後でいいと思うし、ATL8.0の部分だってATL3.0判ればそう難しくはないんじゃないか?
2007/12/03(月) 00:38:06
>>144-146
皆様ご意見ありがとうございます。
少なくとも日本語の書籍に新しいものはなさそうですね。
英語の本は時間が許せば…と思いますがやはり敷居が高いです。

>>146さんの言うとおりもう少し現状の環境で書籍の内容を確認してみます。
2007/12/05(水) 01:36:09
別環境のVisualC++6.0でATLのプロジェクトを生成し、それを使って演習…
149デフォルトの名無しさん
垢版 |
2007/12/14(金) 22:18:03
IDropTarget/IDropTargetHelperを実装したクラスのウィンドウで
ドラッグドロップをしています。

そのウィンドウ上にマウスカーソルがあるときに他のウィンドウを非アクティブのまま
表示するようにしたいんですが、ウィンドウを表示すると元のウィンドウの下に
ドラッグイメージが隠れてしまいます。
(後から表示したいウィンドウもIDropTarget/IDropTargetHelperを実装してます。そっち上では
ドラッグイメージは隠れません)

ドラッグイメージのZOrderをなんとかしたいわけですが、
ヒント等ご存知の方いらしたら教えてくんなましょ
2007/12/15(土) 01:59:23
そのウィンドウと他のウィンドウと元のウィンドウと後から表示したいウィンドウが
どのウィンドウなのかわかんないのでAとかBとか名前付けて書いてくれると嬉しい
2007/12/15(土) 11:39:46
すんません

すべてのウィンドウ: IDropTarget
 ・IDropTargetHelperをもってる
 ・擬似メニューみたいな感じで、擬似サブメニューみたいなウィンドウがポップアップする

A上にドラッグ、A上にドラッグイメージ出る

A上のサブメニューが展開してBを表示( AのDragOverでWM_MOUSEMOVEをA自身にsend。これが原因? )

マウスはA上にあるけど、ドラッグイメージはAの下に隠れてしまう

B上にドラッグ、B上にドラッグイメージが出る

B上のサブメニューが展開してCを表示( BのDragOverでWM_MOUSEMOVEをB自身にsend。これが原因? )

マウスはB上にあるけど、ドラッグイメージはBの下に隠れてしまう
(以下繰り返し)

IDropTargetHelper使わないと正常なんで、諦めるかも……
2007/12/20(木) 16:43:05
mpeg compass.jp
名古屋駅近辺でお話しましょう
2007/12/20(木) 23:05:18
COM初心者です。

CLSCTX_INPROC_SERVERを渡したCoCreateInstanceは
1つのプロセス内に1つのインスタンスを作成するみたいですが、

1つのプロセス内の複数のスレッドでひとつのIIDで指定されたインスタンスを
スレッドごとに作成したいときはどうしたらいいのでしょう。

もしかしてIIDごとに何個つくれるとか決まってたりするんでしょうか
2007/12/20(木) 23:14:33
各スレッドでCoCreateInstanceを呼べばいい。
2007/12/28(金) 13:03:07
Win32スレから誘導されてきますた

IExtractImageを実装したんだけど、2000で動かすと時々フォルダ内の全ファイルに同じ
サムネイルが出るようになる不具合はどう対処したらいいんでしょう。
MSDNのサンプル実装で起きるし、フラグ類いろいろ変えたりマルチスレッド対応にしたり
しても改善せず・・・
156デフォルトの名無しさん
垢版 |
2008/01/03(木) 22:27:35
関数型でCOM使いたいんだけど、実装ありまっか?
157デフォルトの名無しさん
垢版 |
2008/01/03(木) 23:06:10
あるよ。
2008/01/04(金) 21:05:48
処理系を教えてください
2008/01/04(金) 21:12:55
>>144の本(ATL Internals 2nd Edition)て日本語版出ないのかねぇ。
2008/01/04(金) 22:24:07
>>156
F#なら.NET経由でいけるのでは
2008/01/06(日) 12:47:23
>>135
今更ながらCOMの仕事が入り勉強中助かりました( ´∀`)

すぐに絶版にするなら独占翻訳権を取得しないで欲しい。特にASCII。
それ以上にCOMはもう終わってるのか…(´・ω・`)?
2008/01/07(月) 18:37:25
終わってるというよりは枯れてる・・・と思いたい
2008/01/08(火) 08:38:47
COM無いとウィンドウズ自体起動しないだろ
2008/01/08(火) 09:32:43
インタネッツセキュリティが無いので、DCOMは終わりマスタ。
PDFリーダーとか本当にメジャーなものしか存在が許されないというか。
2008/01/08(火) 22:27:40
>>163
さすがに起動はするwwwwwwwwwww
2008/01/08(火) 22:31:55
デスクトップ(HDESKTOP的な意味で)の表示くらいまではいけるうと思う。
2008/01/09(水) 03:09:25
タスクマネージャとかってCOM使ってる?
2008/01/09(水) 03:41:29
タスクマネージャくらいならパフォーマンスカウンタとかPSAPIくらいで大丈夫じゃねーか

デスクトップの表示まで行くと無理だな
IShellFolder
2008/01/09(水) 13:36:00
アプリケーションのタブでアイコンを表示してるから
COMつかってるんじゃね
2008/01/09(水) 13:43:28
な に が い い た い ?
2008/01/10(木) 02:32:53
アイコン表示してるのはリストビューの標準機能とイメージリストコントロールでCOM関係ない
2008/01/10(木) 02:40:58
VistaはCOM無しでは動かないかも
VistaのユーザーモードドライバはCOM仕様だから
173デフォルトの名無しさん
垢版 |
2008/01/10(木) 08:22:49
>>164
http://itpro.nikkeibp.co.jp/members/NBY/techsquare/20030717/3/?ST=security

やべえ今までしらんかった
Administratorでログオンすると危険にさらされるんだね。
2008/01/10(木) 18:28:10
そもそもDCOMをルー田子えさ攻め
175本田
垢版 |
2008/01/17(木) 17:43:02
>COMプログラマの解説書
>Crispin Goswell
>Microsoft Office Product Unit
>1995年 春
>1995年9月13日改訂
http://msdn.microsoft.com/library/ja/default.asp?url=/library/ja/jpdncomp/htm/com_co.asp
>抄録
>この解説書は、
>Microsoft(r) OLE Component Object Model(COM)オブジェクトを作成し、
>効果的に使用する方法を説明しています。
>例文はほとんどCで書かれていますので、実際に何が行われているかが、大変分かりやすく示されています。
>プログラマの中には、オブジェクトを実行するためにC++を好んで使用する人もいるでしょう。
>C++プログラマの観点からCOMの概念および基本的な使用法を論じているのは
>Kraig Brockschmidt著のInside OLE (第2版)(MSDN Library(Books))です。
>COMとは何か、またその設計や哲学の後ろにある動機付けをより理解する事に興味がある読者なら、
>Component Object Model Specification(MSDN Library(Specifications))の最初の2章を読んでください。
>第1章には簡単なイントロダクションを、第2章では徹底的に概要を解説してあります。
>この解説書ではInside OLEとCOM Specificationにある情報を、
>COMオブジェクトを実装する良い方法をいくつか示しながら解説するようにしてあります。
176デフォルトの名無しさん
垢版 |
2008/01/21(月) 23:07:01
VistaのExplorerで
デフォルトのIExplorerCommandProviderって取得できねーのかな?
なんかあの緑色のコマンドバーのなかのコマンドって余所から実行できないんで困る

プレビューペインとかナビゲーションペインを出し入れしたいんだけど。
2008/01/24(木) 00:31:42
俺はしたくないしされたくもない
178デフォルトの名無しさん
垢版 |
2008/01/28(月) 17:29:23
タスクバーのツールバー(IDeskBand)をCOMサーバーとして作成しています。
ツールバーを表示させたとき、エクスプローラーごとダウンして
バグの発生場所を特定できません。
空のツールバーの作成・起動には成功したのですが、外部から取得したデータを
反映させる機能を追加したところ、ダウンする現象が発生しています。

COMサーバーのデバッグ方法をご教授ください。
環境は、WindowsVista、VC++2008EE、ATLおよびMFC不使用です。
2008/02/06(水) 23:57:12
COM・・・
サーバ上のやつは取得できて、動かせます
クライアントからサーバ上のCOMを使いたい・・・
IDとかは設定してるのだが・・・
検索3時間してもわからず、ググるキーワードを2,3教えて下さい (-_-)
2008/02/07(木) 00:19:02
>>178
Visual C++なら、アタッチすれば、あとは普通のアプリケーション同様に
ブレークポイントで止めて、変数見たりステップ実行したりできるぞ。

>>179
日本語でおk
2008/02/07(木) 01:43:49
エッチ スケッチ
2008/02/07(木) 01:46:42
>>179
きめえから市ね
2008/02/07(木) 21:45:43
とりあえず2,3単語が分かりました、消えます
184デフォルトの名無しさん
垢版 |
2008/02/08(金) 03:48:03
>>179
DCOMの設定したら使えるけど危険すぎ。
閉じたネットワークでだけ使うものだよあれは。
2008/02/08(金) 17:32:50
ネットワークに関係なく、
単にコンポーネントの提供する側と利用する側という意味で使っているかもよ。
179の書き方ではどういう意味か分からないけど。
2008/02/08(金) 21:26:27
俺もそうかと思ってたので>>184の洞察力に感服
2008/02/21(木) 16:24:48
このスレに住まわれるCOMの精霊様、
どうか以下の件についてお答えくださいませ。
VS2005でATLプロジェクトでWindowsサービスを作りましたが、
PreMessageLoop()の中で、以下のコードが無いとサービスが起動しません。
-----
if (SUCCEEDED(hr) && !m_bDelayShutdown)
 hr = CoResumeClassObjects();
-----
しかしサービスに1つでもCOMインタフェースを追加すると
CoResumeClassObjects()がS_OK以外を返すようになります。
そこでCoResumeClassObjects()を呼び出さないようにしても、
サービスは起動してくれます。

なぜCOMインタフェースが自分で追加していない状態では
CoResumeClassObjects()を呼ぶ必要があり、
COMインタフェースを追加すると呼ぶ必要がなくなるのでしょうか?
2008/02/22(金) 01:05:40
Effective COMには
・1つ以上のクラスをエクスポートしてるサービスが最初のCoregisterClassObjectの呼び出しで開始してしまうと、それらのクラスの初期化の問題が起きる場合がある
・このためREGCLS_SUSPENDフラグで起動を遅らせて、CoResumeClassObjectsで起動させる
みたいなことはあったけど。

追加したときにフラグ上書きしたことになってるのではと想像。
189187
垢版 |
2008/02/22(金) 13:15:06
ふむー、こういうことかな?
サービスそのものがCOMであるけど、サービスは起動直後に立ち上がるから、
自分でタイミング見て初期化しないといけない。
新たにCOM実装すると、ATLのどっかで初期化するようになる。
よってサービスでCoregisterClassOBjectsを呼ぶと2重初期化で
エラーを返すのかな。
なんにせよ、COM追加したら呼ばないでいいのだろうか。
とりあえず外部アプリからサービスのCOM呼び出しとかは、うまくは動いてるし。
2008/02/26(火) 02:30:07
外部からエクスプローラーバーのIBandSiteを取得したいのですが、
とれません。
どのようにして取得すればよいでしょうか?
2008/03/23(日) 00:54:12
CHogeってCOMクラスが
HRESULT SetHoge(IDispatch* pV)
ってメソッドを持っていて、pVのポインタをCHogeのメンバとして保持するとき
- SetHoge()の先頭くらいでthis->pV->AddRef()
- FinalRelease()でthis->pV->Release()
ってすればOKって認識であってるかな。
2008/03/27(木) 21:43:35
>>191
一般的にはこんな感じ

SetHoge(IHoge* pHoge)
{
 if (pHoge) pHoge->AddRef();
 if (this->pHoge) this->pHoge->Release();
 this->pHoge = pHoge;
}

NULLをセットして開放することを許可しておくと、循環参照等を
断ち切るときのためになるので吉。

ATL 等なら、CComPtr<IHoge> pHoge とメンバ変数を宣言し、
SetHoge(IHoge* pHoge) { this->pHoge = pHoge; } で十分。
非 ATL なら _com_ptr_t の利用も考慮してみると良いと思う。
193191
垢版 |
2008/03/27(木) 22:33:15
ああそうかメンバ自体をCComPtrにしとけば代入だけでいけますね。
2008/04/13(日) 00:28:44
おお、COMのすれ、あるんだ!
195デフォルトの名無しさん
垢版 |
2008/04/13(日) 03:00:22
よろしくね(´・ω・`)
2008/04/13(日) 03:09:06
先生、googleがCOMを検索してくれないので勉強できません
2008/04/14(月) 23:31:09
COM
OLEオートメーション総合
どうしてCOMは即死したのか
の3つのCOM関連スレがあるけど、どう使い分けるの?
というかどれもすでに死んでるのかな、、少しさびしい。
2008/04/15(火) 00:13:00
>>197
IEコンポーネントをC++から使う話はたまにWin32APIスレで見る。
.NETから各種COMコンポーネントを使う話もたまにC#やVB.NETのスレで見る。
あと、DirectXのことは当然DirectXのスレで扱われる。

質問はそっちで賄われるから、
その3つのスレはほとんど雑談くらいにしか使われないんだよね。
2008/04/18(金) 01:20:01
雑談モード。
たしかMSHTML::IHTMLWindowだったか、QueryServiceというのがあったが、QueryInterfaceと何が違ったんだろう…。
どっちもIFを取得するという点では同じなのだが。何か長短があるんだろうか。
たとえば自分がComponent作るとき、QuerySeriviceでIF提供したほうがいいなって場面あるんだろか。
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

ニューススポーツなんでも実況