COM

■ このスレッドは過去ログ倉庫に格納されています
1IUnkonwn
垢版 |
2007/01/10(水) 20:13:15
いざ語れや
2009/11/12(木) 23:34:11
シェル拡張ってInprocServerじゃないとダメなの?
サンクも出来ないLocalServerなCOMも呼べないとかどうしようもないお荷物じゃねーか
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だった。

ソースは
http://www.itmedia.co.jp/news/articles/0911/13/news028.html
Top 10 worst Microsoft products of all time(V3.co.uk)
http://www.v3.co.uk/v3/news/2252318/top-worst-microsoft-products
http://www.v3.co.uk/v3/news/2252318/top-worst-microsoft-products
http://www.v3.co.uk/v3/news/2252318/top-worst-microsoft-products?page=2
2010/01/30(土) 22:24:33
VC++ のキーワード __hook で COM のイベントのソースとハンドラを繋げる仕組みがありますが、
__hook を使わず、COM 系関数などで完全に再現できるものでしょうか。
2010/02/05(金) 18:06:08
いろいろ調べたところ、
__hook と同等の機能かはわかりませが、
IConnectionPointContainer インターフェイスを用いることで、
__hook を使わなくても COM のサーバーとクライアントを
イベントで関連づけることができました。

お騒がせししました。
2010/02/05(金) 18:56:45
おお
2010/09/01(水) 22:42:43
COMインタフェース登録時のパス指定について。

動作&開発環境:Windows XP Embedded & VC++2005

HogeHogeCom.dllを作成し、IHogeObjectを作りました。
dllと同一フォルダにバッチファイルを作成し、以下を記述しました。

regsvr32 HogeHoge.dll

バッチファイルを叩いたところ、
「HogeHoge.dllのDllRegisterServerは成功しました。」と表示されますが、
レジストリ登録が失敗しています。
CoCreateInstance()で0x80040154 (REGDB_E_CLASSNOTREG)が返されます。

regsvr32 に相対パスではなく絶対パスを指定すると、
レジストリ登録が成功します。
CoCreateInstance()で0 (S_OK)が返されます。


質問の内容ですが、
regsvr32でCOM登録する場合は、絶対パスを指定しないとダメなのでしょうか?
2010/09/02(木) 00:07:50
環境変数
264デフォルトの名無しさん
垢版 |
2011/02/25(金) 23:01:19.09
蘇れ
2011/02/26(土) 19:19:28.35
>>262
レジストリ登録ファイル使えばええがな。
アレと、継承ツリーを遡り、IIDをマッピングする独自テンプレート
書いておくとATL無しでも簡単にCOMサーバー書けるぞ。

話は変わるが.netってCLSID付きのクラスや、共有のインスタンスって
作れるの?
2011/03/03(木) 00:26:26.58
>>265
後者は知らない。
CLSIDはGuid属性付きでクラス定義すればOK。
267デフォルトの名無しさん
垢版 |
2011/03/12(土) 21:46:04.54
IDispatchって簡単に言うとなんですか?
2011/03/13(日) 04:23:01.91
WM_COMMAND
2011/03/13(日) 06:54:02.94
ポリモーフィズム
270デフォルトの名無しさん
垢版 |
2011/03/18(金) 23:42:19.02
ん、つまり
いみがわからない
2011/03/26(土) 23:15:49.47
馬鹿にはcomは無理。
2011/04/09(土) 17:50:41.49
.netでCOMインターフェイス実装して
なんも知らないユーザーがMarshal.ReleaseComObjectすると例外でるよね
だってCOMオブジェクトじゃないもん!って怒られちゅうんだ
2011/07/06(水) 07:02:42.16
これ ; デリミタっていうんだけどさ、よく打ち忘れるよね
Rubyだとつけなくてよくなるんだけど


ゴミだな
2011/07/06(水) 08:54:45.07
キチガイはすっこんでろ
275デフォルトの名無しさん
垢版 |
2011/09/01(木) 21:25:48.66
COMあげ
2011/09/02(金) 22:09:39.14
MFCのWindowsアプリから、COMのアウトプロセスサーバーのメソッド呼び出し中に
Windowsメッセージに割り込まれることがありますが、これを防ぐ方法はありますか?
現状は、COMの呼び出し中にフラグを立てて、Windowsメッセージ受信時にフラグONなら
同メッセージをPostMessageし直して処理を保留としていますが、スマートではないので。
2011/09/02(金) 22:22:13.72
充分スマートです
2011/09/02(金) 22:45:33.25
>>277
レスありがとうございます。
他に上手い方法が思いつかないので、とりあえずこの方法で対処したいと思います。
2011/09/02(金) 22:56:48.28
はい
がんがって
280デフォルトの名無しさん
垢版 |
2011/10/11(火) 18:24:40.07
qttabbarとかのソースみたらCOMだらけだったんですが
ああいうのってどこで学習したらいいんでしょうか
2011/10/12(水) 03:02:03.58
ttp://www.amazon.co.jp/dp/4881357557/
2011/10/12(水) 11:55:53.42
基本的に今の時代0からOLE/COM学習するの無理っぽくね?
昔俺が手がかりにしたMSの仕様書は今探してもことごとく抹消されてた。
Inside OLEとか絶版だし、手に入れても内容がバラけてて網羅性もない。
やっぱりあの仕様書群読むのが一番手っ取り早いはずなんだけど。
2011/10/27(木) 10:58:54.79
http://msdn.microsoft.com/en-us/library/ee663262(v=VS.85).aspx
284デフォルトの名無しさん
垢版 |
2011/11/28(月) 20:38:46.98
シェルエクステを簡単に実装する方法を教えてください
285デフォルトの名無しさん
垢版 |
2012/01/10(火) 18:51:55.79
SHCreateShellItemArrayFromDataObject の逆のAPIってないの?

IShellItemArrayからIDataObjectが欲しいんだけど
2012/01/10(火) 18:56:36.31
と思ったら
IShellItemArray::BindToHandler でいいのか

いずれにせよIShellItemArrayとIDataObjectの寿命がバインドしてるっぽいから
使い勝手悪いな
ITEMIDLISTにばらして持つしかないのか
2012/01/11(水) 10:36:36.21
IShellItemArray / IShellItem使って
IShellFolder / ITEMIDLIST は使うなってことなのか

でも過渡期だとどうせ両方使わなくちゃできないことも多いんで
手間が増えるな
2012/01/13(金) 13:08:43.73
class IHoge : public IUnknown { 〜
class IFuga : public IUnknown { 〜
class Piyo : public IHoge , public IFuga { 〜

COMってこういう場合でも仮想継承はしないほうがいいんですか?

void MyFunc(IUnknown * p) { 〜

Piyo * piyo;
MyFunc(piyo);

みたいなコードが書けなくて困るんですけど
2012/01/13(金) 17:00:12.78
うんこなぅ
290デフォルトの名無しさん
垢版 |
2012/03/21(水) 18:04:08.53
俺のCOM は9800bpsの高速だぜぇ。
2012/03/21(水) 18:10:30.31
それを言うなら、9600bpsだろう。
いずれにしても、つまらんが。
2012/03/21(水) 20:28:33.22
久しぶりだなこのスレ

Windows7とか8でまた楽しいCOMインターフェイスが追加されてるな
2012/03/22(木) 21:57:04.40
IInspectable
2012/03/22(木) 22:50:15.60
COMで扱うバリアント型の気持ち悪さは異常
2012/03/23(金) 08:15:11.72
馬鹿には無理
2012/04/10(火) 19:47:12.90
ああするしかない。
2012/04/10(火) 20:47:48.71
データもIUnknownから派生すればよかったのに
298本田
垢版 |
2012/04/13(金) 20:27:15.38
>>175
The COM Programmer's Cookbook
5 out of 23 rated this helpful Rate this topic

Crispin Goswell
Microsoft Office Product Unit

Spring 1995
Revised: September 13, 1995
http://msdn.microsoft.com/en-us/library/ms809982.aspx
Abstract
This cookbook shows you how to create Microsoft® OLE Component Object Model (COM) objects and use them effectively.
The examples are mostly in C, as this shows most clearly what is actually being done.
Some programmers will prefer to use C++ to implement their objects.
Kraig Brockschmidt's book Inside OLE (2nd edition) (MSDN Library, Books)
covers the concepts of COM and basic usage from the C++ programmer's perspective.
Readers interested in gaining a better understanding of what COM is, as well as the motivations behind its design and philosophy,
should read the first two chapters of the Component Object Model Specification (MSDN Library, Specifications).
Chapter 1 is a brief introduction, and Chapter 2 provides a thorough overview.
This cookbook builds on the information found in Inside OLE and the COM specification by showing some good ways to implement COM objects.
2012/04/29(日) 18:42:56.85
>>288
なので、IUnknownへのポインタが欲しくば、QueryInterfaceするのが王道。
QueryInterefaceはCOMインタフェースへのキャストを行うものだと思えばいい。
300デフォルトの名無しさん
垢版 |
2012/08/27(月) 09:32:55.41
Windows8 でデスクトップガジェットってなくなるの?
IDesktopGadgetとかどうしてくれるの?
301デフォルトの名無しさん
垢版 |
2012/11/08(木) 16:20:07.81
COOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOM
2012/11/09(金) 08:06:58.10
COMのイベントについてググるのはバカにとって鬼門だな。
バカがやると「なんとかドットコム、秋のイベント開催中」みたいのしかヒットしないからなw
2012/11/09(金) 08:47:34.89
やったのですね
わかります
304片山博文MZボット ◆0lBZNi.Q7evd
垢版 |
2012/12/05(水) 12:08:57.50
ReactOSっていうWindowsクローンのOSを開発しています。
その中のexplorer_newの開発を手伝ってくれる人を探しています。
COMの知識がある人、居ませんか?
305デフォルトの名無しさん
垢版 |
2012/12/05(水) 21:26:28.16
おいらはExplorerでCOMな人間だけど
あいにくC#で動いてるしなぁ
2012/12/06(木) 02:15:33.17
>>304
おめーのプロジェクトじゃねえだろうが…
2012/12/09(日) 16:33:50.20
COMっちゃうなー
Reactに誘われて♪
2012/12/10(月) 17:20:38.44
元ネタわかる人いるのかよ
2012/12/10(月) 18:02:17.16
元ネタがあると言うことがわかっただけで、ロートル確定だな。
310デフォルトの名無しさん
垢版 |
2012/12/10(月) 18:24:41.37
ロートル(老頭児)は中国語である。
これ豆な
2012/12/14(金) 17:08:29.06
馬鹿には無理
312デフォルトの名無しさん
垢版 |
2012/12/14(金) 18:43:35.12
どしたの?
313デフォルトの名無しさん
垢版 |
2013/02/13(水) 09:00:54.64
>>283
>>298
良スレthx
2013/02/13(水) 09:36:01.00
コードにちらばるunkというキーワード

思わずoを足したくなる
なんとかしてくれ
315デフォルトの名無しさん
垢版 |
2013/02/13(水) 10:40:12.85
IUnkonow
2013/02/23(土) 01:11:21.52
そういやcommってアプリはどうなった?
317デフォルトの名無しさん
垢版 |
2013/02/28(木) 20:44:03.56
Shellまわりのインターフェイス

どうせだったらexplorerそのもにも実装してくれればいいのにと思うものが多数
2013/03/04(月) 08:03:26.94
winRTでカレーにフッカツ
とっととタヒねばいいのに
319デフォルトの名無しさん
垢版 |
2013/03/04(月) 08:23:27.34
アプリのプラグインdllでCOMを使いたい場合、イニシャライズは
どうすればいいんだろう?一般的な指針ってあるんだろうか?
2013/03/17(日) 12:52:41.05
なんの初期化をしたいか、COMを使うというのは、
COM規約を利用してCOM実装を作る側なのか、
利用する側なのかで変わるから一概に答えられん。

当てずっぽうで言っとくと、利用する場合は、
DllMainでCoInitialize、CoUnitilializeだろう。

逆に自分でCOM objectを提供する場合は、
Factoryクラスで初期化と後片付けを提供すりゃいいだろう。
2013/03/17(日) 13:19:40.20
初期化と後片付けの手間が半端ない
2013/03/17(日) 14:11:15.72
聞きたかった点をもう少し詳しく書くと、COMを利用するdllにおいて
・アプリ本体側でCoInitialize(Ex)を行っていない場合、dll側で初期化してもよいのか
・する場合、どこですべきか(DllMainかあるいは各エントリポイントか)
・特に、dllの関数がマルチスレッドで呼び出される場合についてはどうか
というあたり。
アプリ側がdllの仕様を知っていて必要な初期化を行ってくれるんであればいいけど、
dllプラグインのような場合dll側がアプリに合わせる必要があるんで、そのとき
どういうふうにすればいいんだろうかと。
2013/03/17(日) 14:20:21.91
VARIANT が VT_DATE のときの値と CRT の time_t を相互変換するにはどうすれば良い?
2013/03/17(日) 18:45:12.96
>>322
CoInitialize(Ex)のremarksに書いてあるやつじゃだめなの?
一度初期化したスレッドモデルと異なってたら初期化に失敗するだけじゃね(後に初期化しようとした他の人のプラグイン含む)?
2013/03/17(日) 22:15:31.11
なるほど、と思って改めてmsdn見にいったら、DllMainでは呼ぶなって書いてあるのね。
結局のところホストアプリ側で考慮してなきゃ無理ってことかな。
2013/03/18(月) 11:30:40.91
DLLに、最初にこの関数呼んでね的な関数追加して、そこでCoInitializeすれば良いのかなぁ
327デフォルトの名無しさん
垢版 |
2013/03/18(月) 13:47:33.00
プラグインなんでしょ?
サーバーというかホストが 初期化するよ/終了するよ みたいなの教えてくれないの?
2013/03/18(月) 21:29:45.45
>>323 MFCを読め
2013/03/18(月) 22:12:09.83
>>326
>>327
アプリ側でケアするんならそっちでCoInitializeするだけじゃね?
2013/03/20(水) 16:18:28.68
>>326
MSも含め、DLL側じゃなくexe側で初期化しろって方針なんだから、
DLL側で初期化すんのやめたら?
MSのDLL使う時だって、CoInitialize、CoUninitialize(もしくはWrapした関数)
必要なんだから、DLL使う側だって今更そこまで気にしないだろ。
2013/03/20(水) 17:08:33.74
CoInitialize忘れてCOM使うと
エラーが良くわからん状態になるので
忘れないようにしたいという需要はある
2013/03/20(水) 18:51:54.57
そういってもMS提供のDLLでもそうしてんだから、
それに従うしか無いだろうに
2013/03/20(水) 20:18:30.82
アパートメントモデルの問題があるから、
DLLで勝手に初期化するわけにはいかない。
334デフォルトの名無しさん
垢版 |
2013/03/21(木) 12:58:18.91
foreach実装する方法おしえてチョン
2013/03/21(木) 13:36:26.47
何語?
2013/03/24(日) 14:17:42.23
マゲ
337片山博文MZパンク ◆0lBZNi.Q7evd
垢版 |
2013/04/06(土) 22:42:52.62
IShellViewのヘッダーが表示され内容に死体が胴すればいイカ?
2013/04/07(日) 15:09:37.56
FWF_NOCOLUMNHEADER あたり
339片山博文MZパンク ◆0lBZNi.Q7evd
垢版 |
2013/04/17(水) 20:53:57.97
>>338 似たようなフラグで解決。ありがd。

相変わらずReactOS開発中。SHDOCVWとBROWSEUIの実装に関する資料希望。
2013/04/17(水) 22:39:12.48
儲かるActiveXの作り方教えて下さい、偉い人。
2013/04/17(水) 23:21:04.39
んなもんない
2013/04/21(日) 13:17:50.82
localのEXEサーバーに大きなデータ(数十MB)を渡したいんだが、SAFEARRAYに
突っ込んだ場合、パフォーマンスはどうなんだろう?
数秒とかかかるようならあきらめるけど。
343片山博文MZパンク ◆0lBZNi.Q7evd
垢版 |
2013/04/23(火) 10:36:29.88
登録されているCOMのCLSIDとそのDLLパスのペアの一覧を取得する方法を教えて下さい。
344デフォルトの名無しさん
垢版 |
2013/04/23(火) 10:47:56.76
レジストリを舐める
2013/04/23(火) 22:32:31.11
>>344
構造を説明した資料ないっすか?英語可
346デフォルトの名無しさん
垢版 |
2013/04/24(水) 12:35:05.38
http://msdn.microsoft.com/en-us/library/windows/desktop/ms691424%28v=vs.85%29.aspx
2013/04/24(水) 19:07:02.13
OLE Viewer使えば簡単だった。すまそ
2013/04/24(水) 20:21:39.67
ヽ(・ω・)/ズコー
2013/04/24(水) 21:32:53.68
ATLが使えてひまな人、ReactOSの開発に参加して下さい。お願いします。
2013/04/24(水) 21:36:25.70
はい。
2013/04/24(水) 23:19:06.74
>>350
おお、参加してくれるか。まずは僕のHPの「ReactOS開発の手引き」を読んで下さい。
2013/04/24(水) 23:20:39.20
いいえ。
2013/04/24(水) 23:31:49.80
--------------------------
運命の選択
--------------------------
ReactOS開発に参加しますか?

     [はい] [いいえ]
--------------------------
2013/04/24(水) 23:44:20.41
それは人生のスイッチ。

実力と英語力と時間がある人はお金がもらえるよ
2013/04/28(日) 13:51:46.76
複数のアプリで共通のインタフェースを持たせたい場合、単純にそのインタフェースを
定義したIDLをそれぞれのアプリでimportすればいいんですかね?
あとこのとき、インタフェースのバージョンアップ(メソッドの追加など)はどのようにすれば
いいんでしょうか?
2013/04/29(月) 01:24:17.27
>>349
お前が亡くなれば参加してもいい
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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