COM
■ このスレッドは過去ログ倉庫に格納されています
0001IUnkonwn
2007/01/10(水) 20:13:150002Iknow
2007/01/10(水) 20:15:350003デフォルトの名無しさん
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
0004デフォルトの名無しさん
2007/01/10(水) 23:01:550005デフォルトの名無しさん
2007/01/10(水) 23:19:393つ以上、思い当たる点があればアナタの性格はひん曲がっており、ネガティブ負け組人生を歩んでいます。
□派遣先の社員の意見にはたとえ間違っていても反対しない
□派遣先から「いつまでもここで仕事してくださいね」と言われるようになりたい
□自社に仕事を持ち帰れるように言われるとムカつく
□自社で仕事なんてできるわけがない
□派遣/受託の差異を指摘する人間はムカつく
□派遣先には仕事だけでなく自分のプライベートについても指示して欲しい
□自分の月額金額を知らない
□派遣先社員より自分の生涯収入が低いのは当然だ
□派遣先に尻尾を振り、いつまでも一緒に仕事をすることが大切だ
□今のプロジェクトが終わっても同じ派遣先に常駐したい
0006デフォルトの名無しさん
2007/01/11(木) 22:05:26/ヽヽ|/⌒\ii|\
/ /ヾゞ///\\|
|/ |;;;;;;|/ハ \|
|;;;;//⌒ヽ
|;/( ^ω^) >>1おっおっおっ乙枯ー
. |{ ∪ ∪
|;;ヾ.,____,ノ
|;;; |
|;;;;;|
|;;;;;|
0007デフォルトの名無しさん
2007/01/12(金) 00:45:10もうちょっと刷ればいいのに
0008デフォルトの名無しさん
2007/01/16(火) 17:05:09あとは使う部品のマニュアル嫁としかいえないからなw
0009デフォルトの名無しさん
2007/01/16(火) 17:12:56異なる環境での使用が困難だったからw
(MS仕様のOSでないと使えない)
Javaの逆を狙って、見事に大ハズレしただけ
もうMSには、新技術を提起して欲しくない。
5年持ったためしがないんだもの・・・・
0010デフォルトの名無しさん
2007/01/16(火) 18:00:560011デフォルトの名無しさん
2007/01/16(火) 18:35:270012デフォルトの名無しさん
2007/01/16(火) 18:52:52その設計の具体的要素(インターフェースの呼出設計など)のほとんどは
破棄されて受け継がれず、結局NETフレームワークの大部分は、
JavaVMを参考にして設計された。。。
>>10の様な知ったか馬鹿信者がいる限り、MSはまた独自のポンコツアーキテクチャを
世に送り出して、世界中のエンジニアを煙に巻く過ちを繰り返すだろう。
0013デフォルトの名無しさん
2007/01/16(火) 19:08:51.NETの有り様からするとCOMが素晴らしいということを言いたいのですね?
0014デフォルトの名無しさん
2007/01/16(火) 19:22:44COMは10年以上現役だろ
むしろ.NETのほうがヤバイ
0015デフォルトの名無しさん
2007/01/16(火) 19:25:08winが続く限り生き残るだろ。
0016デフォルトの名無しさん
2007/01/16(火) 19:34:37無知乙
COM はMicrosoft Windows Distributed interNet Application (Windows DNA)アーキテクチャにコンポーネント テクノロジを提供し、
Web ベースとクライアント/サーバー アプリケーションを単一のアーキテクチャに統合することを可能にします。
COM を使用することにより、開発者は任意の言語で、任意のネットワークを介して相互作用できる分散コンポーネントを作成することができます。
COM は、Solaris、HP-UX、DEC UNIX、Siemens Nixdorf SINIX など、他のプラットフォーム上のコンポーネントとの相互運用性も提供します。
0017デフォルトの名無しさん
2007/01/16(火) 19:36:00128ビットの癖にたまに被るし
0018デフォルトの名無しさん
2007/01/16(火) 19:37:050019デフォルトの名無しさん
2007/01/16(火) 19:47:430020デフォルトの名無しさん
2007/01/16(火) 19:52:11Windowsの枠組み内でしか生きられないメジャーだがローカルな技術としてな。。。
>>16
>他のプラットフォーム上のコンポーネントとの相互運用性も提供します。
だから、これが上手くいかなかったんだよ!
知ったかは氏ね
0021デフォルトの名無しさん
2007/01/16(火) 20:07:520022デフォルトの名無しさん
2007/01/16(火) 20:10:140023デフォルトの名無しさん
2007/01/16(火) 20:12:17どっかの解説サイトからとってきただけなんじゃないの
0024デフォルトの名無しさん
2007/01/16(火) 20:21:00嫌な思い出です。
0025デフォルトの名無しさん
2007/01/16(火) 20:54:51http://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
0026デフォルトの名無しさん
2007/01/16(火) 21:02:02COMもOLEも、もうすぐ20歳ですが?
0027デフォルトの名無しさん
2007/01/16(火) 21:50:47OLE1.0時代は、ただその略名通り(異アプリ間のデータ交換)の技術だったのが
OLE2.0時代(COM誕生)には、一つのアーキテクチャの総称だと突如宣言してる。
しかし、ActiveXの誕生と共に「やっぱりただのLink&Embedでした」とまた変えてる。
あまりに節操がない、と言うかエンジニアを舐めてる
0028デフォルトの名無しさん
2007/01/16(火) 22:02:54結局STAでも、他のスレッドからアクセスしていいんだよな。
単に、プロキシ・スタブを介するからMTAに比べると
性能が若干落ちるってことだよな??
0029デフォルトの名無しさん
2007/01/16(火) 22:52:160030デフォルトの名無しさん
2007/01/16(火) 22:53:090031デフォルトの名無しさん
2007/01/16(火) 23:01:30大幅に落ちるという欠点もある
0032デフォルトの名無しさん
2007/01/17(水) 17:04:180033デフォルトの名無しさん
2007/01/17(水) 22:48:58read write パターンって何ですか?
COMは情報が少なくて困る
0034デフォルトの名無しさん
2007/01/17(水) 22:58:26つーか名前を付けたことがデザインパターンの最大の功績と言っても過言ではない
0035デフォルトの名無しさん
2007/01/18(木) 00:03:230036デフォルトの名無しさん
2007/01/18(木) 05:00:46こーゆーのがエンジニアかと思うと、なんか情けなくなってくるね
0037デフォルトの名無しさん
2007/01/18(木) 22:50:08ちょうどIEコンポーネントみたいな感じでOS毎の似たような部品を再利用したいんだ。
0038デフォルトの名無しさん
2007/01/18(木) 23:03:05なんなんだえらそうに
デザパタ厨かよwwww
0039デフォルトの名無しさん
2007/01/19(金) 07:07:41ネーミングパターン
こきおろしパターン
ぐぐれパターン
話題逸らしパターン
0040デフォルトの名無しさん
2007/01/22(月) 18:43:510041デフォルトの名無しさん
2007/01/31(水) 13:09:500042デフォルトの名無しさん
2007/01/31(水) 13:46:230043デフォルトの名無しさん
2007/03/09(金) 16:56:26IDeskBandを継承したクラスのSetSiteで
パラメータからQueryInterfaceでIID_IOleWindowを
取得しようとしたんだが
E_NOINTERFACEエラーが出る。
なんか心当たりある方いらっしゃいませんか?
0044デフォルトの名無しさん
2007/03/09(金) 22:46:43開発環境はVS2005です。
0045デフォルトの名無しさん
2007/03/09(金) 22:54:140046デフォルトの名無しさん
2007/03/10(土) 00:35:590047デフォルトの名無しさん
2007/03/10(土) 01:27:30IOleWindowって自分自身じゃね?
0048デフォルトの名無しさん
2007/03/10(土) 10:47:13http://idm.s9.xrea.com/ratio/2004/06/17/000104.html
ここに
>ツールバーがactivateされるとき、 IObjectWithSite#SetSite が呼ばれる。
>パラメータのIUnknownインターフェースは、IOleWIndowをquery可能なので、
>これを使ってツールバーの親となるウィンドウの情報を取得する。
>MSDNのサンプルでは、このタイミングでツールバー本体のウィンドウを生成している。
ってあって、MSDNでもそうなってたんだが。
0049デフォルトの名無しさん
2007/03/10(土) 15:34:41IOleWindowとれたよ
親のReBar32WindowのハンドルもGetWindowで正しくとれてる。
Vistaだけども。
0050デフォルトの名無しさん
2007/03/10(土) 19:28:49解決したら報告します。
0051デフォルトの名無しさん
2007/04/13(金) 18:44:41COMCOMCOMCOMCOMCOMCOM
COMCOMCOMCOMCOMCOMCOM
COMCOMCOMCΟMCOMCOMCOM
COMCOMCOMCOMCOMCOMCOM
COMCOMCOMCOMCOMCOMCOM
COMCOMCOMCOMCOMCOMCOM
COMCOMCOMCOMCOMCOMCOMage
0052デフォルトの名無しさん
2007/04/16(月) 19:50:58あれATL7.0じゃないと動かねーじゃねぇか
0053デフォルトの名無しさん
2007/04/25(水) 18:19:04MFCでコントロール作ってそれをコンテナに組入れるのはやったことあるけど
ATLで見えないWinsock+COMサーバ.exeに挑戦中でCOMとソケット通信をどのように
連携すればいいのかで色々悩んだ。
結局ウィンドウメッセージとグローバル変数を駆使してなんとか目処がついた
けど、もっとスマートなやり方が載ってる参考書はないんでしょうか?
0054デフォルトの名無しさん
2007/04/26(木) 12:40:13ウィンドウを持たないCOMオブジェクトで、Winsockの非同期やるんなら、イベント使った方が
良いと思う。
005553
2007/04/26(木) 18:32:04ありがとう。
>イベント使った方が良いと思う。
のイベントとはウィンドウメッセージとの理解でよいですか?
もう一点教えていただきたいことがあるのですが、
ブラウザに貼り付けたコントロール(ocx)からATLで作ったCOMサーバ.exeに
Dispatchしてメソッドを呼ぶことができたのですが、
ブラウザを閉じるとCOMサーバ.exeも終了してしまいます。
ブラウザを閉じてもCOMサーバ.exeを常駐させたいのですが
クライアント側/サーバ側どちらで対応すればよいのかさえ検討がつきません
どのようにすればよいかご存知でしょうか?
0056デフォルトの名無しさん
2007/04/26(木) 19:14:000058デフォルトの名無しさん
2007/04/27(金) 10:49:590059デフォルトの名無しさん
2007/04/28(土) 18:07:150060デフォルトの名無しさん
2007/04/28(土) 18:31:14言語は問わないのですが、できればVCについてお願いします。
0061デフォルトの名無しさん
2007/04/29(日) 02:27:45なにぃっ、Mageだと!?貴様鉄道板住人だな!
0062デフォルトの名無しさん
2007/05/03(木) 12:01:20それについて議論しよう
0063デフォルトの名無しさん
2007/05/03(木) 12:01:470064デフォルトの名無しさん
2007/05/03(木) 12:35:53もう存在意義がなくなってんじゃないの?
0065デフォルトの名無しさん
2007/05/03(木) 12:38:080066デフォルトの名無しさん
2007/05/04(金) 00:28:42アプリ間でデータ交換とか外部アプリへの機能提供とかの場面で利用価値あると思うけど
まあ、代替手段は色々あるし、わざわざムズい技術を覚えてまでcomを利用する必要もないか
特に開発人口が多い業務系開発だったら尚更だな
0067デフォルトの名無しさん
2007/05/04(金) 00:43:47もしくはCOBOL
0068デフォルトの名無しさん
2007/05/04(金) 14:13:48ActiveXでもOLEでもなくDLL+αとしてのCOMっていう観点でさ。
なんにしてもMFCやATLで新しくコンポーネント作るってのはなくなっていくんだろうな。せいぜいVB6でか.NETアセンブリからタイプライブラリ作る位になるのか。
0069デフォルトの名無しさん
2007/05/07(月) 18:10:27親ウィンドウのメッセージループから自exe内のCOMオブジェクトを
どのように参照すればよいかわかりません。
マクロで展開されたポインタがどこかにあると思うのですが
どのように参照すればよいでしょうか?
ATL初心者なので質問の表現がおかしいかも知れませんが
よろしくお願いします。
007069
2007/05/07(月) 19:26:22Choge *a=(Choge*)&ObjectMap[n];
で参照できました。
で、いいですか? ←直感的にやったらできたので不安ですが・・・
0071デフォルトの名無しさん
2007/05/08(火) 03:09:340072デフォルトの名無しさん
2007/05/08(火) 12:19:590073デフォルトの名無しさん
2007/05/08(火) 12:45:220074デフォルトの名無しさん
2007/05/08(火) 13:32:57クラスビューからメソッドと接続ポイントを追加したんですが
xxxxx.idlとxxxxxCP.hに空のクラスを作るだけで
メソッドの雛形作ってくれないんですよ。
最初のウィザードのときシンプルオブジェクトで作成してるからでしょうか?
0075デフォルトの名無しさん
2007/05/08(火) 13:42:03クラスビューに IHoge と Libの下に _IHogeEvents が出来ているでしょ
イベントメソッド追加したければ _IHogeEventsで右クリック - メソッド追加で追加できるよ
メソッド追加した後、実装クラス (CHoge) の方で右クリック - 接続ポイントの追加をもう一回
やるのを忘れんな
0076デフォルトの名無しさん
2007/05/08(火) 14:49:43>接続ポイントの追加をもう一回やるのを忘れんな
もう一回やったらできました・・・なぜもう一回なのかわかりませんか゛
とにかく今日一日試行錯誤していたのが「もう一回」のキーワードで解決しました。
>>75さんになにかごちそうしたい気持ちでいっぱいです。
0077デフォルトの名無しさん
2007/05/08(火) 16:24:460078デフォルトの名無しさん
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のメソッドを呼び出すことは成功しています。
0079デフォルトの名無しさん
2007/05/08(火) 18:41:370080デフォルトの名無しさん
2007/05/08(火) 20:21:50Fire_Hoge()の呼び出しってどうやってます?
多分IHogeの実装クラスCHogeのインスタンスから呼び出してると思いますが、
COMクライアントが作ったCHogeインスタンスから呼ばないとFireできないっす
008180
2007/05/08(火) 20:30:56インターフェースをシングルトンにしとけば作成されるインスタンスは必ず一つなので、
いっそシングルトンにしてしまうとか
つ DECLARE_CLASSFACTORY_SINGLETON
ただこれをやると以下の問題も・・・
つ http://support.microsoft.com/kb/198834/ja
後は泥臭いやり方しか知らない
0082デフォルトの名無しさん
2007/05/08(火) 21:07:42<SCRIPT language="javascript" for="HogeID" event="HogeEvents(a, b)">
alert(a);
</SCRIPT>
<OBJECT ID="HogeID" CLASSID="CLSID:XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX">
</OBJECT>
Adviseをお願いします。
0084デフォルトの名無しさん
2007/05/08(火) 21:14:49>>83は誤爆です。
>>80,81
ありがとうございます。
参考にさせていただき再び試行錯誤させていただきます。
0085デフォルトの名無しさん
2007/05/08(火) 21:21:59書き忘れましたが、Fire_Hoge()の呼び出しはは
ブラウザ(HTMLに記述したjavascript)からCHoge.exeのメソッドを呼び出して
呼び出されたメソッドの中でFire_Hoge()を呼んでいます。
0086デフォルトの名無しさん
2007/06/11(月) 15:36:03アウトプロセスサーバで
クライアントから呼出して配列データ(BSTR)を取得するメソッドを作成しています。
このときサーバ側ではSafeArrayCreate()でクライアントに渡す
配列データを作成しますが、この配列データはSafeArrayDestroy()で
解放する必要はないであってますか?
根拠としてメソッド内で解放するとクライアントに渡せない。
デバッガで確認したところSafeArrayCreate()のポインタをstaticで保持して
次にメソッドを呼び出したら、ポインタが指しているメモリが壊れていた
(=勝手に解放してくれた)。
ということからこのような結論に至ったのですが、間違ってないでしょうか?
0087デフォルトの名無しさん
2007/06/11(月) 15:52:36今回outprocだから、正確にはマーシャラーが適当にシリアライズしたのち
解放してくれるのでユーザのコードでは(inprocの場合と同様)解放しなくて良い、
というような動作。
逆に「取得した側」は自分で解放する。
0088デフォルトの名無しさん
2007/06/11(月) 16:04:00すばやいレスありがとうございます。
さらに詳しいCOMの内情まで教えていただきまして勉強になりました。
感謝いたします。
0089デフォルトの名無しさん
2007/07/08(日) 15:55:55なにせ情報や サンプルがなかなか見当たらないので
0090デフォルトの名無しさん
2007/07/09(月) 09:14:09これはまぁわかりやすい方。
0091デフォルトの名無しさん
2007/07/10(火) 20:39:52詳しい本は?
0092デフォルトの名無しさん
2007/07/11(水) 09:08:04それなら>>90の本とMSDN。
IEコンポ専門に突っ込んで書いてる本はないとおもう。
英語のMSDN読みまくる根性ないと無理。
0093デフォルトの名無しさん
2007/07/11(水) 20:47:11IWebBrowser2を実装して、ActiveXコントロールをホストしたい。
0094デフォルトの名無しさん
2007/07/11(水) 22:03:14http://msdn2.microsoft.com/en-US/library/aa752127.aspx
> Custom Implementation No
ActiveXコントロールをホストしたいだけならIWebBrowser2を実装する必要は無いぞ。
0095デフォルトの名無しさん
2007/07/11(水) 23:27:02■ このスレッドは過去ログ倉庫に格納されています