COM

■ このスレッドは過去ログ倉庫に格納されています
1IUnkonwn
垢版 |
2007/01/10(水) 20:13:15
いざ語れや
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
お前が亡くなれば参加してもいい
2013/04/30(火) 22:25:04.86
>>356
ジェラシーか?
自分を恥じているのか?
いずれにしても時間の無駄
358デフォルトの名無しさん
垢版 |
2013/05/03(金) 10:32:20.14
VSのウィザードが生成するidlは最初にinterfaceの定義があって、その後に
coclassを含むlibraryが記述されますが、interfaceがlibraryの外で定義されるのは
どういう理由からなんでしょうか?
libraryの中にinterface定義を記述する場合とどう違うんでしょうか?
同じinterfaceを使う複数のlibraryが書けるようにしているんですかね?
359デフォルトの名無しさん
垢版 |
2013/05/05(日) 19:33:07.15
>>358
インターフェイスの再利用のため。
2013/05/05(日) 19:35:18.14
COMは人工知能を作りたい人が越えるべき一里塚
2013/05/05(日) 19:48:55.67
いいえ。
362片山博文MZパンク ◆0lBZNi.Q7evd
垢版 |
2013/05/05(日) 20:44:26.04
COMではinterfaceと実装を分けて考える必要がある。
interfaceは外に公開する操作用の接点。実装はinterfaceに必要な機能の詳細。
interfaceを幅広く利用するために、生成・破棄の手段を一定の形式に従って公開している。
2013/05/05(日) 20:48:16.38
ずっと昔はidlとodlに分かれてなかったっけ?
364デフォルトの名無しさん
垢版 |
2013/05/05(日) 21:39:29.29
馬鹿じゃね?
OOならずともinterfaceなら当たり前じゃね
2013/05/05(日) 22:01:55.03
例えば、集合を表すinterface ISetを公開する場合、実装方法は自由に選べる。
連結リストで集合を実装するclass CSetByListの実体を返してもいいし、ベクトルで集合を実装するclass CSetByVectorを返してもいい。
interfaceと実装を分離することでソフトウェア部品の共通化と再利用性が高まる。これはこれからの人工知能の要と言える。
2013/05/05(日) 22:12:28.10
>>359
再利用ってのはつまり、複数のlibraryで同じinterfaceを参照したい場合のために
libraryの外でintefaceを定義しているってことですかね。
ということはひとつのlibraryでしか使わないintefaceはlibraryの中で定義しても
同等なんでしょうか?
dispinterfaceの場合はlibraryの中で定義する場合と外の場合とでMIDLの
コンパイル結果が大きく違うようですが。
2013/05/05(日) 22:36:34.92
公開したくないなら公開するな。そういうことだ
2013/05/05(日) 22:55:13.70
>>367
library内のcoclassが参照するinterfaceなら、中で定義されたものでも外で定義されたものでも
どちらの場合もタイプライブラリに含まれて公開されますが?
2013/05/05(日) 23:10:51.26
じゃあ、参照するinterfaceを作成する方法は何通りある?
2013/05/05(日) 23:41:13.95
とりあえず、再利用の話なのか公開の話なのか参照の話なのか話題を絞れ。
2013/05/05(日) 23:49:02.61
>>369
一通りって何を数えるんだろう?
・同じidlに書く
・別のidlに書いてimportする
・別のタイプライブラリにコンパイルしたものをimportlibする
とか?
2013/05/05(日) 23:57:34.82
>COMは人工知能を作りたい人が越えるべき一里塚

なんで人工知能を作りたい人の文脈でCOMが出てくんの?
2013/05/06(月) 00:03:17.85
>365 :片山博文MZパンク ◆0lBZNi.Q7evd :2013/05/05(日) 22:01:55.03
>interfaceと実装を分離することでソフトウェア部品の共通化と再利用性が高まる。これはこれからの人工知能の要と言える。

なんでこの人広義なソフトウェアの一般論をわざわざ人口氏h脳だけに的を絞って話してんの?
覚えたてなの?きもちわるい
374片山
垢版 |
2013/05/06(月) 00:44:13.05
えいやこら
えいやこら
どっこいしょ
2013/05/06(月) 00:54:33.89
ワリートマケの唄

えいやこらどっこいしょ
えいやこらどっこいしょ
パソコンのためならえいやこら
376デフォルトの名無しさん
垢版 |
2013/06/16(日) 20:30:09.00
We love COM
377デフォルトの名無しさん
垢版 |
2013/06/25(火) 09:16:34.35
C#で書いたアプリにスクリプト機能つけようとしてんだけど
C#4.0のオプション引数機能がそのままスクリプトでも使えてワロタ

public void Hoge( object arg1 = null, object arg2 = null, object arg3 = null ){...}

って公開したメソッドがスクリプトのほうでも

Hoge( 1, "hage", true );
Hoge( 1, "hage" );
Hoge( 1 );

って感じで使えてマジでスクリプトっぽい。ちょっと感動。
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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