1read 100read
2013年02月プログラム196: COM (312)
TOP カテ一覧 スレ一覧 2ch元 削除依頼 ▼
C#, C♯, C#相談室 Part78 (491)
C#終了のお知らせ (957)
WPF(XAML, XBAP, .NET4.0)GUIプログラミング Part15 (243)
Gtkプログラミング on Windows!!! (353)
【VB.NET】LINQ友の会【C#, C♯, C#】 (769)
構造化ウェブプログラミング言語Dart2 (657)
COM
1 :2007/01/10 〜 最終レス :2012/12/14 いざ語れや
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 >他のプラットフォーム上のコンポーネントとの相互運用性も提供します。 だから、これが上手くいかなかったんだよ! 知ったかはR
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元 削除依頼 ▲
MFC相談室 mfc22d.dll (307)
【計測】LabVIEW相談室【制御】 (566)
【消しゴム】MONOを使ってみるスレ4【じゃない】 (323)
JAVAってこんなことも出来ないの? (475)
VBプログラマ質問スレ(Ver.6.0 まで) part61 (670)
【実験台】 Python 3.0 のお勉強 Part 1 【非互換】 (555)
--log9.info------------------
WinCEを語りまくるスレ (833)
【フリー】2ch公衆無線LANを作らないか? (346)
【PIM】スマートフォンをメジャーにするスレ その4【通話】 (964)
*2ch*モバイル板自治スレッド16*荒らし撲滅* (866)
【Snapdragon 】東芝 T-01A【WM6.1】 (431)
【hp】iPAQ rx 4240/4540/5965 part2【コンパクト】 (688)
skypeってどうでしょう。 (550)
イオンプラン→IIJmio引越し手順 (243)
まさに今、どんなお天気ですか? (453)
( ´∀`)9 {好きです♪ iPAQ} part9 (906)
FMV-BIBLO MG スレッド 5台目 (255)
Libretto L5 にWindows2000! (242)
まさに今、どの街でモバイルしてるんですか?Part1 (334)
本末転倒!大荷物のモバイラー (287)
【ノートから】学生モバイラー【携帯まで】 (676)
Wi-Fi(IEEE802.11b/無線LAN)でモバイル 3ch (289)
--log55.com------------------
【ダチョウ倶楽部】大友運送【クルリンパ♪】 Part.2
【シュレッダー係】アリさんマークの引越社★5【魂の叫び】
ロイヤルリムジン1号
お客様をぶん殴っちゃった^^
アウテックってどうよ
☆★☆東海西濃運輸Part3☆★☆
スーパーカーゴ アネックス【軽貨物】
【わがまま】糞ダンプを語れ【DQN】