07/07/11 22:03:14
IEコンポ自体を作りたいなら止めはしないが、MSは他人に実装させるつもりはないはず。
URLリンク(msdn2.microsoft.com)
> Custom Implementation No
ActiveXコントロールをホストしたいだけならIWebBrowser2を実装する必要は無いぞ。
95:デフォルトの名無しさん
07/07/11 23:27:02
mozillaにIWebBroser2の互換インターフェースが存在したような、
96:デフォルトの名無しさん
07/07/12 00:21:14
>>94
ぬあー、そうなのか。
>>95
Mozillaのコード見たけど、想像以上に整然としてて驚いた。
97:90
07/07/12 11:31:55
>>93
だったらATLインターナルがいいかも。
98:デフォルトの名無しさん
07/07/15 21:24:58
古きCOM書籍
興味がある方は、復刊リクエストご協力ください
Inside COM
URLリンク(www.fukkan.com)
Essential COM
URLリンク(www.fukkan.com)
99:デフォルトの名無しさん
07/07/16 07:43:51
3層アプリでビジネスロジックを
ドメインオブジェクトとして他のマシンに置きたいとき
COMならCOM+が使えるじゃないですか。
.NETだと何を使えばいいのでしょう?
Web Serviceだとサーバ側にインスタンスを作って
継続的に使用できないですよね。
となると.NET Remotingかな。
100:デフォルトの名無しさん
07/07/16 08:53:34
>>99
System.EnterpriseServices でCOM+
101:99
07/07/16 11:31:25
>>100
なるほど!
結局はCOM+ですか。
.NetはCOMをうまく内包しているんですね。
ということは、「.NetになったらCOMは必要ない」
という意見は的外れなんですね。
102:デフォルトの名無しさん
07/07/16 15:54:41
COM+はやめたほうがいいんじゃないか?
103:デフォルトの名無しさん
07/07/16 21:18:15
>>101
CLR自身がCOMで実装されてるのに、誰だよそんなこと言った奴は。
104:デフォルトの名無しさん
07/08/15 00:05:12
現在どのプロセスがどのCOMコンポーネントを使っているか
知る方法はないでしょうか?
105:デフォルトの名無しさん
07/08/17 01:49:01
CoCreateInstanceなんかをHOOKしとけば、判るんじゃない?
(直接DLLからインスタンスを生成する方法がないわけじゃないけど)
106:デフォルトの名無しさん
07/08/20 22:00:05
COMが流行のキーワードでなくなり、.NETは使いものにならない
ということで、プログラミング環境は90年代前半に戻りつつあるよね。
ホビープログラマとしてはプログラムなんて動けばなんでもいいし。
107:デフォルトの名無しさん
07/08/21 08:37:59
確かにC++のシェアが下がったと思ったら、組み込みでC++再来みたいな。
108:デフォルトの名無しさん
07/08/21 19:01:55
ウェブプログラミングに飽きて、.NETも何かいまひとつ、そしてC++に戻ってきた。
109:デフォルトの名無しさん
07/08/22 22:17:32
COMでは参照カウンタが0になるとすぐに解放されることは
保証されているんでしょうか?
110:デフォルトの名無しさん
07/08/24 13:49:34
インターフェイスは参照カウンタ0で開放する規約になっている。
なってない場合バグ。その辺のロジックはATLとかがサポートしてて
直接コーディングすることは少ないから普通は大丈夫。
アウトプロセスの複合サーバーの場合は、
インターフェイスが開放されてもプロセスが終了しないものがある。
WordやExcelがその例。
111:デフォルトの名無しさん
07/08/24 14:44:18
IISでASPからActiveX DLLを使った時、ASPでSet obj = Nothing
してもDLLがロックされたままになるのは別の問題ですかね?
112:デフォルトの名無しさん
07/08/26 08:22:25
スレリンク(tech板)
113:デフォルトの名無しさん
07/08/26 12:43:19
・COMオブジェクトの参照カウンタが0になったときに、
そのオブジェクトが消え去る
・あるDLLに属しているCOMオブジェクトの生存数が0
になったときにそのDLLをアンロードしてほしい
この二つは全く別の話。
114:デフォルトの名無しさん
07/09/27 10:42:39
奥深いよね~COM
115:デフォルトの名無しさん
07/09/27 16:33:32
>>107
どの分野でc++のシェアが下がったんだろう
業務系→cobol、j2ee
組み込み系→c、c++、asm
116:デフォルトの名無しさん
07/09/27 16:48:30
URLリンク(www.premiumtv.12gbfree.com)
117:デフォルトの名無しさん
07/09/27 18:15:23
>>115
Windows のソフトでわずかだけれども C# が使われ始めているな。
以前ならMFCで書かれていたような奴が。
Sunが横やり入れなければ数年前にJ++で出来ていたことなのにねぇ・・・
118:デフォルトの名無しさん
07/09/28 04:52:55
組み込みでC#使ってるひといる?
119:デフォルトの名無しさん
07/10/01 09:32:59
VB6の後継はC#だよね~
120:デフォルトの名無しさん
07/10/01 13:13:07
ぽとぺた環境のことか?
121:デフォルトの名無しさん
07/10/24 14:50:19
どとねと環境のことだろう
122:デフォルトの名無しさん
07/10/31 06:53:00
getUnk(&pUnk1);
getUnk(&pUnk2);
getUnk(&pUnk3);
123:デフォルトの名無しさん
07/11/03 15:41:50
pUnkOut->release();
124:デフォルトの名無しさん
07/11/03 19:23:29
IUnko
125:デフォルトの名無しさん
07/11/05 19:49:15
eco->recycle(unko);
126:デフォルトの名無しさん
07/11/05 21:55:35
シェルがCOMをまったく使わなくなる日が来たりするのだろうか
127:デフォルトの名無しさん
07/11/05 23:14:29
果たしてそれはWindowsなのだろうか。
128:デフォルトの名無しさん
07/11/06 01:23:31
果たしてWindowsのそれはシェルなのだろうか
129:デフォルトの名無しさん
07/11/11 22:25:40
IThumbnailCache ってどこから手繰りよせたらいいのん?
IThumbnailProviderからもってくるとキャッシュみないよね?
130:129
07/11/12 00:26:45
>IThumbnailProviderからもってくるとキャッシュみないよね?
IShellItem.BindToHandler経由でIThumbnailProviderからサムネールもってくるとキャッシュみないよね?
131:129
07/11/12 02:14:14
自己解決しますた
LocalThumbnailCacheでnewしてやればいいのね
ほんとのところCOMを理解してないけど
キャッシュ見るようになって動画のサムネイル早っ
132:デフォルトの名無しさん
07/11/13 23:58:24
先週からVisualStudio2005でCOM/ATLの開発始めたCOM初心者なんだけど、
おっそろしい程に参考になる本とかWEBページとか少ないな
ボチボチ進んでるから、なんとかなるとは思うけど、自力で探るのはめんどい
133:デフォルトの名無しさん
07/11/16 02:04:59
Essential COMの第一章はPDFになってて結構参考になった
134:129
07/11/16 02:13:11
>>133
kwsk
135:デフォルトの名無しさん
07/11/16 02:16:20
>>134
URLリンク(www.ascii.co.jp)
直接の役には全然役に立たないよ
でもこれ読む前はなんでCOMがこんなことになってるのか全然わかんなかった
136:デフォルトの名無しさん
07/11/16 02:28:35
>>135
ありがとう。
読んでみる。
137:デフォルトの名無しさん
07/11/17 02:14:16
レジストリを使わないCOMがあったら便利だなぁと、そう思った
マニフェスト的なものをヘッダに持って
どう実現するかは知らんけど
138:デフォルトの名無しさん
07/11/17 03:36:51
>>137
XP以降ならマニフェストでサイドバイサイドできるよ。
139:デフォルトの名無しさん
07/11/21 00:20:03
解放忘れのチェックの仕方とエラー処理の書き方がわからんなあ
140:デフォルトの名無しさん
07/11/21 00:48:55
CComPtr
_com_ptr_t
141:デフォルトの名無しさん
07/11/22 00:08:27
>>137
海外のライブラリでそれできるやつあるよ
142:デフォルトの名無しさん
07/11/23 01:44:45
Registration-Free COM
URLリンク(www.ailight.jp)
143:デフォルトの名無しさん
07/12/02 02:36:38
翔泳社の「ATL COMプログラミング」でCOMの勉強を始めたのですが、
VisualStudio2005でATLの「実行可能サーバー」を生成すると
ソースが書籍のサンプルと全然対応しなくて困っております
今の開発環境でCOMの学習用にいい書籍とかありますでしょうか?
144:デフォルトの名無しさん
07/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:デフォルトの名無しさん
07/12/02 17:22:28
>>143
前に日本語でその手の本を探したけど、結局、見つからなかった。
真面目にサンプル作って解説本でも書いたら売れるかな。
売れないだろうな・・・・
146:デフォルトの名無しさん
07/12/02 18:08:07
>>143
俺もその本持ってるけど、COM/ATLの根本的なところは大して変わらないんだし、ATLの側でも
互換性のためATL3.0用のクラス残してるし、それで勉強してみたら?
C++属性なんて最後でいいと思うし、ATL8.0の部分だってATL3.0判ればそう難しくはないんじゃないか?
147:デフォルトの名無しさん
07/12/03 00:38:06
>>144-146
皆様ご意見ありがとうございます。
少なくとも日本語の書籍に新しいものはなさそうですね。
英語の本は時間が許せば…と思いますがやはり敷居が高いです。
>>146さんの言うとおりもう少し現状の環境で書籍の内容を確認してみます。
148:デフォルトの名無しさん
07/12/05 01:36:09
別環境のVisualC++6.0でATLのプロジェクトを生成し、それを使って演習…
149:デフォルトの名無しさん
07/12/14 22:18:03
IDropTarget/IDropTargetHelperを実装したクラスのウィンドウで
ドラッグドロップをしています。
そのウィンドウ上にマウスカーソルがあるときに他のウィンドウを非アクティブのまま
表示するようにしたいんですが、ウィンドウを表示すると元のウィンドウの下に
ドラッグイメージが隠れてしまいます。
(後から表示したいウィンドウもIDropTarget/IDropTargetHelperを実装してます。そっち上では
ドラッグイメージは隠れません)
ドラッグイメージのZOrderをなんとかしたいわけですが、
ヒント等ご存知の方いらしたら教えてくんなましょ
150:デフォルトの名無しさん
07/12/15 01:59:23
そのウィンドウと他のウィンドウと元のウィンドウと後から表示したいウィンドウが
どのウィンドウなのかわかんないのでAとかBとか名前付けて書いてくれると嬉しい
151:デフォルトの名無しさん
07/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:デフォルトの名無しさん
07/12/20 16:43:05
mpeg compass.jp
名古屋駅近辺でお話しましょう
153:デフォルトの名無しさん
07/12/20 23:05:18
COM初心者です。
CLSCTX_INPROC_SERVERを渡したCoCreateInstanceは
1つのプロセス内に1つのインスタンスを作成するみたいですが、
1つのプロセス内の複数のスレッドでひとつのIIDで指定されたインスタンスを
スレッドごとに作成したいときはどうしたらいいのでしょう。
もしかしてIIDごとに何個つくれるとか決まってたりするんでしょうか
154:デフォルトの名無しさん
07/12/20 23:14:33
各スレッドでCoCreateInstanceを呼べばいい。
155:デフォルトの名無しさん
07/12/28 13:03:07
Win32スレから誘導されてきますた
IExtractImageを実装したんだけど、2000で動かすと時々フォルダ内の全ファイルに同じ
サムネイルが出るようになる不具合はどう対処したらいいんでしょう。
MSDNのサンプル実装で起きるし、フラグ類いろいろ変えたりマルチスレッド対応にしたり
しても改善せず・・・
156:デフォルトの名無しさん
08/01/03 22:27:35
関数型でCOM使いたいんだけど、実装ありまっか?
157:デフォルトの名無しさん
08/01/03 23:06:10
あるよ。
158:デフォルトの名無しさん
08/01/04 21:05:48
処理系を教えてください
159:デフォルトの名無しさん
08/01/04 21:12:55
>>144の本(ATL Internals 2nd Edition)て日本語版出ないのかねぇ。
160:デフォルトの名無しさん
08/01/04 22:24:07
>>156
F#なら.NET経由でいけるのでは
161:デフォルトの名無しさん
08/01/06 12:47:23
>>135
今更ながらCOMの仕事が入り勉強中助かりました( ´∀`)
すぐに絶版にするなら独占翻訳権を取得しないで欲しい。特にASCII。
それ以上にCOMはもう終わってるのか…(´・ω・`)?
162:デフォルトの名無しさん
08/01/07 18:37:25
終わってるというよりは枯れてる・・・と思いたい
163:デフォルトの名無しさん
08/01/08 08:38:47
COM無いとウィンドウズ自体起動しないだろ
164:デフォルトの名無しさん
08/01/08 09:32:43
インタネッツセキュリティが無いので、DCOMは終わりマスタ。
PDFリーダーとか本当にメジャーなものしか存在が許されないというか。
165:デフォルトの名無しさん
08/01/08 22:27:40
>>163
さすがに起動はするwwwwwwwwwww
166:デフォルトの名無しさん
08/01/08 22:31:55
デスクトップ(HDESKTOP的な意味で)の表示くらいまではいけるうと思う。
167:デフォルトの名無しさん
08/01/09 03:09:25
タスクマネージャとかってCOM使ってる?
168:デフォルトの名無しさん
08/01/09 03:41:29
タスクマネージャくらいならパフォーマンスカウンタとかPSAPIくらいで大丈夫じゃねーか
デスクトップの表示まで行くと無理だな
IShellFolder
169:デフォルトの名無しさん
08/01/09 13:36:00
アプリケーションのタブでアイコンを表示してるから
COMつかってるんじゃね
170:デフォルトの名無しさん
08/01/09 13:43:28
な に が い い た い ?
171:デフォルトの名無しさん
08/01/10 02:32:53
アイコン表示してるのはリストビューの標準機能とイメージリストコントロールでCOM関係ない
172:デフォルトの名無しさん
08/01/10 02:40:58
VistaはCOM無しでは動かないかも
VistaのユーザーモードドライバはCOM仕様だから
173:デフォルトの名無しさん
08/01/10 08:22:49
>>164
URLリンク(itpro.nikkeibp.co.jp)
やべえ今までしらんかった
Administratorでログオンすると危険にさらされるんだね。
174:デフォルトの名無しさん
08/01/10 18:28:10
そもそもDCOMをルー田子えさ攻め
175:本田
08/01/17 17:43:02
>COMプログラマの解説書
>Crispin Goswell
>Microsoft Office Product Unit
>1995年 春
>1995年9月13日改訂
URLリンク(msdn.microsoft.com)
>抄録
>この解説書は、
>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:デフォルトの名無しさん
08/01/21 23:07:01
VistaのExplorerで
デフォルトのIExplorerCommandProviderって取得できねーのかな?
なんかあの緑色のコマンドバーのなかのコマンドって余所から実行できないんで困る
プレビューペインとかナビゲーションペインを出し入れしたいんだけど。
177:デフォルトの名無しさん
08/01/24 00:31:42
俺はしたくないしされたくもない
178:デフォルトの名無しさん
08/01/28 17:29:23
タスクバーのツールバー(IDeskBand)をCOMサーバーとして作成しています。
ツールバーを表示させたとき、エクスプローラーごとダウンして
バグの発生場所を特定できません。
空のツールバーの作成・起動には成功したのですが、外部から取得したデータを
反映させる機能を追加したところ、ダウンする現象が発生しています。
COMサーバーのデバッグ方法をご教授ください。
環境は、WindowsVista、VC++2008EE、ATLおよびMFC不使用です。
179:デフォルトの名無しさん
08/02/06 23:57:12
COM・・・
サーバ上のやつは取得できて、動かせます
クライアントからサーバ上のCOMを使いたい・・・
IDとかは設定してるのだが・・・
検索3時間してもわからず、ググるキーワードを2,3教えて下さい (-_-)
180:デフォルトの名無しさん
08/02/07 00:19:02
>>178
Visual C++なら、アタッチすれば、あとは普通のアプリケーション同様に
ブレークポイントで止めて、変数見たりステップ実行したりできるぞ。
>>179
日本語でおk
181:デフォルトの名無しさん
08/02/07 01:43:49
エッチ スケッチ
182:デフォルトの名無しさん
08/02/07 01:46:42
>>179
きめえから市ね
183:179 レス禁止
08/02/07 21:45:43
とりあえず2,3単語が分かりました、消えます
184:デフォルトの名無しさん
08/02/08 03:48:03
>>179
DCOMの設定したら使えるけど危険すぎ。
閉じたネットワークでだけ使うものだよあれは。
185:デフォルトの名無しさん
08/02/08 17:32:50
ネットワークに関係なく、
単にコンポーネントの提供する側と利用する側という意味で使っているかもよ。
179の書き方ではどういう意味か分からないけど。
186:デフォルトの名無しさん
08/02/08 21:26:27
俺もそうかと思ってたので>>184の洞察力に感服
187:デフォルトの名無しさん
08/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:デフォルトの名無しさん
08/02/22 01:05:40
Effective COMには
・1つ以上のクラスをエクスポートしてるサービスが最初のCoregisterClassObjectの呼び出しで開始してしまうと、それらのクラスの初期化の問題が起きる場合がある
・このためREGCLS_SUSPENDフラグで起動を遅らせて、CoResumeClassObjectsで起動させる
みたいなことはあったけど。
追加したときにフラグ上書きしたことになってるのではと想像。
189:187
08/02/22 13:15:06
ふむー、こういうことかな?
サービスそのものがCOMであるけど、サービスは起動直後に立ち上がるから、
自分でタイミング見て初期化しないといけない。
新たにCOM実装すると、ATLのどっかで初期化するようになる。
よってサービスでCoregisterClassOBjectsを呼ぶと2重初期化で
エラーを返すのかな。
なんにせよ、COM追加したら呼ばないでいいのだろうか。
とりあえず外部アプリからサービスのCOM呼び出しとかは、うまくは動いてるし。
190:デフォルトの名無しさん
08/02/26 02:30:07
外部からエクスプローラーバーのIBandSiteを取得したいのですが、
とれません。
どのようにして取得すればよいでしょうか?
191:デフォルトの名無しさん
08/03/23 00:54:12
CHogeってCOMクラスが
HRESULT SetHoge(IDispatch* pV)
ってメソッドを持っていて、pVのポインタをCHogeのメンバとして保持するとき
- SetHoge()の先頭くらいでthis->pV->AddRef()
- FinalRelease()でthis->pV->Release()
ってすればOKって認識であってるかな。
192:デフォルトの名無しさん
08/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
08/03/27 22:33:15
ああそうかメンバ自体をCComPtrにしとけば代入だけでいけますね。
194:デフォルトの名無しさん
08/04/13 00:28:44
おお、COMのすれ、あるんだ!
195:デフォルトの名無しさん
08/04/13 03:00:22
よろしくね(´・ω・`)
196:デフォルトの名無しさん
08/04/13 03:09:06
先生、googleがCOMを検索してくれないので勉強できません
197:デフォルトの名無しさん
08/04/14 23:31:09
COM
OLEオートメーション総合
どうしてCOMは即死したのか
の3つのCOM関連スレがあるけど、どう使い分けるの?
というかどれもすでに死んでるのかな、、少しさびしい。
198:デフォルトの名無しさん
08/04/15 00:13:00
>>197
IEコンポーネントをC++から使う話はたまにWin32APIスレで見る。
.NETから各種COMコンポーネントを使う話もたまにC#やVB.NETのスレで見る。
あと、DirectXのことは当然DirectXのスレで扱われる。
質問はそっちで賄われるから、
その3つのスレはほとんど雑談くらいにしか使われないんだよね。
199:デフォルトの名無しさん
08/04/18 01:20:01
雑談モード。
たしかMSHTML::IHTMLWindowだったか、QueryServiceというのがあったが、QueryInterfaceと何が違ったんだろう…。
どっちもIFを取得するという点では同じなのだが。何か長短があるんだろうか。
たとえば自分がComponent作るとき、QuerySeriviceでIF提供したほうがいいなって場面あるんだろか。
200:デフォルトの名無しさん
08/04/22 15:39:39
IBindCtxとIMonikerの関係と、存在意義について教えてください。
201:デフォルトの名無しさん
08/04/22 18:00:23
それらは、MkParseDisplayNameとBindToObjctや、
それをラップしたCoGetObjectなどのように
文字列からCOMオブジェクトを作るためのものだと俺は理解している。
IMonikerはその文字列をくるんだだけのインタフェース。
IBindCtxはオプションを指定するBIND_OPTSをくるんだだけのインタフェース。
実際にはもう少し高機能だろうけど。
文字列ってのは何でもあり。ファイルパスやURLもそうだし、
とあるExcelブックのあるセルを参照するのは
"C:\[hoge.xls]Sheet1!A5"みたいな感じだったと思う。
202:200
08/04/22 18:45:43
>>201
ありがとうございます。
IBindCtxやIMonikerを引数に渡すAPIやInterfaceが多いのですが、
MSDNを何度読んでも、どういう時にどういう設定で使えばよいか良くわからず、困っています。
MSDNに、
The IBindCtx interface provides access to a bind context, ・・・
と書かれていますが、”bind context”とは何なのでしょうか?
203:デフォルトの名無しさん
08/04/22 18:49:42
文字列からオブジェクトへの変換を行うバインダへのハンドルのようなもんと思えば
204:デフォルトの名無しさん
08/04/23 07:47:16
>>199
自分の理解では。QueryInterfaceは、あくまでもそのオブジェクトが持つ機能を公開するもので。
QueryServiceは、そのオブジェクトが管理している別のオブジェクトを返すものだと思っている。
例えば、プラグインとかさ。
205:デフォルトの名無しさん
08/04/23 16:12:01
>>119
QueryInterface は自分自身の IUnknown を返さなくてはならない
(オブジェクトの寿命や同定とかいう観点から)という制約というか仕様なので、
要求された機能を持つ他のオブジェクト(かも知れない)のインタフェイスを
返すには使えないから。
206:デフォルトの名無しさん
08/04/23 17:03:26
>>202
どう使うかということは、MSDNライブラリを眺めるより、
サンプルを探しにググって実例を見たほうが分かるようになる。
207:デフォルトの名無しさん
08/04/23 19:07:22
>>206
全くその通りなんだけど、
サンプル見つからなくてね・・・。
208:デフォルトの名無しさん
08/04/25 00:15:14
>>204
>>205
なるほどー。QSで帰ってくるものは自分自身じゃないんだ。しらなかった。どうもありがとう。
ん?でもでも、だとすると次なる疑問が。。。
QIの価値はわかる。同一コンポーネントが複数IFを持つことは価値があるし、
(IPersistXXXXを持ち、IMyAppを持ち、IMyConfigを持ち、とか)
それが機能するには、Platform側の標準やりとりが必要だから。
(Javaだと言語が切り替えの仕組みをサポートするとか)
それに対しQSって何で必要なんだろ。
標準やりとりが必要ないなら、単純にGetter相当でOKのような。
209:デフォルトの名無しさん
08/04/25 01:37:41
ごめん、自己解決。なんで必要か分かった。
はじめから追加サービスがどれだけあるか決まってるならGetterでいいが、
今後の拡張にそってどれだけサービスが増えるか分からないので、名前引きにした、ということですな。
expandoみたいな考え方な。
だからPluginとかいう話もガイシュツだったわけね。賢いなぁ、アドバイスしてくれた人
210:デフォルトの名無しさん
08/04/26 01:29:06
COMコンポーネントのメソッドから、COMコンポーネント呼び出し元クライアントの
SID取って管理者権限か判断とかできるかな?
211:デフォルトの名無しさん
08/09/07 09:08:57
COM勉強してるけど、楽しいなあ
212:デフォルトの名無しさん
08/09/07 09:56:27
最初だけだよ・・・一定規模以上のプログラム作り出したら全てを放り投げたくなる
213:デフォルトの名無しさん
08/09/07 10:50:31
Javaが90年代に鯖サイドであっという間に普及したのはCOMのめんどくささのおかげ
CORBAよりはましだけど
214:デフォルトの名無しさん
08/09/07 18:37:14
何ズレた事言ってんだよw
215:デフォルトの名無しさん
08/10/22 17:34:53
C#からCOMいじりしてると、なんか脳液がドクドク出てくるのが分かる
もうシェルインターフェイスだけで丼飯バクバク食えるぞ
自分がMだとは思わなかった
216:デフォルトの名無しさん
08/10/22 18:26:23
C++からCOMいじると最強。 >これ、何の意味がある暗号インターフェース?
217:デフォルトの名無しさん
08/10/22 18:31:43
これ、何語? >MFC
218:デフォルトの名無しさん
08/10/24 13:03:42
C#でCOM使ったことあるけどそんな大変でもないよね。
>>215はどんだけ敏感なんだ?
219:デフォルトの名無しさん
08/10/24 19:23:32
C#ではExcelのオートメーションみたいにデフォルト引数を使いまくりだと死ねる。
220:デフォルトの名無しさん
08/10/27 11:06:10
C#では重かったり、.net frameworkでサポートされてないのを
C++で書いてCOM化してC#から呼ぶのは使えるな。
221:デフォルトの名無しさん
08/10/27 11:10:24
↑
C#とCOMを無きものにしたらどうよ?
222:デフォルトの名無しさん
08/10/27 12:34:16
windowsでGUIアプリ作るのにC#って選択肢ははずせないしね・・・
さすがに、いまさらATLとかは辛い。
223:デフォルトの名無しさん
08/10/27 12:43:10
>windowsでGUIアプリ作るのにC#
外して下さい。
おながいします。
224:デフォルトの名無しさん
08/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:デフォルトの名無しさん
08/10/30 23:04:27
WIN32_LEAN_AND_MEANを定義したままなんてことはないよな?
226:デフォルトの名無しさん
08/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:デフォルトの名無しさん
08/10/30 23:12:53
>>226
それ削除しないと駄目だ。
両方定義していたら、たぶんWIN32_LEAN_AND_MEANが優先される。
228:デフォルトの名無しさん
08/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:デフォルトの名無しさん
08/10/30 23:29:32
>vc++6
>platform sdk 2003 server sp1
VCのバージョンを上げろゴラってことじゃないかと・・・
230:デフォルトの名無しさん
08/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
08/10/31 00:08:51
すみません。
すべてNO_WIN32_LEAN_AND_MEANです。
232:デフォルトの名無しさん
08/11/10 20:10:51
永遠なるCOMを称えてage
233:デフォルトの名無しさん
08/12/07 02:34:42
Windowsの音量を変更するCOM教えてください。。。
すんません、こんな質問で。
234:デフォルトの名無しさん
08/12/08 12:28:56
つ[URLリンク(www.google.co.jp)の音量を変更するCOM教えてください]
235:デフォルトの名無しさん
09/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:デフォルトの名無しさん
09/04/10 19:40:45
ほしゅ
237:235
09/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:デフォルトの名無しさん
09/04/13 02:42:25
>>237
最近同じところではまった気がする
結局、何が悪いかは分からなかったけど、ITypeLib View のウィンドウの右ペインで
テキスト選択 => コピー => エディタで貼り付け、
で回避した
ちなみにコピーは Ctrl+C
Ctrl+C のコピーできるなら、マウス右クリックの編集メニューサポートしとけよって…
239:235
09/04/14 22:04:30
ありがとう!!!
手動コピペでうまくいった
240:235
09/04/14 22:48:06
>>233
> Windowsの音量を変更するCOM教えてください。。。
> すんません、こんな質問で。
>
Dim objShell
Set objShell = CreateObject("Shell.Application.1")
objShell.ControlPanelItem("mmsys.cpl")
これでどうよ?コントロールパネル-サウンドとオーディオデバイスのプロパティ を出すだけだけど
241:235
09/04/14 23:23:57
APIでwaveOutSetVolume()ってのがあるみたいだな>>オーディオの調整
242:デフォルトの名無しさん
09/04/16 13:13:27
はいはい
243:デフォルトの名無しさん
09/05/05 15:20:06
>>235
#import <wshom.ocx> rename("FreeSpace","FreeSpace2")
main.obj - エラー 0、警告 0
244:デフォルトの名無しさん
09/08/27 04:41:21
あげ
245:名無しさん@そうだ選挙に行こう
09/08/30 05:14:08
COM形式の実行ファイルの話はこのスレでいいんですか
246:名無しさん@そうだ選挙に行こう
09/08/30 12:33:10
いいとは思うが、COM形式の実行ファイルって何だ?
247:名無しさん@そうだ選挙に行こう
09/08/30 12:47:30
command.com
248:名無しさん@そうだ選挙に行こう
09/08/30 13:10:03
いまさらそっちのCOMなのか
じゃあ違うな
個別のスレはなさそうだし、「スレ立てるまでもない質問はここで」とかで聞くしかないんじゃないの?
249:デフォルトの名無しさん
09/10/20 05:39:50
office製品との連携にc++でcom(dll)作ってしまうのが良さそうと思ったけど、誰も使ってなさそうだな。orz
みんなvbaで済ませちゃってるっぽいな。vb回避したいのでいろいろ探してcomにたどり着いたのに。orz
それとももうcomは捨てて、まねーじcom(.net)のほうに逝っちゃったかな?
.netはcom使える様にする設定が面倒と思った。
250:デフォルトの名無しさん
09/10/21 05:21:57
もうだれもobaやってないみたいだなw
251:デフォルトの名無しさん
09/10/30 12:34:24
Inside COMって絶版だったのか。
会社にあったから何とかなったけど、
XPCOMでの関連書籍にEssential COMとかあるのに、それも絶版とか・・・
252:デフォルトの名無しさん
09/10/30 12:43:45
Inside COM
には、
COMは誰も定義が言えないうえ今までなかったプログラミングの構造だが、
今後のプログラミングはこの構造になるって、
ばっちゃが書いてた。
253:デフォルトの名無しさん
09/10/31 04:55:58
いまは.netの方向に進んでて、comは捨てられてるな。
254:デフォルトの名無しさん
09/11/02 09:43:44
ドトネト進むというか迷走だがw
255:デフォルトの名無しさん
09/11/02 16:10:20
com回帰来るの?
256:デフォルトの名無しさん
09/11/02 16:33:30
そうならなくて、HTML5だろ、jk
257:デフォルトの名無しさん
09/11/12 23:34:11
シェル拡張ってInprocServerじゃないとダメなの?
サンクも出来ないLocalServerなCOMも呼べないとかどうしようもないお荷物じゃねーか
258:デフォルトの名無しさん
09/11/13 16:08:58
>【IT】英ITサイトの「Microsoft製品のワースト10」、1位はあのOS[09/11/13]
>スレリンク(bizplus板)
英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だった。
ソースは
URLリンク(www.itmedia.co.jp)
Top 10 worst Microsoft products of all time(V3.co.uk)
URLリンク(www.v3.co.uk)
URLリンク(www.v3.co.uk)
URLリンク(www.v3.co.uk)
259:デフォルトの名無しさん
10/01/30 22:24:33
VC++ のキーワード __hook で COM のイベントのソースとハンドラを繋げる仕組みがありますが、
__hook を使わず、COM 系関数などで完全に再現できるものでしょうか。