1 名前:IUnkonwn mailto:sage [2007/01/10(水) 20:13:15 ] いざ語れや
2 名前:Iknow mailto:sage [2007/01/10(水) 20:15:35 ] 嫌だね。
3 名前:デフォルトの名無しさん mailto:sage [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
4 名前:デフォルトの名無しさん mailto:sage [2007/01/10(水) 23:01:55 ] 何となく偉くなった気がする15の夜
5 名前:デフォルトの名無しさん [2007/01/10(水) 23:19:39 ] 【ネガティブ派遣根性チェック】 3つ以上、思い当たる点があればアナタの性格はひん曲がっており、ネガティブ負け組人生を歩んでいます。 □派遣先の社員の意見にはたとえ間違っていても反対しない □派遣先から「いつまでもここで仕事してくださいね」と言われるようになりたい □自社に仕事を持ち帰れるように言われるとムカつく □自社で仕事なんてできるわけがない □派遣/受託の差異を指摘する人間はムカつく □派遣先には仕事だけでなく自分のプライベートについても指示して欲しい □自分の月額金額を知らない □派遣先社員より自分の生涯収入が低いのは当然だ □派遣先に尻尾を振り、いつまでも一緒に仕事をすることが大切だ □今のプロジェクトが終わっても同じ派遣先に常駐したい
6 名前:デフォルトの名無しさん mailto:sage [2007/01/11(木) 22:05:26 ] ヽ / /⌒\ /ヽヽ|/⌒\ii|\ / /ヾゞ///\\| |/ |;;;;;;|/ハ \| |;;;;//⌒ヽ |;/( ^ω^) >>1 おっおっおっ乙枯ー . |{ ∪ ∪ |;;ヾ.,____,ノ |;;; | |;;;;;| |;;;;;|
7 名前:デフォルトの名無しさん mailto:sage [2007/01/12(金) 00:45:10 ] COMの本、死ぬの早すぎ もうちょっと刷ればいいのに
8 名前:デフォルトの名無しさん [2007/01/16(火) 17:05:09 ] 一通り仕組み頭に入れとけばそれ以上深い話があるでもなく あとは使う部品のマニュアル嫁としかいえないからなw
9 名前:デフォルトの名無しさん mailto:sage [2007/01/16(火) 17:12:56 ] 簡単に言えば、異なる言語間で共通に使用できるだけで、 異なる環境での使用が困難だったからw (MS仕様のOSでないと使えない) Javaの逆を狙って、見事に大ハズレしただけ もうMSには、新技術を提起して欲しくない。 5年持ったためしがないんだもの・・・・
10 名前:デフォルトの名無しさん [2007/01/16(火) 18:00:56 ] COMは傑作なんだけど。馬鹿にはわからないのが残念でならない
11 名前:デフォルトの名無しさん mailto:sage [2007/01/16(火) 18:35:27 ] 馬鹿にも分かるものこそが真の傑作だとは思わんか?
12 名前:デフォルトの名無しさん mailto:sage [2007/01/16(火) 18:52:52 ] comの基本概念は、次の.NETに受け継がれてるけど(当たり前の話だが)、 その設計の具体的要素(インターフェースの呼出設計など)のほとんどは 破棄されて受け継がれず、結局NETフレームワークの大部分は、 JavaVMを参考にして設計された。。。 >>10 の様な知ったか馬鹿信者がいる限り、MSはまた独自のポンコツアーキテクチャを 世に送り出して、世界中のエンジニアを煙に巻く過ちを繰り返すだろう。
13 名前:デフォルトの名無しさん mailto:sage [2007/01/16(火) 19:08:51 ] >>12 .NETの有り様からするとCOMが素晴らしいということを言いたいのですね?
14 名前:デフォルトの名無しさん mailto:sage [2007/01/16(火) 19:22:44 ] >>9 COMは10年以上現役だろ むしろ.NETのほうがヤバイ
15 名前:デフォルトの名無しさん mailto:sage [2007/01/16(火) 19:25:08 ] というかwindows自体がCOMの塊だろ。 winが続く限り生き残るだろ。
16 名前:デフォルトの名無しさん mailto:sage [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ビットの癖にたまに被るし
18 名前:デフォルトの名無しさん mailto:sage [2007/01/16(火) 19:37:05 ] COMの失敗は名前だけ
19 名前:デフォルトの名無しさん mailto:sage [2007/01/16(火) 19:47:43 ] 検索できねー
20 名前:デフォルトの名無しさん mailto:sage [2007/01/16(火) 19:52:11 ] >>14 Windowsの枠組み内でしか生きられないメジャーだがローカルな技術としてな。。。 >>16 >他のプラットフォーム上のコンポーネントとの相互運用性も提供します。 だから、これが上手くいかなかったんだよ! 知ったかは氏ね
21 名前:デフォルトの名無しさん mailto:sage [2007/01/16(火) 20:07:52 ] 怒りっぽい人ですね
22 名前:デフォルトの名無しさん [2007/01/16(火) 20:10:14 ] 16はすぐ詐偽に引っかかるタイプ
23 名前:デフォルトの名無しさん [2007/01/16(火) 20:12:17 ] >>16 は単に MS のページか どっかの解説サイトからとってきただけなんじゃないの
24 名前:デフォルトの名無しさん mailto:sage [2007/01/16(火) 20:21:00 ] COMを理解するために必死でC++の仕様を勉強した時期がありました。 嫌な思い出です。
25 名前:デフォルトの名無しさん mailto:sage [2007/01/16(火) 20:54:51 ] OpenVMS h71000.www7.hp.com/openvms/products/dcom/ Solaris www.softpanorama.org/Net/Application_layer/rpc.shtml EntireX DCOM for LINUX www.softwareag.com/jp/products/entirex/downloads/download_exxdcom.asp Free DCE and DCOM sourceforge.net/projects/freedce J-Interop j-interop.sourceforge.net
26 名前:デフォルトの名無しさん mailto:sage [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に比べると 性能が若干落ちるってことだよな??
29 名前:デフォルトの名無しさん mailto:sage [2007/01/16(火) 22:52:16 ] DirectXもCOM
30 名前:デフォルトの名無しさん mailto:sage [2007/01/16(火) 22:53:09 ] その代わり排他制御をしなくて済む(プロキシ・スタブがメソッド呼出をキューイングするため)という利点がある。
31 名前:デフォルトの名無しさん mailto:sage [2007/01/16(火) 23:01:30 ] その代わり、Read Writeパターンが使えないのでサーバーパフォーマンスが 大幅に落ちるという欠点もある
32 名前:デフォルトの名無しさん mailto:sage [2007/01/17(水) 17:04:18 ] ActiveX 〜犠牲者たち〜
33 名前:デフォルトの名無しさん [2007/01/17(水) 22:48:58 ] >>31 read write パターンって何ですか? COMは情報が少なくて困る
34 名前:デフォルトの名無しさん mailto:sage [2007/01/17(水) 22:58:26 ] 名前までわかってるんだから検索しろよ つーか名前を付けたことがデザインパターンの最大の功績と言っても過言ではない
35 名前:デフォルトの名無しさん [2007/01/18(木) 00:03:23 ] なんだデザインパターンか
36 名前:デフォルトの名無しさん [2007/01/18(木) 05:00:46 ] >>35 こーゆーのがエンジニアかと思うと、なんか情けなくなってくるね
37 名前:デフォルトの名無しさん mailto:sage [2007/01/18(木) 22:50:08 ] Java SwingとOLEとCORBA(にGUIコンポってあるの?)をJava上で手間なくリンクしたい。 ちょうどIEコンポーネントみたいな感じでOS毎の似たような部品を再利用したいんだ。
38 名前:デフォルトの名無しさん [2007/01/18(木) 23:03:05 ] >>36 なんなんだえらそうに デザパタ厨かよwwww
39 名前:デフォルトの名無しさん mailto:sage [2007/01/19(金) 07:07:41 ] ネーミングパターン こきおろしパターン ぐぐれパターン 話題逸らしパターン
40 名前:デフォルトの名無しさん [2007/01/22(月) 18:43:51 ] 過疎
41 名前:デフォルトの名無しさん [2007/01/31(水) 13:09:50 ] CON
42 名前:デフォルトの名無しさん mailto:sage [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です。
45 名前:デフォルトの名無しさん mailto:sage [2007/03/09(金) 22:54:14 ] どっと混む
46 名前:デフォルトの名無しさん mailto:sage [2007/03/10(土) 00:35:59 ] 下手なシャレはよしなしゃれ
47 名前:デフォルトの名無しさん mailto:sage [2007/03/10(土) 01:27:30 ] >>43 IOleWindowって自分自身じゃね?
48 名前:デフォルトの名無しさん mailto:sage [2007/03/10(土) 10:47:13 ] >>47 idm.s9.xrea.com/ratio/2004/06/17/000104.html ここに >ツールバーがactivateされるとき、 IObjectWithSite#SetSite が呼ばれる。 >パラメータのIUnknownインターフェースは、IOleWIndowをquery可能なので、 >これを使ってツールバーの親となるウィンドウの情報を取得する。 >MSDNのサンプルでは、このタイミングでツールバー本体のウィンドウを生成している。 ってあって、MSDNでもそうなってたんだが。
49 名前:デフォルトの名無しさん mailto:sage [2007/03/10(土) 15:34:41 ] >>48 IOleWindowとれたよ 親のReBar32WindowのハンドルもGetWindowで正しくとれてる。 Vistaだけども。
50 名前:デフォルトの名無しさん mailto:sage [2007/03/10(土) 19:28:49 ] なんでだろ・・・ 解決したら報告します。
51 名前:デフォルトの名無しさん [2007/04/13(金) 18:44:41 ] COMCOMCOMCOMCOMCOMCOM COMCOMCOMCOMCOMCOMCOM COMCOMCOMCOMCOMCOMCOM COMCOMCOMCΟMCOMCOMCOM COMCOMCOMCOMCOMCOMCOM COMCOMCOMCOMCOMCOMCOM COMCOMCOMCOMCOMCOMCOM COMCOMCOMCOMCOMCOMCOMage
52 名前:デフォルトの名無しさん mailto:sage [2007/04/16(月) 19:50:58 ] ATLの属性をつかってテキストで簡単にCOMを作るチュートリアルやってみたが、 あれATL7.0じゃないと動かねーじゃねぇか
53 名前:デフォルトの名無しさん [2007/04/25(水) 18:19:04 ] ネットの情報だけでCOMサーバを勉強するのって無理ある? MFCでコントロール作ってそれをコンテナに組入れるのはやったことあるけど ATLで見えないWinsock+COMサーバ.exeに挑戦中でCOMとソケット通信をどのように 連携すればいいのかで色々悩んだ。 結局ウィンドウメッセージとグローバル変数を駆使してなんとか目処がついた けど、もっとスマートなやり方が載ってる参考書はないんでしょうか?
54 名前:デフォルトの名無しさん mailto:sage [2007/04/26(木) 12:40:13 ] >>53 ウィンドウを持たないCOMオブジェクトで、Winsockの非同期やるんなら、イベント使った方が 良いと思う。
55 名前:53 [2007/04/26(木) 18:32:04 ] >>54 ありがとう。 >イベント使った方が良いと思う。 のイベントとはウィンドウメッセージとの理解でよいですか? もう一点教えていただきたいことがあるのですが、 ブラウザに貼り付けたコントロール(ocx)からATLで作ったCOMサーバ.exeに Dispatchしてメソッドを呼ぶことができたのですが、 ブラウザを閉じるとCOMサーバ.exeも終了してしまいます。 ブラウザを閉じてもCOMサーバ.exeを常駐させたいのですが クライアント側/サーバ側どちらで対応すればよいのかさえ検討がつきません どのようにすればよいかご存知でしょうか?
56 名前:デフォルトの名無しさん mailto:sage [2007/04/26(木) 19:14:00 ] よくない。WSAEventSelect使えって話でそ。
57 名前:53 [2007/04/26(木) 23:21:36 ] >>56 さん 了解です。 引続き>>55 についてご存知の方お力を貸してください。 お願いします。
58 名前:デフォルトの名無しさん mailto:sage [2007/04/27(金) 10:49:59 ] DLLに汁
59 名前:デフォルトの名無しさん mailto:sage [2007/04/28(土) 18:07:15 ] DCOMの実装に関する参考書や参考サイト知りませんか?
60 名前:デフォルトの名無しさん [2007/04/28(土) 18:31:14 ] ↑クライアントとサーバ両方の実装についてです。 言語は問わないのですが、できればVCについてお願いします。
61 名前:デフォルトの名無しさん mailto:sage [2007/04/29(日) 02:27:45 ] >>51 なにぃっ、Mageだと!?貴様鉄道板住人だな!
62 名前:デフォルトの名無しさん [2007/05/03(木) 12:01:20 ] COMスレってなんでこんなに過疎ってるの? それについて議論しよう
63 名前:デフォルトの名無しさん mailto:sage [2007/05/03(木) 12:01:47 ] ネットでCOMについて記述してるサイトもあんま見ない
64 名前:デフォルトの名無しさん mailto:sage [2007/05/03(木) 12:35:53 ] COMに比べると似たようなことはドトネトの方が簡単にできるから もう存在意義がなくなってんじゃないの?
65 名前:デフォルトの名無しさん mailto:sage [2007/05/03(木) 12:38:08 ] COMを使う舞台がエクセルVBAなんかに移ってるからな
66 名前:デフォルトの名無しさん mailto:sage [2007/05/04(金) 00:28:42 ] なんで?comサーバでの利用機会とか無いの? アプリ間でデータ交換とか外部アプリへの機能提供とかの場面で利用価値あると思うけど まあ、代替手段は色々あるし、わざわざムズい技術を覚えてまでcomを利用する必要もないか 特に開発人口が多い業務系開発だったら尚更だな
67 名前:デフォルトの名無しさん mailto:sage [2007/05/04(金) 00:43:47 ] 業務系ならなおさら何でもエクセルでやりたがる もしくはCOBOL
68 名前:デフォルトの名無しさん mailto:sage [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初心者なので質問の表現がおかしいかも知れませんが よろしくお願いします。
70 名前:69 [2007/05/07(月) 19:26:22 ] デバッガで見てみたら Choge *a=(Choge*)&ObjectMap[n]; で参照できました。 で、いいですか? ←直感的にやったらできたので不安ですが・・・
71 名前:デフォルトの名無しさん mailto:sage [2007/05/08(火) 03:09:34 ] いいよ〜いいよ〜いいよ〜
72 名前:デフォルトの名無しさん [2007/05/08(火) 12:19:59 ] もー。ATLイベントの実装の仕方がいまいちわからん。
73 名前:デフォルトの名無しさん mailto:sage [2007/05/08(火) 12:45:22 ] イベント出す側だったらウィザードが殆どやってくれるからあまり意識したことないけど?
74 名前:デフォルトの名無しさん [2007/05/08(火) 13:32:57 ] イベント出す側なんですが、 クラスビューからメソッドと接続ポイントを追加したんですが xxxxx.idlとxxxxxCP.hに空のクラスを作るだけで メソッドの雛形作ってくれないんですよ。 最初のウィザードのときシンプルオブジェクトで作成してるからでしょうか?
75 名前:デフォルトの名無しさん mailto:sage [2007/05/08(火) 13:42:03 ] ATLシンプルオブジェクトを追加するとき"接続ポイント"にチェックいれて作れば クラスビューに IHoge と Libの下に _IHogeEvents が出来ているでしょ イベントメソッド追加したければ _IHogeEventsで右クリック - メソッド追加で追加できるよ メソッド追加した後、実装クラス (CHoge) の方で右クリック - 接続ポイントの追加をもう一回 やるのを忘れんな
76 名前:デフォルトの名無しさん [2007/05/08(火) 14:49:43 ] で、できました。 >接続ポイントの追加をもう一回やるのを忘れんな もう一回やったらできました・・・なぜもう一回なのかわかりませんか゛ とにかく今日一日試行錯誤していたのが「もう一回」のキーワードで解決しました。 >>75 さんになにかごちそうしたい気持ちでいっぱいです。
77 名前:デフォルトの名無しさん mailto:sage [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のメソッドを呼び出すことは成功しています。
79 名前:デフォルトの名無しさん mailto:sage [2007/05/08(火) 18:41:37 ] javascriptからEventをAdviseしてあげた?
80 名前:デフォルトの名無しさん mailto:sage [2007/05/08(火) 20:21:50 ] >>78 Fire_Hoge()の呼び出しってどうやってます? 多分IHogeの実装クラスCHogeのインスタンスから呼び出してると思いますが、 COMクライアントが作ったCHogeインスタンスから呼ばないとFireできないっす
81 名前:80 mailto:sage [2007/05/08(火) 20:30:56 ] 補足: インターフェースをシングルトンにしとけば作成されるインスタンスは必ず一つなので、 いっそシングルトンにしてしまうとか つ DECLARE_CLASSFACTORY_SINGLETON ただこれをやると以下の問題も・・・ つ support.microsoft.com/kb/198834/ja 後は泥臭いやり方しか知らない
82 名前:デフォルトの名無しさん mailto:sage [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 ありがとうございます。 参考にさせていただき再び試行錯誤させていただきます。
85 名前:デフォルトの名無しさん mailto:sage [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で保持して 次にメソッドを呼び出したら、ポインタが指しているメモリが壊れていた (=勝手に解放してくれた)。 ということからこのような結論に至ったのですが、間違ってないでしょうか?
87 名前:デフォルトの名無しさん mailto:sage [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についての入門書がありましたら、紹介してくれないでしょうか? なにせ情報や サンプルがなかなか見当たらないので
90 名前:デフォルトの名無しさん mailto:sage [2007/07/09(月) 09:14:09 ] ttp://www.amazon.co.jp/exec/obidos/ASIN/4881356992 これはまぁわかりやすい方。
91 名前:デフォルトの名無しさん [2007/07/10(火) 20:39:52 ] わかりやすくなくていいからIEが作れるぐらい 詳しい本は?
92 名前:デフォルトの名無しさん mailto:sage [2007/07/11(水) 09:08:04 ] IEってかIEコンポ使ってのタブブラウザみたいなの? それなら>>90 の本とMSDN。 IEコンポ専門に突っ込んで書いてる本はないとおもう。 英語のMSDN読みまくる根性ないと無理。
93 名前:デフォルトの名無しさん mailto:sage [2007/07/11(水) 20:47:11 ] いや、IEコンポを使うんじゃなくて、IEコンポ自体を作りたい。 IWebBrowser2を実装して、ActiveXコントロールをホストしたい。
94 名前:デフォルトの名無しさん mailto:sage [2007/07/11(水) 22:03:14 ] IEコンポ自体を作りたいなら止めはしないが、MSは他人に実装させるつもりはないはず。 msdn2.microsoft.com/en-US/library/aa752127.aspx > Custom Implementation No ActiveXコントロールをホストしたいだけならIWebBrowser2を実装する必要は無いぞ。
95 名前:デフォルトの名無しさん mailto:sage [2007/07/11(水) 23:27:02 ] mozillaにIWebBroser2の互換インターフェースが存在したような、
96 名前:デフォルトの名無しさん mailto:sage [2007/07/12(木) 00:21:14 ] >>94 ぬあー、そうなのか。 >>95 Mozillaのコード見たけど、想像以上に整然としてて驚いた。
97 名前:90 mailto:sage [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
99 名前:デフォルトの名無しさん mailto:sage [2007/07/16(月) 07:43:51 ] 3層アプリでビジネスロジックを ドメインオブジェクトとして他のマシンに置きたいとき COMならCOM+が使えるじゃないですか。 .NETだと何を使えばいいのでしょう? Web Serviceだとサーバ側にインスタンスを作って 継続的に使用できないですよね。 となると.NET Remotingかな。
100 名前:デフォルトの名無しさん mailto:sage [2007/07/16(月) 08:53:34 ] >>99 System.EnterpriseServices でCOM+
101 名前:99 mailto:sage [2007/07/16(月) 11:31:25 ] >>100 なるほど! 結局はCOM+ですか。 .NetはCOMをうまく内包しているんですね。 ということは、「.NetになったらCOMは必要ない」 という意見は的外れなんですね。
102 名前:デフォルトの名無しさん mailto:sage [2007/07/16(月) 15:54:41 ] COM+はやめたほうがいいんじゃないか?
103 名前:デフォルトの名無しさん mailto:sage [2007/07/16(月) 21:18:15 ] >>101 CLR自身がCOMで実装されてるのに、誰だよそんなこと言った奴は。
104 名前:デフォルトの名無しさん mailto:sage [2007/08/15(水) 00:05:12 ] 現在どのプロセスがどのCOMコンポーネントを使っているか 知る方法はないでしょうか?
105 名前:デフォルトの名無しさん mailto:sage [2007/08/17(金) 01:49:01 ] CoCreateInstanceなんかをHOOKしとけば、判るんじゃない? (直接DLLからインスタンスを生成する方法がないわけじゃないけど)
106 名前:デフォルトの名無しさん mailto:sage [2007/08/20(月) 22:00:05 ] COMが流行のキーワードでなくなり、.NETは使いものにならない ということで、プログラミング環境は90年代前半に戻りつつあるよね。 ホビープログラマとしてはプログラムなんて動けばなんでもいいし。
107 名前:デフォルトの名無しさん mailto:sage [2007/08/21(火) 08:37:59 ] 確かにC++のシェアが下がったと思ったら、組み込みでC++再来みたいな。
108 名前:デフォルトの名無しさん mailto:sage [2007/08/21(火) 19:01:55 ] ウェブプログラミングに飽きて、.NETも何かいまひとつ、そしてC++に戻ってきた。
109 名前:デフォルトの名無しさん mailto:sage [2007/08/22(水) 22:17:32 ] COMでは参照カウンタが0になるとすぐに解放されることは 保証されているんでしょうか?
110 名前:デフォルトの名無しさん mailto:sage [2007/08/24(金) 13:49:34 ] インターフェイスは参照カウンタ0で開放する規約になっている。 なってない場合バグ。その辺のロジックはATLとかがサポートしてて 直接コーディングすることは少ないから普通は大丈夫。 アウトプロセスの複合サーバーの場合は、 インターフェイスが開放されてもプロセスが終了しないものがある。 WordやExcelがその例。
111 名前:デフォルトの名無しさん mailto:sage [2007/08/24(金) 14:44:18 ] IISでASPからActiveX DLLを使った時、ASPでSet obj = Nothing してもDLLがロックされたままになるのは別の問題ですかね?
112 名前:デフォルトの名無しさん [2007/08/26(日) 08:22:25 ] pc11.2ch.net/test/read.cgi/tech/1143171172/
113 名前:デフォルトの名無しさん mailto:sage [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
116 名前:デフォルトの名無しさん mailto:age [2007/09/27(木) 16:48:30 ] www.premiumtv.12gbfree.com/?X3/?STV=dvdmajestic+trailer+STAR+WARS
117 名前:デフォルトの名無しさん mailto:sage [2007/09/27(木) 18:15:23 ] >>115 Windows のソフトでわずかだけれども C# が使われ始めているな。 以前ならMFCで書かれていたような奴が。 Sunが横やり入れなければ数年前にJ++で出来ていたことなのにねぇ・・・
118 名前:デフォルトの名無しさん mailto:sage [2007/09/28(金) 04:52:55 ] 組み込みでC#使ってるひといる?
119 名前:デフォルトの名無しさん [2007/10/01(月) 09:32:59 ] VB6の後継はC#だよね〜
120 名前:デフォルトの名無しさん [2007/10/01(月) 13:13:07 ] ぽとぺた環境のことか?
121 名前:デフォルトの名無しさん mailto:sage [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();
124 名前:デフォルトの名無しさん mailto:sage [2007/11/03(土) 19:23:29 ] IUnko
125 名前:デフォルトの名無しさん mailto:sage [2007/11/05(月) 19:49:15 ] eco->recycle(unko);
126 名前:デフォルトの名無しさん mailto:sage [2007/11/05(月) 21:55:35 ] シェルがCOMをまったく使わなくなる日が来たりするのだろうか
127 名前:デフォルトの名無しさん mailto:sage [2007/11/05(月) 23:14:29 ] 果たしてそれはWindowsなのだろうか。
128 名前:デフォルトの名無しさん mailto:sage [2007/11/06(火) 01:23:31 ] 果たしてWindowsのそれはシェルなのだろうか
129 名前:デフォルトの名無しさん mailto:sage [2007/11/11(日) 22:25:40 ] IThumbnailCache ってどこから手繰りよせたらいいのん? IThumbnailProviderからもってくるとキャッシュみないよね?
130 名前:129 [2007/11/12(月) 00:26:45 ] >IThumbnailProviderからもってくるとキャッシュみないよね? IShellItem.BindToHandler経由でIThumbnailProviderからサムネールもってくるとキャッシュみないよね?
131 名前:129 mailto:sage [2007/11/12(月) 02:14:14 ] 自己解決しますた LocalThumbnailCacheでnewしてやればいいのね ほんとのところCOMを理解してないけど キャッシュ見るようになって動画のサムネイル早っ
132 名前:デフォルトの名無しさん mailto:sage [2007/11/13(火) 23:58:24 ] 先週からVisualStudio2005でCOM/ATLの開発始めたCOM初心者なんだけど、 おっそろしい程に参考になる本とかWEBページとか少ないな ボチボチ進んでるから、なんとかなるとは思うけど、自力で探るのはめんどい
133 名前:デフォルトの名無しさん mailto:sage [2007/11/16(金) 02:04:59 ] Essential COMの第一章はPDFになってて結構参考になった
134 名前:129 mailto:sage [2007/11/16(金) 02:13:11 ] >>133 kwsk
135 名前:デフォルトの名無しさん mailto:sage [2007/11/16(金) 02:16:20 ] >>134 www.ascii.co.jp/pb/bookmart/pdf/47561/4756130666.pdf 直接の役には全然役に立たないよ でもこれ読む前はなんでCOMがこんなことになってるのか全然わかんなかった
136 名前:デフォルトの名無しさん mailto:sage [2007/11/16(金) 02:28:35 ] >>135 ありがとう。 読んでみる。
137 名前:デフォルトの名無しさん mailto:sage [2007/11/17(土) 02:14:16 ] レジストリを使わないCOMがあったら便利だなぁと、そう思った マニフェスト的なものをヘッダに持って どう実現するかは知らんけど
138 名前:デフォルトの名無しさん mailto:sage [2007/11/17(土) 03:36:51 ] >>137 XP以降ならマニフェストでサイドバイサイドできるよ。
139 名前:デフォルトの名無しさん mailto:sage [2007/11/21(水) 00:20:03 ] 解放忘れのチェックの仕方とエラー処理の書き方がわからんなあ
140 名前:デフォルトの名無しさん mailto:sage [2007/11/21(水) 00:48:55 ] CComPtr _com_ptr_t
141 名前:デフォルトの名無しさん mailto:sage [2007/11/22(木) 00:08:27 ] >>137 海外のライブラリでそれできるやつあるよ
142 名前:デフォルトの名無しさん mailto:sage [2007/11/23(金) 01:44:45 ] Registration-Free COM ttp://www.ailight.jp/blog/sha256/archive/2005/03/29/5437.aspx
143 名前:デフォルトの名無しさん mailto:sage [2007/12/02(日) 02:36:38 ] 翔泳社の「ATL COMプログラミング」でCOMの勉強を始めたのですが、 VisualStudio2005でATLの「実行可能サーバー」を生成すると ソースが書籍のサンプルと全然対応しなくて困っております 今の開発環境でCOMの学習用にいい書籍とかありますでしょうか?
144 名前:デフォルトの名無しさん mailto:sage [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年だ読んだこと無いけど
145 名前:デフォルトの名無しさん mailto:sage [2007/12/02(日) 17:22:28 ] >>143 前に日本語でその手の本を探したけど、結局、見つからなかった。 真面目にサンプル作って解説本でも書いたら売れるかな。 売れないだろうな・・・・
146 名前:デフォルトの名無しさん mailto:sage [2007/12/02(日) 18:08:07 ] >>143 俺もその本持ってるけど、COM/ATLの根本的なところは大して変わらないんだし、ATLの側でも 互換性のためATL3.0用のクラス残してるし、それで勉強してみたら? C++属性なんて最後でいいと思うし、ATL8.0の部分だってATL3.0判ればそう難しくはないんじゃないか?
147 名前:デフォルトの名無しさん mailto:sage [2007/12/03(月) 00:38:06 ] >>144-146 皆様ご意見ありがとうございます。 少なくとも日本語の書籍に新しいものはなさそうですね。 英語の本は時間が許せば…と思いますがやはり敷居が高いです。 >>146 さんの言うとおりもう少し現状の環境で書籍の内容を確認してみます。
148 名前:デフォルトの名無しさん mailto:sage [2007/12/05(水) 01:36:09 ] 別環境のVisualC++6.0でATLのプロジェクトを生成し、それを使って演習…
149 名前:デフォルトの名無しさん [2007/12/14(金) 22:18:03 ] IDropTarget/IDropTargetHelperを実装したクラスのウィンドウで ドラッグドロップをしています。 そのウィンドウ上にマウスカーソルがあるときに他のウィンドウを非アクティブのまま 表示するようにしたいんですが、ウィンドウを表示すると元のウィンドウの下に ドラッグイメージが隠れてしまいます。 (後から表示したいウィンドウもIDropTarget/IDropTargetHelperを実装してます。そっち上では ドラッグイメージは隠れません) ドラッグイメージのZOrderをなんとかしたいわけですが、 ヒント等ご存知の方いらしたら教えてくんなましょ
150 名前:デフォルトの名無しさん mailto:sage [2007/12/15(土) 01:59:23 ] そのウィンドウと他のウィンドウと元のウィンドウと後から表示したいウィンドウが どのウィンドウなのかわかんないのでAとかBとか名前付けて書いてくれると嬉しい
151 名前:デフォルトの名無しさん mailto:sage [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使わないと正常なんで、諦めるかも……
152 名前:デフォルトの名無しさん mailto:sage [2007/12/20(木) 16:43:05 ] mpeg compass.jp 名古屋駅近辺でお話しましょう
153 名前:デフォルトの名無しさん mailto:sage [2007/12/20(木) 23:05:18 ] COM初心者です。 CLSCTX_INPROC_SERVERを渡したCoCreateInstanceは 1つのプロセス内に1つのインスタンスを作成するみたいですが、 1つのプロセス内の複数のスレッドでひとつのIIDで指定されたインスタンスを スレッドごとに作成したいときはどうしたらいいのでしょう。 もしかしてIIDごとに何個つくれるとか決まってたりするんでしょうか
154 名前:デフォルトの名無しさん mailto:sage [2007/12/20(木) 23:14:33 ] 各スレッドでCoCreateInstanceを呼べばいい。
155 名前:デフォルトの名無しさん mailto:sage [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 ] あるよ。
158 名前:デフォルトの名無しさん mailto:sage [2008/01/04(金) 21:05:48 ] 処理系を教えてください
159 名前:デフォルトの名無しさん mailto:sage [2008/01/04(金) 21:12:55 ] >>144 の本(ATL Internals 2nd Edition)て日本語版出ないのかねぇ。
160 名前:デフォルトの名無しさん mailto:sage [2008/01/04(金) 22:24:07 ] >>156 F#なら.NET経由でいけるのでは
161 名前:デフォルトの名無しさん mailto:sage [2008/01/06(日) 12:47:23 ] >>135 今更ながらCOMの仕事が入り勉強中助かりました( ´∀`) すぐに絶版にするなら独占翻訳権を取得しないで欲しい。特にASCII。 それ以上にCOMはもう終わってるのか…(´・ω・`)?
162 名前:デフォルトの名無しさん mailto:sage [2008/01/07(月) 18:37:25 ] 終わってるというよりは枯れてる・・・と思いたい
163 名前:デフォルトの名無しさん mailto:sage [2008/01/08(火) 08:38:47 ] COM無いとウィンドウズ自体起動しないだろ
164 名前:デフォルトの名無しさん mailto:sage [2008/01/08(火) 09:32:43 ] インタネッツセキュリティが無いので、DCOMは終わりマスタ。 PDFリーダーとか本当にメジャーなものしか存在が許されないというか。
165 名前:デフォルトの名無しさん mailto:sage [2008/01/08(火) 22:27:40 ] >>163 さすがに起動はするwwwwwwwwwww
166 名前:デフォルトの名無しさん mailto:sage [2008/01/08(火) 22:31:55 ] デスクトップ(HDESKTOP的な意味で)の表示くらいまではいけるうと思う。
167 名前:デフォルトの名無しさん mailto:sage [2008/01/09(水) 03:09:25 ] タスクマネージャとかってCOM使ってる?
168 名前:デフォルトの名無しさん mailto:sage [2008/01/09(水) 03:41:29 ] タスクマネージャくらいならパフォーマンスカウンタとかPSAPIくらいで大丈夫じゃねーか デスクトップの表示まで行くと無理だな IShellFolder
169 名前:デフォルトの名無しさん mailto:sage [2008/01/09(水) 13:36:00 ] アプリケーションのタブでアイコンを表示してるから COMつかってるんじゃね
170 名前:デフォルトの名無しさん mailto:sage [2008/01/09(水) 13:43:28 ] な に が い い た い ?
171 名前:デフォルトの名無しさん mailto:sage [2008/01/10(木) 02:32:53 ] アイコン表示してるのはリストビューの標準機能とイメージリストコントロールでCOM関係ない
172 名前:デフォルトの名無しさん mailto:sage [2008/01/10(木) 02:40:58 ] VistaはCOM無しでは動かないかも VistaのユーザーモードドライバはCOM仕様だから
173 名前:デフォルトの名無しさん [2008/01/10(木) 08:22:49 ] >>164 itpro.nikkeibp.co.jp/members/NBY/techsquare/20030717/3/?ST=security やべえ今までしらんかった Administratorでログオンすると危険にさらされるんだね。
174 名前:デフォルトの名無しさん mailto:sage [2008/01/10(木) 18:28:10 ] そもそもDCOMをルー田子えさ攻め
175 名前:本田 mailto:sage [2008/01/17(木) 17:43:02 ] >COMプログラマの解説書 >Crispin Goswell >Microsoft Office Product Unit >1995年 春 >1995年9月13日改訂 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って取得できねーのかな? なんかあの緑色のコマンドバーのなかのコマンドって余所から実行できないんで困る プレビューペインとかナビゲーションペインを出し入れしたいんだけど。
177 名前:デフォルトの名無しさん mailto:sage [2008/01/24(木) 00:31:42 ] 俺はしたくないしされたくもない
178 名前:デフォルトの名無しさん [2008/01/28(月) 17:29:23 ] タスクバーのツールバー(IDeskBand)をCOMサーバーとして作成しています。 ツールバーを表示させたとき、エクスプローラーごとダウンして バグの発生場所を特定できません。 空のツールバーの作成・起動には成功したのですが、外部から取得したデータを 反映させる機能を追加したところ、ダウンする現象が発生しています。 COMサーバーのデバッグ方法をご教授ください。 環境は、WindowsVista、VC++2008EE、ATLおよびMFC不使用です。
179 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 23:57:12 ] COM・・・ サーバ上のやつは取得できて、動かせます クライアントからサーバ上のCOMを使いたい・・・ IDとかは設定してるのだが・・・ 検索3時間してもわからず、ググるキーワードを2,3教えて下さい (-_-)
180 名前:デフォルトの名無しさん mailto:sage [2008/02/07(木) 00:19:02 ] >>178 Visual C++なら、アタッチすれば、あとは普通のアプリケーション同様に ブレークポイントで止めて、変数見たりステップ実行したりできるぞ。 >>179 日本語でおk
181 名前:デフォルトの名無しさん mailto:sage [2008/02/07(木) 01:43:49 ] エッチ スケッチ
182 名前:デフォルトの名無しさん mailto:sage [2008/02/07(木) 01:46:42 ] >>179 きめえから市ね
183 名前:179 レス禁止 mailto:sage [2008/02/07(木) 21:45:43 ] とりあえず2,3単語が分かりました、消えます
184 名前:デフォルトの名無しさん [2008/02/08(金) 03:48:03 ] >>179 DCOMの設定したら使えるけど危険すぎ。 閉じたネットワークでだけ使うものだよあれは。
185 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 17:32:50 ] ネットワークに関係なく、 単にコンポーネントの提供する側と利用する側という意味で使っているかもよ。 179の書き方ではどういう意味か分からないけど。
186 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 21:26:27 ] 俺もそうかと思ってたので>>184 の洞察力に感服
187 名前:デフォルトの名無しさん mailto:sage [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インタフェースを追加すると呼ぶ必要がなくなるのでしょうか?
188 名前:デフォルトの名無しさん mailto:sage [2008/02/22(金) 01:05:40 ] Effective COMには ・1つ以上のクラスをエクスポートしてるサービスが最初のCoregisterClassObjectの呼び出しで開始してしまうと、それらのクラスの初期化の問題が起きる場合がある ・このためREGCLS_SUSPENDフラグで起動を遅らせて、CoResumeClassObjectsで起動させる みたいなことはあったけど。 追加したときにフラグ上書きしたことになってるのではと想像。
189 名前:187 mailto:sage [2008/02/22(金) 13:15:06 ] ふむー、こういうことかな? サービスそのものがCOMであるけど、サービスは起動直後に立ち上がるから、 自分でタイミング見て初期化しないといけない。 新たにCOM実装すると、ATLのどっかで初期化するようになる。 よってサービスでCoregisterClassOBjectsを呼ぶと2重初期化で エラーを返すのかな。 なんにせよ、COM追加したら呼ばないでいいのだろうか。 とりあえず外部アプリからサービスのCOM呼び出しとかは、うまくは動いてるし。
190 名前:デフォルトの名無しさん mailto:sage [2008/02/26(火) 02:30:07 ] 外部からエクスプローラーバーのIBandSiteを取得したいのですが、 とれません。 どのようにして取得すればよいでしょうか?
191 名前:デフォルトの名無しさん mailto:sage [2008/03/23(日) 00:54:12 ] CHogeってCOMクラスが HRESULT SetHoge(IDispatch* pV) ってメソッドを持っていて、pVのポインタをCHogeのメンバとして保持するとき - SetHoge()の先頭くらいでthis->pV->AddRef() - FinalRelease()でthis->pV->Release() ってすればOKって認識であってるかな。
192 名前:デフォルトの名無しさん mailto:sage [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 の利用も考慮してみると良いと思う。
193 名前:191 mailto:sage [2008/03/27(木) 22:33:15 ] ああそうかメンバ自体をCComPtrにしとけば代入だけでいけますね。
194 名前:デフォルトの名無しさん mailto:sage [2008/04/13(日) 00:28:44 ] おお、COMのすれ、あるんだ!
195 名前:デフォルトの名無しさん [2008/04/13(日) 03:00:22 ] よろしくね(´・ω・`)
196 名前:デフォルトの名無しさん mailto:sage [2008/04/13(日) 03:09:06 ] 先生、googleがCOMを検索してくれないので勉強できません
197 名前:デフォルトの名無しさん mailto:sage [2008/04/14(月) 23:31:09 ] COM OLEオートメーション総合 どうしてCOMは即死したのか の3つのCOM関連スレがあるけど、どう使い分けるの? というかどれもすでに死んでるのかな、、少しさびしい。
198 名前:デフォルトの名無しさん mailto:sage [2008/04/15(火) 00:13:00 ] >>197 IEコンポーネントをC++から使う話はたまにWin32APIスレで見る。 .NETから各種COMコンポーネントを使う話もたまにC#やVB.NETのスレで見る。 あと、DirectXのことは当然DirectXのスレで扱われる。 質問はそっちで賄われるから、 その3つのスレはほとんど雑談くらいにしか使われないんだよね。
199 名前:デフォルトの名無しさん mailto:sage [2008/04/18(金) 01:20:01 ] 雑談モード。 たしかMSHTML::IHTMLWindowだったか、QueryServiceというのがあったが、QueryInterfaceと何が違ったんだろう…。 どっちもIFを取得するという点では同じなのだが。何か長短があるんだろうか。 たとえば自分がComponent作るとき、QuerySeriviceでIF提供したほうがいいなって場面あるんだろか。
200 名前:デフォルトの名無しさん mailto:sage [2008/04/22(火) 15:39:39 ] IBindCtxとIMonikerの関係と、存在意義について教えてください。
201 名前:デフォルトの名無しさん mailto:sage [2008/04/22(火) 18:00:23 ] それらは、MkParseDisplayNameとBindToObjctや、 それをラップしたCoGetObjectなどのように 文字列からCOMオブジェクトを作るためのものだと俺は理解している。 IMonikerはその文字列をくるんだだけのインタフェース。 IBindCtxはオプションを指定するBIND_OPTSをくるんだだけのインタフェース。 実際にはもう少し高機能だろうけど。 文字列ってのは何でもあり。ファイルパスやURLもそうだし、 とあるExcelブックのあるセルを参照するのは "C:\[hoge.xls]Sheet1!A5"みたいな感じだったと思う。
202 名前:200 mailto:sage [2008/04/22(火) 18:45:43 ] >>201 ありがとうございます。 IBindCtxやIMonikerを引数に渡すAPIやInterfaceが多いのですが、 MSDNを何度読んでも、どういう時にどういう設定で使えばよいか良くわからず、困っています。 MSDNに、 The IBindCtx interface provides access to a bind context, ・・・ と書かれていますが、”bind context”とは何なのでしょうか?
203 名前:デフォルトの名無しさん mailto:sage [2008/04/22(火) 18:49:42 ] 文字列からオブジェクトへの変換を行うバインダへのハンドルのようなもんと思えば
204 名前:デフォルトの名無しさん mailto:sage [2008/04/23(水) 07:47:16 ] >>199 自分の理解では。QueryInterfaceは、あくまでもそのオブジェクトが持つ機能を公開するもので。 QueryServiceは、そのオブジェクトが管理している別のオブジェクトを返すものだと思っている。 例えば、プラグインとかさ。
205 名前:デフォルトの名無しさん mailto:sage [2008/04/23(水) 16:12:01 ] >>119 QueryInterface は自分自身の IUnknown を返さなくてはならない (オブジェクトの寿命や同定とかいう観点から)という制約というか仕様なので、 要求された機能を持つ他のオブジェクト(かも知れない)のインタフェイスを 返すには使えないから。
206 名前:デフォルトの名無しさん mailto:sage [2008/04/23(水) 17:03:26 ] >>202 どう使うかということは、MSDNライブラリを眺めるより、 サンプルを探しにググって実例を見たほうが分かるようになる。
207 名前:デフォルトの名無しさん mailto:sage [2008/04/23(水) 19:07:22 ] >>206 全くその通りなんだけど、 サンプル見つからなくてね・・・。
208 名前:デフォルトの名無しさん mailto:sage [2008/04/25(金) 00:15:14 ] >>204 >>205 なるほどー。QSで帰ってくるものは自分自身じゃないんだ。しらなかった。どうもありがとう。 ん?でもでも、だとすると次なる疑問が。。。 QIの価値はわかる。同一コンポーネントが複数IFを持つことは価値があるし、 (IPersistXXXXを持ち、IMyAppを持ち、IMyConfigを持ち、とか) それが機能するには、Platform側の標準やりとりが必要だから。 (Javaだと言語が切り替えの仕組みをサポートするとか) それに対しQSって何で必要なんだろ。 標準やりとりが必要ないなら、単純にGetter相当でOKのような。
209 名前:デフォルトの名無しさん mailto:sage [2008/04/25(金) 01:37:41 ] ごめん、自己解決。なんで必要か分かった。 はじめから追加サービスがどれだけあるか決まってるならGetterでいいが、 今後の拡張にそってどれだけサービスが増えるか分からないので、名前引きにした、ということですな。 expandoみたいな考え方な。 だからPluginとかいう話もガイシュツだったわけね。賢いなぁ、アドバイスしてくれた人
210 名前:デフォルトの名無しさん mailto:sage [2008/04/26(土) 01:29:06 ] COMコンポーネントのメソッドから、COMコンポーネント呼び出し元クライアントの SID取って管理者権限か判断とかできるかな?
211 名前:デフォルトの名無しさん [2008/09/07(日) 09:08:57 ] COM勉強してるけど、楽しいなあ
212 名前:デフォルトの名無しさん mailto:sage [2008/09/07(日) 09:56:27 ] 最初だけだよ・・・一定規模以上のプログラム作り出したら全てを放り投げたくなる
213 名前:デフォルトの名無しさん mailto:sage [2008/09/07(日) 10:50:31 ] Javaが90年代に鯖サイドであっという間に普及したのはCOMのめんどくささのおかげ CORBAよりはましだけど
214 名前:デフォルトの名無しさん mailto:sage [2008/09/07(日) 18:37:14 ] 何ズレた事言ってんだよw
215 名前:デフォルトの名無しさん [2008/10/22(水) 17:34:53 ] C#からCOMいじりしてると、なんか脳液がドクドク出てくるのが分かる もうシェルインターフェイスだけで丼飯バクバク食えるぞ 自分がMだとは思わなかった
216 名前:デフォルトの名無しさん mailto:sage [2008/10/22(水) 18:26:23 ] C++からCOMいじると最強。 >これ、何の意味がある暗号インターフェース?
217 名前:デフォルトの名無しさん mailto:sage [2008/10/22(水) 18:31:43 ] これ、何語? >MFC
218 名前:デフォルトの名無しさん mailto:sage [2008/10/24(金) 13:03:42 ] C#でCOM使ったことあるけどそんな大変でもないよね。 >>215 はどんだけ敏感なんだ?
219 名前:デフォルトの名無しさん mailto:sage [2008/10/24(金) 19:23:32 ] C#ではExcelのオートメーションみたいにデフォルト引数を使いまくりだと死ねる。
220 名前:デフォルトの名無しさん mailto:sage [2008/10/27(月) 11:06:10 ] C#では重かったり、.net frameworkでサポートされてないのを C++で書いてCOM化してC#から呼ぶのは使えるな。
221 名前:デフォルトの名無しさん mailto:sage [2008/10/27(月) 11:10:24 ] ↑ C#とCOMを無きものにしたらどうよ?
222 名前:デフォルトの名無しさん mailto:sage [2008/10/27(月) 12:34:16 ] windowsでGUIアプリ作るのにC#って選択肢ははずせないしね・・・ さすがに、いまさらATLとかは辛い。
223 名前:デフォルトの名無しさん mailto:sage [2008/10/27(月) 12:43:10 ] >windowsでGUIアプリ作るのにC# 外して下さい。 おながいします。
224 名前:デフォルトの名無しさん mailto:sage [2008/10/30(木) 22:47:48 ] COM作ろうと思って、shobjidl.hインクルードしたんだが、多重定義のエラー で、調べてみるとNO_WIN32_LEAN_AND_MEANをdefineすれば解決できるらしい #define NO_WIN32_LEAN_AND_MEANしようが、コンパイルオプションに/D NO_WIN32_LEAN_AND_MEAN つけようが、まだ多重定義エラーがでる・・・ 解決策おしえてー;; win xp sp3 vc++6 platform sdk 2003 server sp1
225 名前:デフォルトの名無しさん mailto:sage [2008/10/30(木) 23:04:27 ] WIN32_LEAN_AND_MEANを定義したままなんてことはないよな?
226 名前:デフォルトの名無しさん mailto:sage [2008/10/30(木) 23:08:44 ] >>225 はい。 ソースのほうは #ifndef WIN32_LEAN_AND_MEAN #define WIN32_LEAN_AND_MEAN #endif にしてるので・・・ はあ・・・・なんでだ・・・ なんだかんだで1日中調べてる・・・ どこかで、VC++6では2003年2月以降に発行されたplatform sdkは使えないとか 書いてあったけどそれは違うよね・・・?
227 名前:デフォルトの名無しさん mailto:sage [2008/10/30(木) 23:12:53 ] >>226 それ削除しないと駄目だ。 両方定義していたら、たぶんWIN32_LEAN_AND_MEANが優先される。
228 名前:デフォルトの名無しさん mailto:sage [2008/10/30(木) 23:19:59 ] >>227 優先される?って? /D WIN32_LEAN_AND_MEAN単独でも #define WIN32_LEAN_AND_MEAN単独でも どちらも同じように多重定義エラーでるんですよね・・・ ちなみに・・VC++6のコンパイルオプションだけど、 プロジェクト⇒設定⇒C/C++オプションのところに /D WIN32_LEAN_AND_MEANを加えるですよね
229 名前:デフォルトの名無しさん mailto:sage [2008/10/30(木) 23:29:32 ] >vc++6 >platform sdk 2003 server sp1 VCのバージョンを上げろゴラってことじゃないかと・・・
230 名前:デフォルトの名無しさん mailto:sage [2008/10/30(木) 23:39:59 ] >>228 NO_WIN32_LEAN_AND_MEANよりWIN32_LEAN_AND_MEANが優先されるだろうからWIN32_LEAN_AND_MEANのマクロシンボルを削除しろってことじゃないの? >>224 と>>228 の内容が矛盾してるよ。 >>224 ではNO_WIN32_LEAN_AND_MEANを定義したいと言ってるのに>>228 ではWIN32_LEAN_AND_MEANを定義してるよ。
231 名前:224,226,228 mailto:sage [2008/10/31(金) 00:08:51 ] すみません。 すべてNO_WIN32_LEAN_AND_MEANです。
232 名前:デフォルトの名無しさん [2008/11/10(月) 20:10:51 ] 永遠なるCOMを称えてage
233 名前:デフォルトの名無しさん mailto:sage [2008/12/07(日) 02:34:42 ] Windowsの音量を変更するCOM教えてください。。。 すんません、こんな質問で。
234 名前:デフォルトの名無しさん mailto:sage [2008/12/08(月) 12:28:56 ] つ[www.google.co.jp/search?hl=ja&q=Windows の音量を変更するCOM教えてください]
235 名前:デフォルトの名無しさん [2009/04/08(水) 22:12:02 ] "wshom.ocx"をimportしようとすると生成された.tlh,.tli でエラーが発生します #import "C:\WINDOWS\system32\wshom.ocx" rename_namespace("XXX") named_guids debug\wshom.tlh(1004) : error C2629: 'class _variant_t (' は不正です。 debug\wshom.tli(832) : warning C4003: マクロ 'GetFreeSpace' に指定された実引数の数が少なすぎます。 … import以外にはなにもしていない(mainからreturnしているだけ)なのにこのようなエラーがでる理由がわかりません。 importするやり方が悪いのでしょうか?
236 名前:デフォルトの名無しさん mailto:sage [2009/04/10(金) 19:40:45 ] ほしゅ
237 名前:235 [2009/04/11(土) 21:35:32 ] ITypeLib ViewerからVBScript Regular Expression を*.IDLファイルに保存したら、 ファイルに出力されるインターフェースが途中までしか保存されません。 具体的には、IregExp2インターフェースの interface IRegExp2 : IDispatch { [id(0x00002711), propget] HRESULT Pattern([out, retval] BSTR* pPattern); [id(0x00002711), propput] HRESULT Pattern([in] BSTR pPattern); [id(0x00002712), propget] HRESULT IgnoreCase([out, [EOF] ←[EOF]は出力されません。単にファイル終端なだけです ここまででファイルの終端になっています。何が悪いんだろう・・・
238 名前:デフォルトの名無しさん mailto:sage [2009/04/13(月) 02:42:25 ] >>237 最近同じところではまった気がする 結局、何が悪いかは分からなかったけど、ITypeLib View のウィンドウの右ペインで テキスト選択 => コピー => エディタで貼り付け、 で回避した ちなみにコピーは Ctrl+C Ctrl+C のコピーできるなら、マウス右クリックの編集メニューサポートしとけよって…
239 名前:235 [2009/04/14(火) 22:04:30 ] ありがとう!!! 手動コピペでうまくいった
240 名前:235 [2009/04/14(火) 22:48:06 ] >>233 > Windowsの音量を変更するCOM教えてください。。。 > すんません、こんな質問で。 > Dim objShell Set objShell = CreateObject("Shell.Application.1") objShell.ControlPanelItem("mmsys.cpl") これでどうよ?コントロールパネル-サウンドとオーディオデバイスのプロパティ を出すだけだけど
241 名前:235 [2009/04/14(火) 23:23:57 ] APIでwaveOutSetVolume()ってのがあるみたいだな>>オーディオの調整
242 名前:デフォルトの名無しさん mailto:sage [2009/04/16(木) 13:13:27 ] はいはい
243 名前:デフォルトの名無しさん mailto:sage [2009/05/05(火) 15:20:06 ] >>235 #import <wshom.ocx> rename("FreeSpace","FreeSpace2") main.obj - エラー 0、警告 0
244 名前:デフォルトの名無しさん [2009/08/27(木) 04:41:21 ] あげ
245 名前:名無しさん@そうだ選挙に行こう mailto:sage [2009/08/30(日) 05:14:08 ] COM形式の実行ファイルの話はこのスレでいいんですか
246 名前:名無しさん@そうだ選挙に行こう mailto:sage [2009/08/30(日) 12:33:10 ] いいとは思うが、COM形式の実行ファイルって何だ?
247 名前:名無しさん@そうだ選挙に行こう mailto:sage [2009/08/30(日) 12:47:30 ] command.com
248 名前:名無しさん@そうだ選挙に行こう mailto:sage [2009/08/30(日) 13:10:03 ] いまさらそっちのCOMなのか じゃあ違うな 個別のスレはなさそうだし、「スレ立てるまでもない質問はここで」とかで聞くしかないんじゃないの?
249 名前:デフォルトの名無しさん mailto:sage [2009/10/20(火) 05:39:50 ] office製品との連携にc++でcom(dll)作ってしまうのが良さそうと思ったけど、誰も使ってなさそうだな。orz みんなvbaで済ませちゃってるっぽいな。vb回避したいのでいろいろ探してcomにたどり着いたのに。orz それとももうcomは捨てて、まねーじcom(.net)のほうに逝っちゃったかな? .netはcom使える様にする設定が面倒と思った。
250 名前:デフォルトの名無しさん mailto:sage [2009/10/21(水) 05:21:57 ] もうだれもobaやってないみたいだなw
251 名前:デフォルトの名無しさん mailto:sage [2009/10/30(金) 12:34:24 ] Inside COMって絶版だったのか。 会社にあったから何とかなったけど、 XPCOMでの関連書籍にEssential COMとかあるのに、それも絶版とか・・・
252 名前:デフォルトの名無しさん mailto:sage [2009/10/30(金) 12:43:45 ] Inside COM には、 COMは誰も定義が言えないうえ今までなかったプログラミングの構造だが、 今後のプログラミングはこの構造になるって、 ばっちゃが書いてた。
253 名前:デフォルトの名無しさん mailto:sage [2009/10/31(土) 04:55:58 ] いまは.netの方向に進んでて、comは捨てられてるな。
254 名前:デフォルトの名無しさん mailto:sage [2009/11/02(月) 09:43:44 ] ドトネト進むというか迷走だがw
255 名前:デフォルトの名無しさん mailto:sage [2009/11/02(月) 16:10:20 ] com回帰来るの?
256 名前:デフォルトの名無しさん mailto:sage [2009/11/02(月) 16:33:30 ] そうならなくて、HTML5だろ、jk
257 名前:デフォルトの名無しさん mailto:sage [2009/11/12(木) 23:34:11 ] シェル拡張ってInprocServerじゃないとダメなの? サンクも出来ないLocalServerなCOMも呼べないとかどうしようもないお荷物じゃねーか
258 名前:デフォルトの名無しさん mailto:sage [2009/11/13(金) 16:08:58 ] >【IT】英ITサイトの「Microsoft製品のワースト10」、1位はあのOS[09/11/13] >ttp://anchorage.2ch.net/test/read.cgi/bizplus/1258085902/ 英ITニュースサイトV3.co.ukが、同サイトが選んだMicrosoft製品のワースト10を 発表した。 10位はMS-DOS 4.0、 9位はIE 5、 8位は「期待ほど革新的ではなかった」という理由でWindows 95、 7位はZune、 6位はBob(Windows 3.1/95にバンドルされたナビゲーションシステム)、 5位は「セキュリティ問題を引き起こした」という理由でActiveX、 4位はWindows Vista、 3位はVista Capable(Vista対応PCにロゴを付けるプログラム。実際はVista Capableは Home Basicエディションにしか対応していなかった)、 2位はClippy(クリップの形をしたOfficeのマスコットキャラクター)、 1位はWindows Meだった。 ソースは www.itmedia.co.jp/news/articles/0911/13/news028.html Top 10 worst Microsoft products of all time(V3.co.uk) www.v3.co.uk/v3/news/2252318/top-worst-microsoft-products www.v3.co.uk/v3/news/2252318/top-worst-microsoft-products www.v3.co.uk/v3/news/2252318/top-worst-microsoft-products?page=2
259 名前:デフォルトの名無しさん mailto:age [2010/01/30(土) 22:24:33 ] VC++ のキーワード __hook で COM のイベントのソースとハンドラを繋げる仕組みがありますが、 __hook を使わず、COM 系関数などで完全に再現できるものでしょうか。