探検
COM
■ このスレッドは過去ログ倉庫に格納されています
2007/01/10(水) 20:13:15
いざ語れや
357デフォルトの名無しさん
2013/04/30(火) 22:25:04.86358デフォルトの名無しさん
2013/05/03(金) 10:32:20.14 VSのウィザードが生成するidlは最初にinterfaceの定義があって、その後に
coclassを含むlibraryが記述されますが、interfaceがlibraryの外で定義されるのは
どういう理由からなんでしょうか?
libraryの中にinterface定義を記述する場合とどう違うんでしょうか?
同じinterfaceを使う複数のlibraryが書けるようにしているんですかね?
coclassを含むlibraryが記述されますが、interfaceがlibraryの外で定義されるのは
どういう理由からなんでしょうか?
libraryの中にinterface定義を記述する場合とどう違うんでしょうか?
同じinterfaceを使う複数のlibraryが書けるようにしているんですかね?
359デフォルトの名無しさん
2013/05/05(日) 19:33:07.15 >>358
インターフェイスの再利用のため。
インターフェイスの再利用のため。
360片山博文MZパンク ◆0lBZNi.Q7evd
2013/05/05(日) 19:35:18.14 COMは人工知能を作りたい人が越えるべき一里塚
361デフォルトの名無しさん
2013/05/05(日) 19:48:55.67 いいえ。
362片山博文MZパンク ◆0lBZNi.Q7evd
2013/05/05(日) 20:44:26.04 COMではinterfaceと実装を分けて考える必要がある。
interfaceは外に公開する操作用の接点。実装はinterfaceに必要な機能の詳細。
interfaceを幅広く利用するために、生成・破棄の手段を一定の形式に従って公開している。
interfaceは外に公開する操作用の接点。実装はinterfaceに必要な機能の詳細。
interfaceを幅広く利用するために、生成・破棄の手段を一定の形式に従って公開している。
363デフォルトの名無しさん
2013/05/05(日) 20:48:16.38 ずっと昔はidlとodlに分かれてなかったっけ?
364デフォルトの名無しさん
2013/05/05(日) 21:39:29.29 馬鹿じゃね?
OOならずともinterfaceなら当たり前じゃね
OOならずともinterfaceなら当たり前じゃね
365片山博文MZパンク ◆0lBZNi.Q7evd
2013/05/05(日) 22:01:55.03 例えば、集合を表すinterface ISetを公開する場合、実装方法は自由に選べる。
連結リストで集合を実装するclass CSetByListの実体を返してもいいし、ベクトルで集合を実装するclass CSetByVectorを返してもいい。
interfaceと実装を分離することでソフトウェア部品の共通化と再利用性が高まる。これはこれからの人工知能の要と言える。
連結リストで集合を実装するclass CSetByListの実体を返してもいいし、ベクトルで集合を実装するclass CSetByVectorを返してもいい。
interfaceと実装を分離することでソフトウェア部品の共通化と再利用性が高まる。これはこれからの人工知能の要と言える。
366デフォルトの名無しさん
2013/05/05(日) 22:12:28.10 >>359
再利用ってのはつまり、複数のlibraryで同じinterfaceを参照したい場合のために
libraryの外でintefaceを定義しているってことですかね。
ということはひとつのlibraryでしか使わないintefaceはlibraryの中で定義しても
同等なんでしょうか?
dispinterfaceの場合はlibraryの中で定義する場合と外の場合とでMIDLの
コンパイル結果が大きく違うようですが。
再利用ってのはつまり、複数のlibraryで同じinterfaceを参照したい場合のために
libraryの外でintefaceを定義しているってことですかね。
ということはひとつのlibraryでしか使わないintefaceはlibraryの中で定義しても
同等なんでしょうか?
dispinterfaceの場合はlibraryの中で定義する場合と外の場合とでMIDLの
コンパイル結果が大きく違うようですが。
367デフォルトの名無しさん
2013/05/05(日) 22:36:34.92 公開したくないなら公開するな。そういうことだ
368デフォルトの名無しさん
2013/05/05(日) 22:55:13.70369デフォルトの名無しさん
2013/05/05(日) 23:10:51.26 じゃあ、参照するinterfaceを作成する方法は何通りある?
370デフォルトの名無しさん
2013/05/05(日) 23:41:13.95 とりあえず、再利用の話なのか公開の話なのか参照の話なのか話題を絞れ。
371デフォルトの名無しさん
2013/05/05(日) 23:49:02.61372デフォルトの名無しさん
2013/05/05(日) 23:57:34.82 >COMは人工知能を作りたい人が越えるべき一里塚
なんで人工知能を作りたい人の文脈でCOMが出てくんの?
なんで人工知能を作りたい人の文脈でCOMが出てくんの?
373デフォルトの名無しさん
2013/05/06(月) 00:03:17.85 >365 :片山博文MZパンク ◆0lBZNi.Q7evd :2013/05/05(日) 22:01:55.03
>interfaceと実装を分離することでソフトウェア部品の共通化と再利用性が高まる。これはこれからの人工知能の要と言える。
なんでこの人広義なソフトウェアの一般論をわざわざ人口氏h脳だけに的を絞って話してんの?
覚えたてなの?きもちわるい
>interfaceと実装を分離することでソフトウェア部品の共通化と再利用性が高まる。これはこれからの人工知能の要と言える。
なんでこの人広義なソフトウェアの一般論をわざわざ人口氏h脳だけに的を絞って話してんの?
覚えたてなの?きもちわるい
374片山
2013/05/06(月) 00:44:13.05 えいやこら
えいやこら
どっこいしょ
えいやこら
どっこいしょ
375デフォルトの名無しさん
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 );
って感じで使えてマジでスクリプトっぽい。ちょっと感動。
C#4.0のオプション引数機能がそのままスクリプトでも使えてワロタ
public void Hoge( object arg1 = null, object arg2 = null, object arg3 = null ){...}
って公開したメソッドがスクリプトのほうでも
Hoge( 1, "hage", true );
Hoge( 1, "hage" );
Hoge( 1 );
って感じで使えてマジでスクリプトっぽい。ちょっと感動。
378デフォルトの名無しさん
2013/06/25(火) 10:03:40.56 当たり前じゃね?
なんで出来ないと思ったの?
なんで出来ないと思ったの?
379デフォルトの名無しさん
2013/06/25(火) 11:18:52.59 いやー
スクリプトさんがシグニチャからメソッド探すときに
よく間違えないで見つけてくれるもんだと思ってさぁ
オプション引数使ってないメソッドをシグニチャ違いで呼ぶと
スクリプトさんのプロセスで「プロシージャの呼び出し、または引数が不正です」って怒られるのよ
.netの方じゃなくて。
スクリプトさんがシグニチャからメソッド探すときに
よく間違えないで見つけてくれるもんだと思ってさぁ
オプション引数使ってないメソッドをシグニチャ違いで呼ぶと
スクリプトさんのプロセスで「プロシージャの呼び出し、または引数が不正です」って怒られるのよ
.netの方じゃなくて。
380デフォルトの名無しさん
2013/06/25(火) 12:12:25.70 引数があってるか確認してるのは
スクリプト側じゃなくてBinderだからな
スクリプト側じゃなくてBinderだからな
381デフォルトの名無しさん
2013/06/25(火) 22:38:57.90 そうだ、バインダーが探せバインダー
382デフォルトの名無しさん
2013/06/26(水) 10:22:05.92 昔MSX界隈に、どうすれバインダーっていう人がいたな
383デフォルトの名無しさん
2013/07/13(土) NY:AN:NY.AN ファイルタイプのアイコンハンドラを登録して
InprocServer32にdllを設定する時、
64bitOSの場合でそのdllが64でビルドされてたら
32bitアプリケーションからはそのアイコンハンドラが呼ばれないって状況はありえる?
つーか普通そのdllって32bitで作るの?
InprocServer32にdllを設定する時、
64bitOSの場合でそのdllが64でビルドされてたら
32bitアプリケーションからはそのアイコンハンドラが呼ばれないって状況はありえる?
つーか普通そのdllって32bitで作るの?
384デフォルトの名無しさん
2013/07/13(土) NY:AN:NY.AN 状況はありえる
32bit専用で作ることも出来るし
64/32bit兼用で作ることも出来るが
64bit専用のものは32bit側からは使えない
32bit専用で作ることも出来るし
64/32bit兼用で作ることも出来るが
64bit専用のものは32bit側からは使えない
385デフォルトの名無しさん
2013/08/07(水) NY:AN:NY.AN comcom
386デフォルトの名無しさん
2013/08/08(木) NY:AN:NY.AN comとcom+は何が違うのですか?
387デフォルトの名無しさん
2013/10/20(日) 07:29:10.07 COMはインプロセス
COM+はアウトプロセス
細かい違いはあるが基本はそれだけ
COM+はアウトプロセス
細かい違いはあるが基本はそれだけ
388デフォルトの名無しさん
2013/10/20(日) 07:57:19.20 32bit用に作られたcomサーバーを
64bit用のcomクライアントから使用したい場合
上記サーバーを64bit用に作り直す
(ソースの変更と再コンパイル)
必要がありますか?
それともwrapperみたいなのを書けば対処可能ですか?
64bit用のcomクライアントから使用したい場合
上記サーバーを64bit用に作り直す
(ソースの変更と再コンパイル)
必要がありますか?
それともwrapperみたいなのを書けば対処可能ですか?
389デフォルトの名無しさん
2013/10/20(日) 08:13:57.34 必要ありません
登録する時に適切な手順を踏めば問題なく利用できますし
登録する時に適切な手順を踏めば問題なく利用できますし
390デフォルトの名無しさん
2013/10/20(日) 10:33:00.13 なるほど
どいうことは
64bit用のクライアントで使用できない
32bit用に作られたCOMサーバーは
登録する時に適切な手順を踏んでいないということですね
多分COMサーバーのインストーラーが変なことしてるのかな
どいうことは
64bit用のクライアントで使用できない
32bit用に作られたCOMサーバーは
登録する時に適切な手順を踏んでいないということですね
多分COMサーバーのインストーラーが変なことしてるのかな
391デフォルトの名無しさん
2013/10/20(日) 10:52:02.39 http://msdn.microsoft.com/ja-jp/library/aa384231(v=vs.85).aspx
この辺見ると、63bit/32bit相互運用可能なのは、アウトプロセスの場合のみって思えるけど違うの?
IEやOfficeはともかく、一般のライブラリ的なCOMサーバはインプロセスが多そうなので、
相互呼び出しできないんじゃないの?
この辺見ると、63bit/32bit相互運用可能なのは、アウトプロセスの場合のみって思えるけど違うの?
IEやOfficeはともかく、一般のライブラリ的なCOMサーバはインプロセスが多そうなので、
相互呼び出しできないんじゃないの?
392デフォルトの名無しさん
2013/10/20(日) 10:58:41.04 ×63bit/32bit相互運用可能なのは、
○64bit/32bit相互運用可能なのは、
です
○64bit/32bit相互運用可能なのは、
です
393デフォルトの名無しさん
2013/10/20(日) 11:57:13.62394デフォルトの名無しさん
2013/10/20(日) 12:09:36.50 2秒くらいえっ?てなった
395デフォルトの名無しさん
2014/03/08(土) 15:04:30.80 鳥の竜田揚げ
396デフォルトの名無しさん
2014/03/17(月) 14:07:47.87ID:Z9hT6Asb IDataObjectを実装してるオブジェクトから
あるフォーマットのデータを削除することってできる?
空データで上書きしてもそのフォーマットとしては残るし
空データでもデータとして意味がある場合もあるし
自前の実装でそういう処理を書ける場合じゃないと無理?
あるフォーマットのデータを削除することってできる?
空データで上書きしてもそのフォーマットとしては残るし
空データでもデータとして意味がある場合もあるし
自前の実装でそういう処理を書ける場合じゃないと無理?
397デフォルトの名無しさん
2014/03/17(月) 19:51:29.13ID:+0g3AXKA 無理だな
398デフォルトの名無しさん
2014/04/12(土) 18:28:31.07ID:EWT/9iBD IDataObjectにHGLOBALなデータを設定するとき、
一体どのAPIを使ってメモリを割り当てたらいいんでしょう?
伝統的にはGlobalAllocを使うんだと思いますが
LocalAllocを直接使っているコードを見たことがあります。。
一体どのAPIを使ってメモリを割り当てたらいいんでしょう?
伝統的にはGlobalAllocを使うんだと思いますが
LocalAllocを直接使っているコードを見たことがあります。。
399デフォルトの名無しさん
2014/04/12(土) 18:47:39.61ID:QTVFiGTh HGLOBALならGlobalAlloc使っとけばいいんじゃない?
Win16と違って、Win32では同じものだけどね。
Win16と違って、Win32では同じものだけどね。
400デフォルトの名無しさん
2014/05/01(木) 18:25:47.02ID:R3+I0L0F またお世話になります。
プロパティシステムまわりの質問なんですが、
プロパティのcanonical name ("System.Keywords"みたいなの) ⇔ PROPERTYKEY/IPropertyDescription は相互に取得できるのは分かったんですが
表示名("キーワード"みたいなローカル名) をパースして canonical nameを取得する方法ってありませんか。
もしかして総当りしか方法はなかったりしますか。。。
プロパティシステムまわりの質問なんですが、
プロパティのcanonical name ("System.Keywords"みたいなの) ⇔ PROPERTYKEY/IPropertyDescription は相互に取得できるのは分かったんですが
表示名("キーワード"みたいなローカル名) をパースして canonical nameを取得する方法ってありませんか。
もしかして総当りしか方法はなかったりしますか。。。
401400
2014/05/02(金) 09:11:42.05ID:vd73L/AD とりあえずシェルのカラムにあるやつはなんとか取得できそうです。
IShellFolder2::GetDetailsOf( null, ... をループでまわして取得したローカル名と比較するという力技ですが。
一致した場合にそのインデックスからIShellFolder2::MapColumnToSCIDでPROPERTYKEYが取れました……
IShellFolder2::GetDetailsOf( null, ... をループでまわして取得したローカル名と比較するという力技ですが。
一致した場合にそのインデックスからIShellFolder2::MapColumnToSCIDでPROPERTYKEYが取れました……
402デフォルトの名無しさん
2014/05/06(火) 20:14:34.65ID:XJoiCw0I OLE スレッド モデルの概要としくみ
http://support.microsoft.com/kb/150777/ja
http://support.microsoft.com/kb/150777/ja
403デフォルトの名無しさん
2014/05/07(水) 13:11:23.49ID:9Lrwf94O φ(..)メモメモ
EternalWindows - COM
http://eternalwindows.jp/#com
温COM知新 (おんこむちしん)
http://www.asahi-net.or.jp/~kv8s-yjm/another/yjamain.htm
COM研究室
http://atata.sakura.ne.jp/com/
EternalWindows - COM
http://eternalwindows.jp/#com
温COM知新 (おんこむちしん)
http://www.asahi-net.or.jp/~kv8s-yjm/another/yjamain.htm
COM研究室
http://atata.sakura.ne.jp/com/
404デフォルトの名無しさん
2014/05/07(水) 13:19:13.42ID:9Lrwf94O どとねと
相互運用マーシャリング
http://msdn.microsoft.com/ja-jp/library/eaw10et3%28v=vs.110%29.aspx
アンマネージ コードとの相互運用
http://msdn.microsoft.com/ja-jp/library/sd10k43k%28v=vs.110%29.aspx
相互運用マーシャリング
http://msdn.microsoft.com/ja-jp/library/eaw10et3%28v=vs.110%29.aspx
アンマネージ コードとの相互運用
http://msdn.microsoft.com/ja-jp/library/sd10k43k%28v=vs.110%29.aspx
405デフォルトの名無しさん
2014/05/14(水) 14:14:24.97ID:duQE1tkX A synchronous OLE call made by the recipient of an inter-process/inter- thread SendMessage fails with
RPC_E_CANTCALLOUT_ININPUTSYNCCALL(0x8001010D).
http://support.microsoft.com/kb/131056/EN-US
RPC_E_CANTCALLOUT_ININPUTSYNCCALL(0x8001010D).
http://support.microsoft.com/kb/131056/EN-US
406デフォルトの名無しさん
2014/07/08(火) 15:13:40.82ID:VCOU0wLj テキストエディタのMeryみたく、自作アプリのマクロを
WSHエンジンで動かせるようにするにはどうしたらいいのでしょうか?
Visual Studio で C++(MFCなし) の場合です。
ヒントだけでもいただけたらと思います。
WSHエンジンで動かせるようにするにはどうしたらいいのでしょうか?
Visual Studio で C++(MFCなし) の場合です。
ヒントだけでもいただけたらと思います。
407デフォルトの名無しさん
2014/07/09(水) 11:49:40.02ID:Q25RUpED どなたか、いませんか〜?
408デフォルトの名無しさん
2014/07/09(水) 13:21:03.55ID:QQm9iNty いませんよ
409デフォルトの名無しさん
2014/07/09(水) 15:23:34.29ID:Q25RUpED 生存かくにん。 よかった(ハート)
410デフォルトの名無しさん
2014/07/10(木) 06:52:04.27ID:fp5I0Zvk season quinen age
411デフォルトの名無しさん
2014/07/10(木) 08:28:32.99ID:hXB94njE COMも、LoadLibraryみたいな形でアプリ内で閉じて使えたらアプリのプラグイン
インターフェースとして使えたのにな。
インターフェースとして使えたのにな。
412デフォルトの名無しさん
2014/07/10(木) 09:47:10.09ID:1VHW603R >>406
WSH上で動かすんじゃなくてWSHの機能を呼び出すんじゃろ
まずは難しいことを考えずに
コマンドリストを実行できる機能をつけて
そこから改良していけばいいのではないか
凝ったことをやりたいなら構文解析・パーサーをキーワードにして
知識を広げていくのが良い
WSH上で動かすんじゃなくてWSHの機能を呼び出すんじゃろ
まずは難しいことを考えずに
コマンドリストを実行できる機能をつけて
そこから改良していけばいいのではないか
凝ったことをやりたいなら構文解析・パーサーをキーワードにして
知識を広げていくのが良い
413デフォルトの名無しさん
2014/07/10(木) 15:23:41.68ID:1VHW603R それとも
IDispatch::Invoke と IDispatch::GetIDsOfNames を組み合わせて使うとか
そういう話かな
IDispatch::Invoke と IDispatch::GetIDsOfNames を組み合わせて使うとか
そういう話かな
414デフォルトの名無しさん
2014/07/10(木) 17:14:05.85ID:fp5I0Zvk v8を組み込んで
jsインタプリタ内蔵の
プラグインにすれば良い
jsインタプリタ内蔵の
プラグインにすれば良い
415デフォルトの名無しさん
2014/07/13(日) 03:23:13.23ID:b3Vz6umr >>406
サクラエディタのマクロはWSHだったような気がする
サクラエディタのマクロはWSHだったような気がする
416デフォルトの名無しさん
2014/07/14(月) 15:28:36.63ID:uZs3XM/U IFileOperation でファイルのショートカットを作成することって出来ないの?
コピー・移動・リンク作成が直交的に作れたら美しいんだけど
コピー・移動・リンク作成が直交的に作れたら美しいんだけど
417デフォルトの名無しさん
2014/07/14(月) 22:35:59.63ID:DvBldTQU EXCELをCOMアドインで操作していると、同じ処理をしているにも関わらず、
ある時は数秒で終わるのに、ある時は、何十秒も掛かったりと、挙動が
おかしいのですが、何か解決のヒントありますか?
ある時は数秒で終わるのに、ある時は、何十秒も掛かったりと、挙動が
おかしいのですが、何か解決のヒントありますか?
418デフォルトの名無しさん
2014/07/15(火) 20:35:27.97ID:UxnDWfjl >>417
COMなんて使わずにこれ使えよ。マイクロソフトご謹製だよ。
http://www.microsoft.com/ja-jp/download/details.aspx?id=5124
ま、使うとかなり目眩がするけどなwww
COMなんて使わずにこれ使えよ。マイクロソフトご謹製だよ。
http://www.microsoft.com/ja-jp/download/details.aspx?id=5124
ま、使うとかなり目眩がするけどなwww
419デフォルトの名無しさん
2014/07/21(月) 07:49:19.08ID:6nmHe42m >>416のシェルを使ったショートカット作成の件だけど、
→作成先フォルダのIDropTarget取得
→ショートカットを作るファイルのIDataObjectをCF_HDROPとかCF_SHELLIDLISTとかの形式で作成
IFolderViewがある場合簡単。
→IDropTargetのDropその他を順番に呼び出す。その時effectをDROPEFFECT_LINKにしておく
みたいなウンコな方法か、ちまちま一個ずつ作るしかないの?
ちまちま一個だとUndoを一度にやってくれないし
もしかしてこのウンコの方法が正統な方法だったりする?
→作成先フォルダのIDropTarget取得
→ショートカットを作るファイルのIDataObjectをCF_HDROPとかCF_SHELLIDLISTとかの形式で作成
IFolderViewがある場合簡単。
→IDropTargetのDropその他を順番に呼び出す。その時effectをDROPEFFECT_LINKにしておく
みたいなウンコな方法か、ちまちま一個ずつ作るしかないの?
ちまちま一個だとUndoを一度にやってくれないし
もしかしてこのウンコの方法が正統な方法だったりする?
420デフォルトの名無しさん
2014/07/21(月) 07:53:53.45ID:hvY5HB9k うん
421デフォルトの名無しさん
2014/07/24(木) 19:57:03.53ID:s9ARWR1P COMによるOffice automationを調べていると
COM/ATLというような用語も見つかるのですが、COMとCOM/ATLというのは
異なる技術ですか?
私の理解では、C++でCOMやる場合は、CoInitializeExやCoUninitializeを使って
やる方式のことだと思っています。COM/ATLというのが分りません。
どなたか簡単に解説お願いします。
COM/ATLというような用語も見つかるのですが、COMとCOM/ATLというのは
異なる技術ですか?
私の理解では、C++でCOMやる場合は、CoInitializeExやCoUninitializeを使って
やる方式のことだと思っています。COM/ATLというのが分りません。
どなたか簡単に解説お願いします。
422片山博文MZ悪魔崇拝 ◆T6xkBnTXz7B0
2014/07/24(木) 20:19:40.19ID:BX5qEEGf 「active template library」で検索
423デフォルトの名無しさん
2014/08/07(木) 17:34:11.54ID:utSp7A7J >>421
プログラムが大きくなるとコンパイルに時間がかかるから
共通部分と分けるじゃない? あれが静的ライブラリで lib
さらに共通であちこちのexeで使われるようなものは1度コンパイルしておいて
動的にメモリに読み込んで使えるようにすればいいじゃん これが動的ライブラリで dll
さらに動的ライブラリdllにもC++のオブジェクト構造のような関数以外のものも入れたいなぁ
さらに言語非依存にして、そこで参照回数などのオブジェクトのメモリ管理も加えたCOM技術で作ったdll
COMサーバーという
この外部オブジェクトライブラリを使うのに、CoInitializeExやCoUninitializeを使うのはCOMクライアント
COMクライアントは別にC++でなくてもJavaScriptでもVBでもC#でもPerlでもなんでもいい
COMサーバーは大別してインプロセスサーバー、アウトプロセスサーバーがあるけど
ぶっちゃけ一から書くのはメンドクサイ
そこでライブラリ作ろうか〜ということで出来たのがATL/WTL
プログラムが大きくなるとコンパイルに時間がかかるから
共通部分と分けるじゃない? あれが静的ライブラリで lib
さらに共通であちこちのexeで使われるようなものは1度コンパイルしておいて
動的にメモリに読み込んで使えるようにすればいいじゃん これが動的ライブラリで dll
さらに動的ライブラリdllにもC++のオブジェクト構造のような関数以外のものも入れたいなぁ
さらに言語非依存にして、そこで参照回数などのオブジェクトのメモリ管理も加えたCOM技術で作ったdll
COMサーバーという
この外部オブジェクトライブラリを使うのに、CoInitializeExやCoUninitializeを使うのはCOMクライアント
COMクライアントは別にC++でなくてもJavaScriptでもVBでもC#でもPerlでもなんでもいい
COMサーバーは大別してインプロセスサーバー、アウトプロセスサーバーがあるけど
ぶっちゃけ一から書くのはメンドクサイ
そこでライブラリ作ろうか〜ということで出来たのがATL/WTL
424デフォルトの名無しさん
2014/08/07(木) 17:50:19.99ID:oQyOe1xD わっかりやすーい
425デフォルトの名無しさん
2014/08/07(木) 19:32:56.15ID:zGwpFhqC 参照カウントなんてどこで増やしてんの?
426デフォルトの名無しさん
2014/08/07(木) 20:30:34.00ID:utSp7A7J >>425
参照カウントはIUnkhownが担当してる
なぜ参照カウントが必要かというと使われなくなったオブジェクトを提供するために
dllをメモリに読み込んでいるわけだけど、つかわれなくなったら破棄するため
ちなみに何度も1個だけインターフェースを作ったり破棄したりする可能性のあるCOMは
dllの読み込みや破棄を連続で行わないためにClassFactoryを実装することが薦められている
COMは最初は言語非依存じゃなくて単に動的ライブラリdllにオブジェクト機能を持たせるだけだった
(インターフェイスの階層構造で、仮想ポインタの配列順で実現してた)
だから以前はヘッダが必要だった
つまりC++専用だった
IDispatchというインターフェイス名でを動的に関数ポインタを取得できるインターフェイスを作ることで
プログラム内にインターフェイス名を書くだけでよくなり言語非依存になった
従来の関数ポインタ順とは別にIDispatchを両方用意することをディアルインターフェースという
このあたりからOLEとか呼ばれるようになった
さらにこのインターフェイス名やGUIDはOS(というかレジストリ)に記録するものなので
Windowsアプリからはどこからでも利用できるはず・・・・
それならブラウザ内の埋め込みスクリプトからも利用できるようにしようということで ActiveX と名前を変え
ActiveXサーバーを作るものだから ATL(Active Template Library)なんだと思う
参照カウントはIUnkhownが担当してる
なぜ参照カウントが必要かというと使われなくなったオブジェクトを提供するために
dllをメモリに読み込んでいるわけだけど、つかわれなくなったら破棄するため
ちなみに何度も1個だけインターフェースを作ったり破棄したりする可能性のあるCOMは
dllの読み込みや破棄を連続で行わないためにClassFactoryを実装することが薦められている
COMは最初は言語非依存じゃなくて単に動的ライブラリdllにオブジェクト機能を持たせるだけだった
(インターフェイスの階層構造で、仮想ポインタの配列順で実現してた)
だから以前はヘッダが必要だった
つまりC++専用だった
IDispatchというインターフェイス名でを動的に関数ポインタを取得できるインターフェイスを作ることで
プログラム内にインターフェイス名を書くだけでよくなり言語非依存になった
従来の関数ポインタ順とは別にIDispatchを両方用意することをディアルインターフェースという
このあたりからOLEとか呼ばれるようになった
さらにこのインターフェイス名やGUIDはOS(というかレジストリ)に記録するものなので
Windowsアプリからはどこからでも利用できるはず・・・・
それならブラウザ内の埋め込みスクリプトからも利用できるようにしようということで ActiveX と名前を変え
ActiveXサーバーを作るものだから ATL(Active Template Library)なんだと思う
427デフォルトの名無しさん
2014/08/08(金) 01:05:55.34ID:hqeBSYtp COMはレジストリ登録必須じゃなくて従来のdllと同じようにアプリケーションに閉じた形で使えたら
もう少し使いでがあったんだがなぁ。
もう少し使いでがあったんだがなぁ。
428デフォルトの名無しさん
2014/08/08(金) 01:12:38.28ID:B23vVFp/ >>427
dllをLoadLibraryして関数呼べばCOMオブジェクト作れるでしょ?
レジストリ登録はCoCreateInstanceでCOMオブジェクト作るなら必要ってだけで
自前でやる分には何の問題もない
dllをLoadLibraryして関数呼べばCOMオブジェクト作れるでしょ?
レジストリ登録はCoCreateInstanceでCOMオブジェクト作るなら必要ってだけで
自前でやる分には何の問題もない
429デフォルトの名無しさん
2014/08/08(金) 01:27:40.29ID:hqeBSYtp なるほど、自分でDllGetClassObject呼んでやればいいのか。
もう使うことはないだろうが、参考になった。
もう使うことはないだろうが、参考になった。
430デフォルトの名無しさん
2014/08/08(金) 04:42:26.72ID:1UU7vf/D >>426
すべてが行き当たりばったりなんですね
すべてが行き当たりばったりなんですね
431デフォルトの名無しさん
2014/08/08(金) 07:00:09.81ID:/GOXeWKw >>423
細かい突っ込みだが WTL は COM と関係ないべ
細かい突っ込みだが WTL は COM と関係ないべ
432デフォルトの名無しさん
2014/08/08(金) 09:24:29.43ID:gW33htdT433デフォルトの名無しさん
2014/10/23(木) 13:56:20.92ID:ISc0F2Qf OLEオブジェクトにゼロデイ脆弱性、Microsoftが暫定対策プログラムを公開
http://www.forest.impress.co.jp/docs/news/20141022_672480.html
http://www.forest.impress.co.jp/docs/news/20141022_672480.html
434デフォルトの名無しさん
2014/11/07(金) 16:14:18.00ID:tCwEoRvN 分散オブジェクトは距離に応じた最適な大きさ(機能)があって、
一律の仕組みにすることが最良ではなかった。
一律の仕組みにすることが最良ではなかった。
435デフォルトの名無しさん
2014/12/06(土) 08:07:09.24ID:1X8GhzUe >>430
だがそれがいい
だがそれがいい
436デフォルトの名無しさん
2014/12/08(月) 00:18:29.73ID:imKvrg71 COMは.NETの登場で廃れると思ってたが結局10年経っても廃れなかったな、ネイティブコードの言語が健在だから
437デフォルトの名無しさん
2014/12/08(月) 10:11:02.56ID:rVPpfxjW 非同期処理には向いてないっぽい
438デフォルトの名無しさん
2014/12/12(金) 09:04:26.82ID:s5Npqjiu DCOMの非同期版みたいなのをMSが考案してMSJかMSDNマガジンでそれを読んだが、全く流行らなかった。名前も思い出せないわ。
439デフォルトの名無しさん
2014/12/12(金) 11:51:31.03ID:RkbkbG+A 結局、MS Office は .NET では書かれないんだからな。そりゃCOMとOLEが残るわな。
440デフォルトの名無しさん
2014/12/12(金) 11:55:33.92ID:r3Fvlg1D OOOとかLibreOとかGoogleSpreadsheetとかで間に合うのに
なんでみんな有料のものを喜んで買うんだ
なんでみんな有料のものを喜んで買うんだ
441デフォルトの名無しさん
2014/12/12(金) 12:16:02.48ID:j/Rc/sNK MS自体がデスクトップアプリで.NETなんか使わんと言ってるようなもんだからな
442デフォルトの名無しさん
2014/12/13(土) 00:14:39.65ID:pBf+dW7w DLLとしてのCOM実装は実行オーバーベッドもないし、それでいてコンポーネントベースのオブジェクト指向を実現できるからな、シンプルでよく出来てる
流行り廃りではなく、ネイティブコードならいつまでも使い続けらる技術だよ
.NETには何の魅力も長所も感じない
動作が遅い、デフォで導入されてない.NETフレームワークのインストールも、OSに任せればインターネット接続が要るし、丸ごと再頒布するにはデカ杉
流行り廃りではなく、ネイティブコードならいつまでも使い続けらる技術だよ
.NETには何の魅力も長所も感じない
動作が遅い、デフォで導入されてない.NETフレームワークのインストールも、OSに任せればインターネット接続が要るし、丸ごと再頒布するにはデカ杉
443デフォルトの名無しさん
2014/12/13(土) 00:17:26.75ID:hYWK5mUP 最近のOSには入ってるしインストールの手間はないだろ
444デフォルトの名無しさん
2014/12/13(土) 00:25:07.03ID:pBf+dW7w Win8からは.NET fxはVer4.5しかインストールされてないよ、デフォでは
.NET3とか2のエンジンは、Windows Featureのon/offの所からから明示的に導入しないと、.NETランタイム不在と認識される
.NET4は3や2の代用にはならない
.NET3とか2のエンジンは、Windows Featureのon/offの所からから明示的に導入しないと、.NETランタイム不在と認識される
.NET4は3や2の代用にはならない
445デフォルトの名無しさん
2014/12/13(土) 00:34:37.63ID:pBf+dW7w .NET fx2の再頒布モジュールは30~40MBでたいして大きくはないんだけど、それを製品に添付してインストールしようとすると、Win8はそれを利用しないんだよね
確かにインストールは開始するんだけど、持ち込んだ.NET fx2は古すぎて気に入らないのか、無視してネットからDLしようとする
かといってもっと新しい.NET fx2再頒布モジュールがある訳でもない
確かにインストールは開始するんだけど、持ち込んだ.NET fx2は古すぎて気に入らないのか、無視してネットからDLしようとする
かといってもっと新しい.NET fx2再頒布モジュールがある訳でもない
446デフォルトの名無しさん
2014/12/13(土) 04:28:04.73ID:jrsNMnhJ 何がんばっちゃってんのこいつ?
447デフォルトの名無しさん
2014/12/13(土) 06:14:24.22ID:KcZztYF+2014/12/14(日) 11:37:06.17ID:X+6lyliS
.NETからDLL呼ぶためにはP/Invokeを手で書かないといけないけど、COMDLLならTLBからインタロップ自動生成してるから楽
まあ普通のDLLもIDLファイル作っとけばいいんだろうけど、普通やらないもんな
まあ普通のDLLもIDLファイル作っとけばいいんだろうけど、普通やらないもんな
449デフォルトの名無しさん
2015/01/02(金) 20:24:42.85ID:mlj15zVW Inside COM(日本語版)って結構高く売れんのかね?
450デフォルトの名無しさん
2015/01/02(金) 20:29:14.43ID:F7Nf/+TC451デフォルトの名無しさん
2015/01/03(土) 01:17:50.23ID:AuGuhWCh >>449
読んだのはだいぶ前だけどそこそこ勉強にはなったな
COMの利点はC++で作ったDLLを他の言語から使えるって事かな
OSの基本機能はC++で実装する事がほとんどだろうからCOM自体は永久に無くならんだろうね
読んだのはだいぶ前だけどそこそこ勉強にはなったな
COMの利点はC++で作ったDLLを他の言語から使えるって事かな
OSの基本機能はC++で実装する事がほとんどだろうからCOM自体は永久に無くならんだろうね
452デフォルトの名無しさん
2015/01/03(土) 11:28:31.16ID:duDbuP4G ステマ乙
453デフォルトの名無しさん
2015/01/03(土) 15:18:55.60ID:AuGuhWCh454デフォルトの名無しさん
2015/01/06(火) 08:32:22.24ID:c/PNiN5K 元々はC++のvtblを巧みに利用したインターフェース志向の技法で、DLLというコンポーネント分散によって言語依存が消えた
でBasic言語にC++のvtbl構造を模倣する仕組みを入れてCOMをネイティブにあつかえるようにしてVBAが出来た
てことなんだろうと思う
でBasic言語にC++のvtbl構造を模倣する仕組みを入れてCOMをネイティブにあつかえるようにしてVBAが出来た
てことなんだろうと思う
455デフォルトの名無しさん
2015/01/06(火) 23:31:34.41ID:KFlyuGQs >>454
VBからCOMが使えるのは間違い無いが、VBから使う時は名前(文字列)によるメソッド検索をしてると
Inside COMに書いてあった気がする (QueryInterfaceだっけ?)
どっちにしても、言語に依存しないのはいい事だ
LinuxはC言語が唯一のインターフェースだから、そろそろ言語非依存のインターフェースが普及してほしいよ
候補は色々あるけど、どれも普及はしてないな
VBからCOMが使えるのは間違い無いが、VBから使う時は名前(文字列)によるメソッド検索をしてると
Inside COMに書いてあった気がする (QueryInterfaceだっけ?)
どっちにしても、言語に依存しないのはいい事だ
LinuxはC言語が唯一のインターフェースだから、そろそろ言語非依存のインターフェースが普及してほしいよ
候補は色々あるけど、どれも普及はしてないな
456デフォルトの名無しさん
2015/01/06(火) 23:34:43.36ID:C2mmH5Le IDispatchだろ
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- なぜリベラルは人気がないのか 斎藤幸平さんが指し示す未来への道筋:朝日新聞 [少考さん★]
- 【日本人の旅行離れ】国内旅行すら行けなくなった……オーバーツーリズムだけじゃない 旅行者減少の異常事態 ★2 [ぐれ★]
- “ひとり焼肉”でおなじみ「焼肉ライク」が閉店ラッシュ。なぜ「コスパが悪い」と言われてしまうのか [Gecko★]
- ベトナムのバイク「脱ガソリン」、シェア8割のホンダに打撃…政府が電動二輪普及を主導 [煮卵★]
- なぜ安っぽく見えてしまうのか…? ダウンジャケット姿が垢抜けない人の"意外な盲点" (ビジネスマンのためのスタイリスト) [少考さん★]
- 【日中】経団連会長、1月の北京訪問に暗雲 中国は受け入れ是非明らかにせず 関係「政冷経冷」に [煮卵★]
- 【実況】博衣こよりのえちえちドラクエ1&2リメイク🧪
- 「SCORE」←これなんて読むんや?🙋🏡
- 【高市朗報】鈴木大臣「嫌儲のデマに騙されないで。お米券の使い勝手は悪くない。卵味噌醤油も買えます。現金と変わりません」 [517459952]
- 今日一日を忘れられないほど大切な一日にしろ
- エロ画像を見ると死ぬ病になったからお前ら絶対貼るなよ
- 【悲報】東京40代「生活苦しい!戸建てなんて絶対無理…」地方20代「家と車買って子供できた~今日は家族でモールで買い物」 [732289945]
