1read 100read
2012年4月プログラム164: COM (299) TOP カテ一覧 スレ一覧 2ch元 削除依頼
ふらっとVisual C#,C♯,C#(初心者用) Part92 (1001)
【超高速】C/C++に代わる低級言語を開発したい 7 (966)
構造化ウェブプログラミング言語Dart2 (650)
【モダン推奨】Perlについての質問箱 50箱目 (189)
Excel VBA 質問スレ Part24 (205)
Lisp Scheme Part34 (415)

COM


1 :07/01/10 〜 最終レス :12/04/29
いざ語れや

2 :
嫌だね。

3 :
関連スレ
どうしてCOMは即死したのか
ttp://pc10.2ch.net/test/read.cgi/tech/1143171172/l50
【OLE】オートメーション総合スレ【ActiveX】
ttp://pc10.2ch.net/test/read.cgi/tech/1137771139/l50
一応
Win32API質問箱 Build48
ttp://pc10.2ch.net/test/read.cgi/tech/1166172047/l50

4 :
何となく偉くなった気がする15の夜

5 :
【ネガティブ派遣根性チェック】
3つ以上、思い当たる点があればアナタの性格はひん曲がっており、ネガティブ負け組人生を歩んでいます。
□派遣先の社員の意見にはたとえ間違っていても反対しない
□派遣先から「いつまでもここで仕事してくださいね」と言われるようになりたい
□自社に仕事を持ち帰れるように言われるとムカつく
□自社で仕事なんてできるわけがない
□派遣/受託の差異を指摘する人間はムカつく
□派遣先には仕事だけでなく自分のプライベートについても指示して欲しい
□自分の月額金額を知らない
□派遣先社員より自分の生涯収入が低いのは当然だ
□派遣先に尻尾を振り、いつまでも一緒に仕事をすることが大切だ
□今のプロジェクトが終わっても同じ派遣先に常駐したい

6 :
          ヽ / /⌒\
         /ヽヽ|/⌒\ii|\
       / /ヾゞ///\\|
       |/   |;;;;;;|/ハ \|
             |;;;;//⌒ヽ
             |;/( ^ω^) >>1おっおっおっ乙枯ー
.           |{ ∪  ∪
             |;;ヾ.,____,ノ
             |;;; |
             |;;;;;|
             |;;;;;|

7 :
COMの本、死ぬの早すぎ
もうちょっと刷ればいいのに

8 :
一通り仕組み頭に入れとけばそれ以上深い話があるでもなく
あとは使う部品のマニュアル嫁としかいえないからなw

9 :
簡単に言えば、異なる言語間で共通に使用できるだけで、
異なる環境での使用が困難だったからw
(MS仕様のOSでないと使えない)
Javaの逆を狙って、見事に大ハズレしただけ
もうMSには、新技術を提起して欲しくない。
5年持ったためしがないんだもの・・・・

10 :
COMは傑作なんだけど。馬鹿にはわからないのが残念でならない

11 :
馬鹿にも分かるものこそが真の傑作だとは思わんか?

12 :
comの基本概念は、次の.NETに受け継がれてるけど(当たり前の話だが)、
その設計の具体的要素(インターフェースの呼出設計など)のほとんどは
破棄されて受け継がれず、結局NETフレームワークの大部分は、
JavaVMを参考にして設計された。。。
>>10の様な知ったか馬鹿信者がいる限り、MSはまた独自のポンコツアーキテクチャを
世に送り出して、世界中のエンジニアを煙に巻く過ちを繰り返すだろう。

13 :
>>12
.NETの有り様からするとCOMが素晴らしいということを言いたいのですね?

14 :
>>9
COMは10年以上現役だろ
むしろ.NETのほうがヤバイ

15 :
というかwindows自体がCOMの塊だろ。
winが続く限り生き残るだろ。

16 :
>>9
無知乙
COM はMicrosoft Windows Distributed interNet Application (Windows DNA)アーキテクチャにコンポーネント テクノロジを提供し、
Web ベースとクライアント/サーバー アプリケーションを単一のアーキテクチャに統合することを可能にします。
COM を使用することにより、開発者は任意の言語で、任意のネットワークを介して相互作用できる分散コンポーネントを作成することができます。
COM は、Solaris、HP-UX、DEC UNIX、Siemens Nixdorf SINIX など、他のプラットフォーム上のコンポーネントとの相互運用性も提供します。

17 :
CLSIDがうざい
128ビットの癖にたまに被るし

18 :
COMの失敗は名前だけ

19 :
検索できねー

20 :
>>14
Windowsの枠組み内でしか生きられないメジャーだがローカルな技術としてな。。。
>>16
>他のプラットフォーム上のコンポーネントとの相互運用性も提供します。
だから、これが上手くいかなかったんだよ!
知ったかは

21 :
怒りっぽい人ですね

22 :
16はすぐ詐偽に引っかかるタイプ

23 :
>>16 は単に MS のページか
どっかの解説サイトからとってきただけなんじゃないの

24 :
COMを理解するために必死でC++の仕様を勉強した時期がありました。
嫌な思い出です。

25 :
OpenVMS
http://h71000.www7.hp.com/openvms/products/dcom/
Solaris
http://www.softpanorama.org/Net/Application_layer/rpc.shtml
EntireX DCOM for LINUX
http://www.softwareag.com/jp/products/entirex/downloads/download_exxdcom.asp
Free DCE and DCOM
http://sourceforge.net/projects/freedce
J-Interop
http://j-interop.sourceforge.net

26 :
>>5年持ったためしがないんだもの・・・・
COMもOLEも、もうすぐ20歳ですが?

27 :
OLEの定義自体が、過去に二回もコロリと変わってる。
OLE1.0時代は、ただその略名通り(異アプリ間のデータ交換)の技術だったのが
OLE2.0時代(COM誕生)には、一つのアーキテクチャの総称だと突如宣言してる。
しかし、ActiveXの誕生と共に「やっぱりただのLink&Embedでした」とまた変えてる。
あまりに節操がない、と言うかエンジニアを舐めてる

28 :
アパートメントからしてよく分からん。
結局STAでも、他のスレッドからアクセスしていいんだよな。
単に、プロキシ・スタブを介するからMTAに比べると
性能が若干落ちるってことだよな??

29 :
DirectXもCOM

30 :
その代わり排他制御をしなくて済む(プロキシ・スタブがメソッド呼出をキューイングするため)という利点がある。

31 :
その代わり、Read Writeパターンが使えないのでサーバーパフォーマンスが
大幅に落ちるという欠点もある

32 :
ActiveX 〜犠牲者たち〜

33 :
>>31
read write パターンって何ですか?
COMは情報が少なくて困る

34 :
名前までわかってるんだから検索しろよ
つーか名前を付けたことがデザインパターンの最大の功績と言っても過言ではない

35 :
なんだデザインパターンか

36 :
>>35
こーゆーのがエンジニアかと思うと、なんか情けなくなってくるね

37 :
Java SwingとOLEとCORBA(にGUIコンポってあるの?)をJava上で手間なくリンクしたい。
ちょうどIEコンポーネントみたいな感じでOS毎の似たような部品を再利用したいんだ。

38 :
>>36
なんなんだえらそうに
デザパタ厨かよwwww

39 :

ネーミングパターン
こきおろしパターン
ぐぐれパターン
話題逸らしパターン

40 :
過疎

41 :
CON

42 :
OCN

43 :
IE用のツールバー作ろうとして、
IDeskBandを継承したクラスのSetSiteで
パラメータからQueryInterfaceでIID_IOleWindowを
取得しようとしたんだが
E_NOINTERFACEエラーが出る。
なんか心当たりある方いらっしゃいませんか?

44 :
もしかしてIE7なのが原因?
開発環境はVS2005です。

45 :
どっと混む

46 :
下手なシャレはよしなしゃれ

47 :
>>43
IOleWindowって自分自身じゃね?

48 :
>>47
http://idm.s9.xrea.com/ratio/2004/06/17/000104.html
ここに
>ツールバーがactivateされるとき、 IObjectWithSite#SetSite が呼ばれる。
>パラメータのIUnknownインターフェースは、IOleWIndowをquery可能なので、
>これを使ってツールバーの親となるウィンドウの情報を取得する。
>MSDNのサンプルでは、このタイミングでツールバー本体のウィンドウを生成している。
ってあって、MSDNでもそうなってたんだが。

49 :
>>48
IOleWindowとれたよ
親のReBar32WindowのハンドルもGetWindowで正しくとれてる。
Vistaだけども。

50 :
なんでだろ・・・
解決したら報告します。

51 :
COMCOMCOMCOMCOMCOMCOM
COMCOMCOMCOMCOMCOMCOM
COMCOMCOMCOMCOMCOMCOM
COMCOMCOMCΟMCOMCOMCOM
COMCOMCOMCOMCOMCOMCOM
COMCOMCOMCOMCOMCOMCOM
COMCOMCOMCOMCOMCOMCOM
COMCOMCOMCOMCOMCOMCOMage

52 :
ATLの属性をつかってテキストで簡単にCOMを作るチュートリアルやってみたが、
あれATL7.0じゃないと動かねーじゃねぇか

53 :
ネットの情報だけでCOMサーバを勉強するのって無理ある?
MFCでコントロール作ってそれをコンテナに組入れるのはやったことあるけど
ATLで見えないWinsock+COMサーバ.exeに挑戦中でCOMとソケット通信をどのように
連携すればいいのかで色々悩んだ。
結局ウィンドウメッセージとグローバル変数を駆使してなんとか目処がついた
けど、もっとスマートなやり方が載ってる参考書はないんでしょうか?

54 :
>>53
ウィンドウを持たないCOMオブジェクトで、Winsockの非同期やるんなら、イベント使った方が
良いと思う。

55 :
>>54
ありがとう。
>イベント使った方が良いと思う。
のイベントとはウィンドウメッセージとの理解でよいですか?
もう一点教えていただきたいことがあるのですが、
ブラウザに貼り付けたコントロール(ocx)からATLで作ったCOMサーバ.exeに
Dispatchしてメソッドを呼ぶことができたのですが、
ブラウザを閉じるとCOMサーバ.exeも終了してしまいます。
ブラウザを閉じてもCOMサーバ.exeを常駐させたいのですが
クライアント側/サーバ側どちらで対応すればよいのかさえ検討がつきません
どのようにすればよいかご存知でしょうか?

56 :
よくない。WSAEventSelect使えって話でそ。

57 :
>>56さん 了解です。
引続き>>55についてご存知の方お力を貸してください。
お願いします。

58 :
DLLに汁

59 :
DCOMの実装に関する参考書や参考サイト知りませんか?

60 :
↑クライアントとサーバ両方の実装についてです。
言語は問わないのですが、できればVCについてお願いします。

61 :
>>51
なにぃっ、Mageだと!?貴様鉄道板住人だな!

62 :
COMスレってなんでこんなに過疎ってるの?
それについて議論しよう

63 :
ネットでCOMについて記述してるサイトもあんま見ない

64 :
COMに比べると似たようなことはドトネトの方が簡単にできるから
もう存在意義がなくなってんじゃないの?

65 :
COMを使う舞台がエクセルVBAなんかに移ってるからな

66 :
なんで?comサーバでの利用機会とか無いの?
アプリ間でデータ交換とか外部アプリへの機能提供とかの場面で利用価値あると思うけど
まあ、代替手段は色々あるし、わざわざムズい技術を覚えてまでcomを利用する必要もないか
特に開発人口が多い業務系開発だったら尚更だな

67 :
業務系ならなおさら何でもエクセルでやりたがる
もしくはCOBOL

68 :
PlatformSDKにもMIDLはあることだしSxSアセンブリでのCOMならいくらかハードルも低いし、C++での共有ライブラリ作成という観点でもう少しひろまってもいい気がするんだけどな。
ActiveXでもOLEでもなくDLL+αとしてのCOMっていう観点でさ。
なんにしてもMFCやATLで新しくコンポーネント作るってのはなくなっていくんだろうな。せいぜいVB6でか.NETアセンブリからタイプライブラリ作る位になるのか。

69 :
ATLでアウトプロセスサーバを作っているのですが、
親ウィンドウのメッセージループから自exe内のCOMオブジェクトを
どのように参照すればよいかわかりません。
マクロで展開されたポインタがどこかにあると思うのですが
どのように参照すればよいでしょうか?
ATL初心者なので質問の表現がおかしいかも知れませんが
よろしくお願いします。

70 :
デバッガで見てみたら
Choge *a=(Choge*)&ObjectMap[n];
で参照できました。
で、いいですか? ←直感的にやったらできたので不安ですが・・・

71 :
いいよ〜いいよ〜いいよ〜

72 :
もー。ATLイベントの実装の仕方がいまいちわからん。

73 :
イベント出す側だったらウィザードが殆どやってくれるからあまり意識したことないけど?

74 :
イベント出す側なんですが、
クラスビューからメソッドと接続ポイントを追加したんですが
xxxxx.idlとxxxxxCP.hに空のクラスを作るだけで
メソッドの雛形作ってくれないんですよ。
最初のウィザードのときシンプルオブジェクトで作成してるからでしょうか?

75 :
ATLシンプルオブジェクトを追加するとき"接続ポイント"にチェックいれて作れば
クラスビューに IHoge と Libの下に _IHogeEvents が出来ているでしょ
イベントメソッド追加したければ _IHogeEventsで右クリック - メソッド追加で追加できるよ
メソッド追加した後、実装クラス (CHoge) の方で右クリック - 接続ポイントの追加をもう一回
やるのを忘れんな

76 :
で、できました。
>接続ポイントの追加をもう一回やるのを忘れんな
もう一回やったらできました・・・なぜもう一回なのかわかりませんか゛
とにかく今日一日試行錯誤していたのが「もう一回」のキーワードで解決しました。
>>75さんになにかごちそうしたい気持ちでいっぱいです。

77 :
極稀に2chも役に立ったり立たなかったりする

78 :
もう一役お願いします。
イベントを作成したのですが、イベントがクライアントに届きません。
Fire_Hogeを呼びだすときデバッガで追ったら
int nConnections = m_vec.GetSize(); で0が帰ってきて
その下のループの中のpDispatch->Invokeまでいきません。
ソフトの構成としてはアウトプロセスサーバ.exeからブラウザのjavascriptへイベントを発生したいのですが、上記の通りとなり、イベントを渡すことができませんでした。
m_vecが接続を管理するらしいのですが、javascriptからの接続がうまくないのでしょうか?
接続の方法としては<OBJECT>タグにCLSIDを埋め込むようにしてjavascriptでサーバ.exeのメソッドを呼び出すことは成功しています。

79 :
javascriptからEventをAdviseしてあげた?

80 :
>>78
Fire_Hoge()の呼び出しってどうやってます?
多分IHogeの実装クラスCHogeのインスタンスから呼び出してると思いますが、
COMクライアントが作ったCHogeインスタンスから呼ばないとFireできないっす

81 :
補足:
インターフェースをシングルトンにしとけば作成されるインスタンスは必ず一つなので、
いっそシングルトンにしてしまうとか
つ DECLARE_CLASSFACTORY_SINGLETON
ただこれをやると以下の問題も・・・
http://support.microsoft.com/kb/198834/ja
後は泥臭いやり方しか知らない

82 :
こんな感じなんですが・・・ EventをAdviseとはどのようなことをするのでしょうか?
<SCRIPT language="javascript" for="HogeID" event="HogeEvents(a, b)">
   alert(a);
</SCRIPT>
<OBJECT ID="HogeID" CLASSID="CLSID:XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX">
</OBJECT>
Adviseをお願いします。

83 :
>>80のアンカー間違えました。>>79が正解です

84 :
>>82>>79に対するレスです。
>>83は誤爆です。
>>80,81
ありがとうございます。
参考にさせていただき再び試行錯誤させていただきます。

85 :
>>80
書き忘れましたが、Fire_Hoge()の呼び出しはは
ブラウザ(HTMLに記述したjavascript)からCHoge.exeのメソッドを呼び出して
呼び出されたメソッドの中でFire_Hoge()を呼んでいます。

86 :
質問させてください。
アウトプロセスサーバで
クライアントから呼出して配列データ(BSTR)を取得するメソッドを作成しています。
このときサーバ側ではSafeArrayCreate()でクライアントに渡す
配列データを作成しますが、この配列データはSafeArrayDestroy()で
解放する必要はないであってますか?
根拠としてメソッド内で解放するとクライアントに渡せない。
デバッガで確認したところSafeArrayCreate()のポインタをstaticで保持して
次にメソッドを呼び出したら、ポインタが指しているメモリが壊れていた
(=勝手に解放してくれた)。
ということからこのような結論に至ったのですが、間違ってないでしょうか?

87 :
解放しない。解放したら返せないからね。
今回outprocだから、正確にはマーシャラーが適当にシリアライズしたのち
解放してくれるのでユーザのコードでは(inprocの場合と同様)解放しなくて良い、
というような動作。
逆に「取得した側」は自分で解放する。

88 :
>>87
すばやいレスありがとうございます。
さらに詳しいCOMの内情まで教えていただきまして勉強になりました。
感謝いたします。

89 :
COMについての入門書がありましたら、紹介してくれないでしょうか?
なにせ情報や サンプルがなかなか見当たらないので

90 :
ttp://www.amazon.co.jp/exec/obidos/ASIN/4881356992
これはまぁわかりやすい方。

91 :
わかりやすくなくていいからIEが作れるぐらい
詳しい本は?

92 :
IEってかIEコンポ使ってのタブブラウザみたいなの?
それなら>>90の本とMSDN。
IEコンポ専門に突っ込んで書いてる本はないとおもう。
英語のMSDN読みまくる根性ないと無理。

93 :
いや、IEコンポを使うんじゃなくて、IEコンポ自体を作りたい。
IWebBrowser2を実装して、ActiveXコントロールをホストしたい。

94 :
IEコンポ自体を作りたいなら止めはしないが、MSは他人に実装させるつもりはないはず。
http://msdn2.microsoft.com/en-US/library/aa752127.aspx
> Custom Implementation No
ActiveXコントロールをホストしたいだけならIWebBrowser2を実装する必要は無いぞ。

95 :
mozillaにIWebBroser2の互換インターフェースが存在したような、

96 :
>>94
ぬあー、そうなのか。
>>95
Mozillaのコード見たけど、想像以上に整然としてて驚いた。

97 :
>>93
だったらATLインターナルがいいかも。

98 :
古きCOM書籍
興味がある方は、復刊リクエストご協力ください
Inside COM
ttp://www.fukkan.com/fk/VoteDetail?no=20887
Essential COM
ttp://www.fukkan.com/fk/VoteDetail?no=38742

99 :
3層アプリでビジネスロジックを
ドメインオブジェクトとして他のマシンに置きたいとき
COMならCOM+が使えるじゃないですか。
.NETだと何を使えばいいのでしょう?
Web Serviceだとサーバ側にインスタンスを作って
継続的に使用できないですよね。
となると.NET Remotingかな。

100read 1read
1read 100read
TOP カテ一覧 スレ一覧 2ch元 削除依頼
新2chブラウザ作成計画 (170)
C++11/C++1y 15 (101)
◆◇◆dbMAGICってどうよ?◆◇◆ (799)
【マック】Macintoshプログラミング質問箱 (479)
自動巡回ソフトを作りたい。 (373)
GUIがむずかしすぎる (944)
--log9.info------------------
浜崎あゆみ vs hide (261)
VOWWOW☆BOWWOW総合スレ 23 (530)
町田 康と布袋、好みの顔はどっち? (236)
BOOWYはロックのカテゴリーに入るのか? (187)
【潜在的】DER ZIBET7枚目【メンバーとファン】 (101)
外道 【 3 】 (262)
ラルクGLAYの底辺ゴミバンド対決はもはや伝説 2 (112)
◇◆ DEVILS & THE SILVER DOGGS◆◇ (497)
【CiA】クラッシュインアントワープ・3【Antwarp】 (520)
ハイスタはもう伝説だろ?? (765)
【ROSSO】 イマイアキノブ part.5 【The Birthday】 (108)
聖飢魔II-22 (561)
アベフトシ(`皿´)後援会14 (323)
20世紀の伝説のロックバンドBEST10を決めよう (222)
GLAYはBOOWYを超えました (151)
博多めんたいロックを語ろう 2 (570)
--log55.com------------------
★2ch.scは何故失敗したのか
★クロール批判要望スレ
★削ジェンヌに文句ある人集合
★迷惑行為報告担当 - 小さな親切募集中 2
★2ch.scへの要望スレ Part3
★かっこう観測所
★スレ立て人キャップ
★2ch.scニュース系板観測所