COM

■ このスレッドは過去ログ倉庫に格納されています
1IUnkonwn
垢版 |
2007/01/10(水) 20:13:15
いざ語れや
2Iknow
垢版 |
2007/01/10(水) 20:15:35
嫌だね。
2007/01/10(水) 22:50:49
関連スレ
どうして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
2007/01/10(水) 23:01:55
何となく偉くなった気がする15の夜
5デフォルトの名無しさん
垢版 |
2007/01/10(水) 23:19:39
【ネガティブ派遣根性チェック】

3つ以上、思い当たる点があればアナタの性格はひん曲がっており、ネガティブ負け組人生を歩んでいます。

□派遣先の社員の意見にはたとえ間違っていても反対しない
□派遣先から「いつまでもここで仕事してくださいね」と言われるようになりたい
□自社に仕事を持ち帰れるように言われるとムカつく
□自社で仕事なんてできるわけがない
□派遣/受託の差異を指摘する人間はムカつく
□派遣先には仕事だけでなく自分のプライベートについても指示して欲しい
□自分の月額金額を知らない
□派遣先社員より自分の生涯収入が低いのは当然だ
□派遣先に尻尾を振り、いつまでも一緒に仕事をすることが大切だ
□今のプロジェクトが終わっても同じ派遣先に常駐したい
2007/01/11(木) 22:05:26
          ヽ / /⌒\
         /ヽヽ|/⌒\ii|\
       / /ヾゞ///\\|
       |/   |;;;;;;|/ハ \|
             |;;;;//⌒ヽ
             |;/( ^ω^) >>1おっおっおっ乙枯ー
.           |{ ∪  ∪
             |;;ヾ.,____,ノ
             |;;; |
             |;;;;;|
             |;;;;;|
2007/01/12(金) 00:45:10
COMの本、死ぬの早すぎ
もうちょっと刷ればいいのに
8デフォルトの名無しさん
垢版 |
2007/01/16(火) 17:05:09
一通り仕組み頭に入れとけばそれ以上深い話があるでもなく
あとは使う部品のマニュアル嫁としかいえないからなw
2007/01/16(火) 17:12:56
簡単に言えば、異なる言語間で共通に使用できるだけで、
異なる環境での使用が困難だったからw
(MS仕様のOSでないと使えない)
Javaの逆を狙って、見事に大ハズレしただけ

もうMSには、新技術を提起して欲しくない。
5年持ったためしがないんだもの・・・・
10デフォルトの名無しさん
垢版 |
2007/01/16(火) 18:00:56
COMは傑作なんだけど。馬鹿にはわからないのが残念でならない
2007/01/16(火) 18:35:27
馬鹿にも分かるものこそが真の傑作だとは思わんか?
2007/01/16(火) 18:52:52
comの基本概念は、次の.NETに受け継がれてるけど(当たり前の話だが)、
その設計の具体的要素(インターフェースの呼出設計など)のほとんどは
破棄されて受け継がれず、結局NETフレームワークの大部分は、
JavaVMを参考にして設計された。。。

>>10の様な知ったか馬鹿信者がいる限り、MSはまた独自のポンコツアーキテクチャを
世に送り出して、世界中のエンジニアを煙に巻く過ちを繰り返すだろう。
2007/01/16(火) 19:08:51
>>12
.NETの有り様からするとCOMが素晴らしいということを言いたいのですね?
2007/01/16(火) 19:22:44
>>9
COMは10年以上現役だろ
むしろ.NETのほうがヤバイ
2007/01/16(火) 19:25:08
というかwindows自体がCOMの塊だろ。
winが続く限り生き残るだろ。
2007/01/16(火) 19:34:37
>>9
無知乙

COM はMicrosoft Windows Distributed interNet Application (Windows DNA)アーキテクチャにコンポーネント テクノロジを提供し、
Web ベースとクライアント/サーバー アプリケーションを単一のアーキテクチャに統合することを可能にします。
COM を使用することにより、開発者は任意の言語で、任意のネットワークを介して相互作用できる分散コンポーネントを作成することができます。
COM は、Solaris、HP-UX、DEC UNIX、Siemens Nixdorf SINIX など、他のプラットフォーム上のコンポーネントとの相互運用性も提供します。
17デフォルトの名無しさん
垢版 |
2007/01/16(火) 19:36:00
CLSIDがうざい
128ビットの癖にたまに被るし
2007/01/16(火) 19:37:05
COMの失敗は名前だけ
2007/01/16(火) 19:47:43
検索できねー
2007/01/16(火) 19:52:11
>>14
Windowsの枠組み内でしか生きられないメジャーだがローカルな技術としてな。。。

>>16
>他のプラットフォーム上のコンポーネントとの相互運用性も提供します。
だから、これが上手くいかなかったんだよ!
知ったかは氏ね
2007/01/16(火) 20:07:52
怒りっぽい人ですね
22デフォルトの名無しさん
垢版 |
2007/01/16(火) 20:10:14
16はすぐ詐偽に引っかかるタイプ
23デフォルトの名無しさん
垢版 |
2007/01/16(火) 20:12:17
>>16 は単に MS のページか
どっかの解説サイトからとってきただけなんじゃないの
2007/01/16(火) 20:21:00
COMを理解するために必死でC++の仕様を勉強した時期がありました。
嫌な思い出です。
2007/01/16(火) 20:54:51
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
2007/01/16(火) 21:02:02
>>5年持ったためしがないんだもの・・・・

COMもOLEも、もうすぐ20歳ですが?
27デフォルトの名無しさん
垢版 |
2007/01/16(火) 21:50:47
OLEの定義自体が、過去に二回もコロリと変わってる。
OLE1.0時代は、ただその略名通り(異アプリ間のデータ交換)の技術だったのが
OLE2.0時代(COM誕生)には、一つのアーキテクチャの総称だと突如宣言してる。
しかし、ActiveXの誕生と共に「やっぱりただのLink&Embedでした」とまた変えてる。
あまりに節操がない、と言うかエンジニアを舐めてる
28デフォルトの名無しさん
垢版 |
2007/01/16(火) 22:02:54
アパートメントからしてよく分からん。
結局STAでも、他のスレッドからアクセスしていいんだよな。
単に、プロキシ・スタブを介するからMTAに比べると
性能が若干落ちるってことだよな??
2007/01/16(火) 22:52:16
DirectXもCOM
2007/01/16(火) 22:53:09
その代わり排他制御をしなくて済む(プロキシ・スタブがメソッド呼出をキューイングするため)という利点がある。
2007/01/16(火) 23:01:30
その代わり、Read Writeパターンが使えないのでサーバーパフォーマンスが
大幅に落ちるという欠点もある
2007/01/17(水) 17:04:18
ActiveX 〜犠牲者たち〜
33デフォルトの名無しさん
垢版 |
2007/01/17(水) 22:48:58
>>31
read write パターンって何ですか?
COMは情報が少なくて困る
2007/01/17(水) 22:58:26
名前までわかってるんだから検索しろよ
つーか名前を付けたことがデザインパターンの最大の功績と言っても過言ではない
35デフォルトの名無しさん
垢版 |
2007/01/18(木) 00:03:23
なんだデザインパターンか
36デフォルトの名無しさん
垢版 |
2007/01/18(木) 05:00:46
>>35
こーゆーのがエンジニアかと思うと、なんか情けなくなってくるね
2007/01/18(木) 22:50:08
Java SwingとOLEとCORBA(にGUIコンポってあるの?)をJava上で手間なくリンクしたい。
ちょうどIEコンポーネントみたいな感じでOS毎の似たような部品を再利用したいんだ。
38デフォルトの名無しさん
垢版 |
2007/01/18(木) 23:03:05
>>36
なんなんだえらそうに
デザパタ厨かよwwww
2007/01/19(金) 07:07:41

ネーミングパターン

こきおろしパターン

ぐぐれパターン

話題逸らしパターン

40デフォルトの名無しさん
垢版 |
2007/01/22(月) 18:43:51
過疎
41デフォルトの名無しさん
垢版 |
2007/01/31(水) 13:09:50
CON
2007/01/31(水) 13:46:23
OCN
43デフォルトの名無しさん
垢版 |
2007/03/09(金) 16:56:26
IE用のツールバー作ろうとして、
IDeskBandを継承したクラスのSetSiteで
パラメータからQueryInterfaceでIID_IOleWindowを
取得しようとしたんだが
E_NOINTERFACEエラーが出る。
なんか心当たりある方いらっしゃいませんか?
44デフォルトの名無しさん
垢版 |
2007/03/09(金) 22:46:43
もしかしてIE7なのが原因?
開発環境はVS2005です。
2007/03/09(金) 22:54:14
どっと混む
2007/03/10(土) 00:35:59
下手なシャレはよしなしゃれ
2007/03/10(土) 01:27:30
>>43
IOleWindowって自分自身じゃね?
2007/03/10(土) 10:47:13
>>47
http://idm.s9.xrea.com/ratio/2004/06/17/000104.html
ここに

>ツールバーがactivateされるとき、 IObjectWithSite#SetSite が呼ばれる。
>パラメータのIUnknownインターフェースは、IOleWIndowをquery可能なので、
>これを使ってツールバーの親となるウィンドウの情報を取得する。
>MSDNのサンプルでは、このタイミングでツールバー本体のウィンドウを生成している。

ってあって、MSDNでもそうなってたんだが。
2007/03/10(土) 15:34:41
>>48
IOleWindowとれたよ
親のReBar32WindowのハンドルもGetWindowで正しくとれてる。

Vistaだけども。
2007/03/10(土) 19:28:49
なんでだろ・・・
解決したら報告します。
51デフォルトの名無しさん
垢版 |
2007/04/13(金) 18:44:41
COMCOMCOMCOMCOMCOMCOM
COMCOMCOMCOMCOMCOMCOM
COMCOMCOMCOMCOMCOMCOM
COMCOMCOMCΟMCOMCOMCOM
COMCOMCOMCOMCOMCOMCOM
COMCOMCOMCOMCOMCOMCOM
COMCOMCOMCOMCOMCOMCOM
COMCOMCOMCOMCOMCOMCOMage
2007/04/16(月) 19:50:58
ATLの属性をつかってテキストで簡単にCOMを作るチュートリアルやってみたが、
あれATL7.0じゃないと動かねーじゃねぇか
53デフォルトの名無しさん
垢版 |
2007/04/25(水) 18:19:04
ネットの情報だけでCOMサーバを勉強するのって無理ある?

MFCでコントロール作ってそれをコンテナに組入れるのはやったことあるけど
ATLで見えないWinsock+COMサーバ.exeに挑戦中でCOMとソケット通信をどのように
連携すればいいのかで色々悩んだ。
結局ウィンドウメッセージとグローバル変数を駆使してなんとか目処がついた
けど、もっとスマートなやり方が載ってる参考書はないんでしょうか?
2007/04/26(木) 12:40:13
>>53
ウィンドウを持たないCOMオブジェクトで、Winsockの非同期やるんなら、イベント使った方が
良いと思う。
5553
垢版 |
2007/04/26(木) 18:32:04
>>54
ありがとう。
>イベント使った方が良いと思う。
のイベントとはウィンドウメッセージとの理解でよいですか?

もう一点教えていただきたいことがあるのですが、
ブラウザに貼り付けたコントロール(ocx)からATLで作ったCOMサーバ.exeに
Dispatchしてメソッドを呼ぶことができたのですが、
ブラウザを閉じるとCOMサーバ.exeも終了してしまいます。
ブラウザを閉じてもCOMサーバ.exeを常駐させたいのですが
クライアント側/サーバ側どちらで対応すればよいのかさえ検討がつきません
どのようにすればよいかご存知でしょうか?
2007/04/26(木) 19:14:00
よくない。WSAEventSelect使えって話でそ。
5753
垢版 |
2007/04/26(木) 23:21:36
>>56さん 了解です。

引続き>>55についてご存知の方お力を貸してください。
お願いします。
2007/04/27(金) 10:49:59
DLLに汁
2007/04/28(土) 18:07:15
DCOMの実装に関する参考書や参考サイト知りませんか?
60デフォルトの名無しさん
垢版 |
2007/04/28(土) 18:31:14
↑クライアントとサーバ両方の実装についてです。
言語は問わないのですが、できればVCについてお願いします。
2007/04/29(日) 02:27:45
>>51
なにぃっ、Mageだと!?貴様鉄道板住人だな!
62デフォルトの名無しさん
垢版 |
2007/05/03(木) 12:01:20
COMスレってなんでこんなに過疎ってるの?
それについて議論しよう
2007/05/03(木) 12:01:47
ネットでCOMについて記述してるサイトもあんま見ない
2007/05/03(木) 12:35:53
COMに比べると似たようなことはドトネトの方が簡単にできるから
もう存在意義がなくなってんじゃないの?
2007/05/03(木) 12:38:08
COMを使う舞台がエクセルVBAなんかに移ってるからな
2007/05/04(金) 00:28:42
なんで?comサーバでの利用機会とか無いの?
アプリ間でデータ交換とか外部アプリへの機能提供とかの場面で利用価値あると思うけど

まあ、代替手段は色々あるし、わざわざムズい技術を覚えてまでcomを利用する必要もないか
特に開発人口が多い業務系開発だったら尚更だな
2007/05/04(金) 00:43:47
業務系ならなおさら何でもエクセルでやりたがる
もしくはCOBOL
2007/05/04(金) 14:13:48
PlatformSDKにもMIDLはあることだしSxSアセンブリでのCOMならいくらかハードルも低いし、C++での共有ライブラリ作成という観点でもう少しひろまってもいい気がするんだけどな。
ActiveXでもOLEでもなくDLL+αとしてのCOMっていう観点でさ。

なんにしてもMFCやATLで新しくコンポーネント作るってのはなくなっていくんだろうな。せいぜいVB6でか.NETアセンブリからタイプライブラリ作る位になるのか。
69デフォルトの名無しさん
垢版 |
2007/05/07(月) 18:10:27
ATLでアウトプロセスサーバを作っているのですが、

親ウィンドウのメッセージループから自exe内のCOMオブジェクトを
どのように参照すればよいかわかりません。
マクロで展開されたポインタがどこかにあると思うのですが
どのように参照すればよいでしょうか?

ATL初心者なので質問の表現がおかしいかも知れませんが
よろしくお願いします。
7069
垢版 |
2007/05/07(月) 19:26:22
デバッガで見てみたら
Choge *a=(Choge*)&ObjectMap[n];
で参照できました。
で、いいですか? ←直感的にやったらできたので不安ですが・・・
2007/05/08(火) 03:09:34
いいよ〜いいよ〜いいよ〜
72デフォルトの名無しさん
垢版 |
2007/05/08(火) 12:19:59
もー。ATLイベントの実装の仕方がいまいちわからん。
2007/05/08(火) 12:45:22
イベント出す側だったらウィザードが殆どやってくれるからあまり意識したことないけど?
74デフォルトの名無しさん
垢版 |
2007/05/08(火) 13:32:57
イベント出す側なんですが、
クラスビューからメソッドと接続ポイントを追加したんですが
xxxxx.idlとxxxxxCP.hに空のクラスを作るだけで
メソッドの雛形作ってくれないんですよ。

最初のウィザードのときシンプルオブジェクトで作成してるからでしょうか?
2007/05/08(火) 13:42:03
ATLシンプルオブジェクトを追加するとき"接続ポイント"にチェックいれて作れば
クラスビューに IHoge と Libの下に _IHogeEvents が出来ているでしょ
イベントメソッド追加したければ _IHogeEventsで右クリック - メソッド追加で追加できるよ

メソッド追加した後、実装クラス (CHoge) の方で右クリック - 接続ポイントの追加をもう一回
やるのを忘れんな
76デフォルトの名無しさん
垢版 |
2007/05/08(火) 14:49:43
で、できました。
>接続ポイントの追加をもう一回やるのを忘れんな
もう一回やったらできました・・・なぜもう一回なのかわかりませんか゛
とにかく今日一日試行錯誤していたのが「もう一回」のキーワードで解決しました。

>>75さんになにかごちそうしたい気持ちでいっぱいです。
2007/05/08(火) 16:24:46
極稀に2chも役に立ったり立たなかったりする
78デフォルトの名無しさん
垢版 |
2007/05/08(火) 17:48:04
もう一役お願いします。

イベントを作成したのですが、イベントがクライアントに届きません。
Fire_Hogeを呼びだすときデバッガで追ったら
int nConnections = m_vec.GetSize(); で0が帰ってきて
その下のループの中のpDispatch->Invokeまでいきません。

ソフトの構成としてはアウトプロセスサーバ.exeからブラウザのjavascriptへイベントを発生したいのですが、上記の通りとなり、イベントを渡すことができませんでした。
m_vecが接続を管理するらしいのですが、javascriptからの接続がうまくないのでしょうか?
接続の方法としては<OBJECT>タグにCLSIDを埋め込むようにしてjavascriptでサーバ.exeのメソッドを呼び出すことは成功しています。
2007/05/08(火) 18:41:37
javascriptからEventをAdviseしてあげた?
2007/05/08(火) 20:21:50
>>78
Fire_Hoge()の呼び出しってどうやってます?
多分IHogeの実装クラスCHogeのインスタンスから呼び出してると思いますが、

COMクライアントが作ったCHogeインスタンスから呼ばないとFireできないっす
8180
垢版 |
2007/05/08(火) 20:30:56
補足:

インターフェースをシングルトンにしとけば作成されるインスタンスは必ず一つなので、
いっそシングルトンにしてしまうとか

つ DECLARE_CLASSFACTORY_SINGLETON

ただこれをやると以下の問題も・・・

http://support.microsoft.com/kb/198834/ja

後は泥臭いやり方しか知らない
2007/05/08(火) 21:07:42
こんな感じなんですが・・・ 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デフォルトの名無しさん
垢版 |
2007/05/08(火) 21:08:40
>>80のアンカー間違えました。>>79が正解です
84デフォルトの名無しさん
垢版 |
2007/05/08(火) 21:14:49
>>82>>79に対するレスです。
>>83は誤爆です。

>>80,81
ありがとうございます。
参考にさせていただき再び試行錯誤させていただきます。
2007/05/08(火) 21:21:59
>>80
書き忘れましたが、Fire_Hoge()の呼び出しはは
ブラウザ(HTMLに記述したjavascript)からCHoge.exeのメソッドを呼び出して
呼び出されたメソッドの中でFire_Hoge()を呼んでいます。
86デフォルトの名無しさん
垢版 |
2007/06/11(月) 15:36:03
質問させてください。
アウトプロセスサーバで
クライアントから呼出して配列データ(BSTR)を取得するメソッドを作成しています。
このときサーバ側ではSafeArrayCreate()でクライアントに渡す
配列データを作成しますが、この配列データはSafeArrayDestroy()で
解放する必要はないであってますか?

根拠としてメソッド内で解放するとクライアントに渡せない。
デバッガで確認したところSafeArrayCreate()のポインタをstaticで保持して
次にメソッドを呼び出したら、ポインタが指しているメモリが壊れていた
(=勝手に解放してくれた)。
ということからこのような結論に至ったのですが、間違ってないでしょうか?
2007/06/11(月) 15:52:36
解放しない。解放したら返せないからね。

今回outprocだから、正確にはマーシャラーが適当にシリアライズしたのち
解放してくれるのでユーザのコードでは(inprocの場合と同様)解放しなくて良い、
というような動作。

逆に「取得した側」は自分で解放する。
88デフォルトの名無しさん
垢版 |
2007/06/11(月) 16:04:00
>>87
すばやいレスありがとうございます。

さらに詳しいCOMの内情まで教えていただきまして勉強になりました。
感謝いたします。
89デフォルトの名無しさん
垢版 |
2007/07/08(日) 15:55:55
COMについての入門書がありましたら、紹介してくれないでしょうか?
なにせ情報や サンプルがなかなか見当たらないので
2007/07/09(月) 09:14:09
ttp://www.amazon.co.jp/exec/obidos/ASIN/4881356992
これはまぁわかりやすい方。
91デフォルトの名無しさん
垢版 |
2007/07/10(火) 20:39:52
わかりやすくなくていいからIEが作れるぐらい
詳しい本は?
2007/07/11(水) 09:08:04
IEってかIEコンポ使ってのタブブラウザみたいなの?
それなら>>90の本とMSDN。
IEコンポ専門に突っ込んで書いてる本はないとおもう。
英語のMSDN読みまくる根性ないと無理。
2007/07/11(水) 20:47:11
いや、IEコンポを使うんじゃなくて、IEコンポ自体を作りたい。
IWebBrowser2を実装して、ActiveXコントロールをホストしたい。
2007/07/11(水) 22:03:14
IEコンポ自体を作りたいなら止めはしないが、MSは他人に実装させるつもりはないはず。
http://msdn2.microsoft.com/en-US/library/aa752127.aspx
> Custom Implementation No

ActiveXコントロールをホストしたいだけならIWebBrowser2を実装する必要は無いぞ。
2007/07/11(水) 23:27:02
mozillaにIWebBroser2の互換インターフェースが存在したような、
2007/07/12(木) 00:21:14
>>94
ぬあー、そうなのか。

>>95
Mozillaのコード見たけど、想像以上に整然としてて驚いた。
9790
垢版 |
2007/07/12(木) 11:31:55
>>93
だったらATLインターナルがいいかも。
98デフォルトの名無しさん
垢版 |
2007/07/15(日) 21:24:58
古きCOM書籍
興味がある方は、復刊リクエストご協力ください

Inside COM
ttp://www.fukkan.com/fk/VoteDetail?no=20887

Essential COM
ttp://www.fukkan.com/fk/VoteDetail?no=38742
2007/07/16(月) 07:43:51
3層アプリでビジネスロジックを
ドメインオブジェクトとして他のマシンに置きたいとき
COMならCOM+が使えるじゃないですか。
.NETだと何を使えばいいのでしょう?

Web Serviceだとサーバ側にインスタンスを作って
継続的に使用できないですよね。
となると.NET Remotingかな。
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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