COM

■ このスレッドは過去ログ倉庫に格納されています
1IUnkonwn
垢版 |
2007/01/10(水) 20:13:15
いざ語れや
2013/10/20(日) 11:57:13.62
>>392
気付かなかったorz
眼科行くべきか
394デフォルトの名無しさん
垢版 |
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を実装してるオブジェクトから
あるフォーマットのデータを削除することってできる?

空データで上書きしてもそのフォーマットとしては残るし
空データでもデータとして意味がある場合もあるし

自前の実装でそういう処理を書ける場合じゃないと無理?
2014/03/17(月) 19:51:29.13ID:+0g3AXKA
無理だな
398デフォルトの名無しさん
垢版 |
2014/04/12(土) 18:28:31.07ID:EWT/9iBD
IDataObjectにHGLOBALなデータを設定するとき、
一体どのAPIを使ってメモリを割り当てたらいいんでしょう?

伝統的にはGlobalAllocを使うんだと思いますが
LocalAllocを直接使っているコードを見たことがあります。。
2014/04/12(土) 18:47:39.61ID:QTVFiGTh
HGLOBALならGlobalAlloc使っとけばいいんじゃない?
Win16と違って、Win32では同じものだけどね。
400デフォルトの名無しさん
垢版 |
2014/05/01(木) 18:25:47.02ID:R3+I0L0F
またお世話になります。

プロパティシステムまわりの質問なんですが、
プロパティのcanonical name ("System.Keywords"みたいなの) ⇔ PROPERTYKEY/IPropertyDescription は相互に取得できるのは分かったんですが
表示名("キーワード"みたいなローカル名) をパースして canonical nameを取得する方法ってありませんか。

もしかして総当りしか方法はなかったりしますか。。。
401400
垢版 |
2014/05/02(金) 09:11:42.05ID:vd73L/AD
とりあえずシェルのカラムにあるやつはなんとか取得できそうです。

IShellFolder2::GetDetailsOf( null, ... をループでまわして取得したローカル名と比較するという力技ですが。
一致した場合にそのインデックスからIShellFolder2::MapColumnToSCIDでPROPERTYKEYが取れました……
402デフォルトの名無しさん
垢版 |
2014/05/06(火) 20:14:34.65ID:XJoiCw0I
OLE スレッド モデルの概要としくみ
http://support.microsoft.com/kb/150777/ja
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/
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
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
2014/07/08(火) 15:13:40.82ID:VCOU0wLj
テキストエディタのMeryみたく、自作アプリのマクロを
WSHエンジンで動かせるようにするにはどうしたらいいのでしょうか?
Visual Studio で C++(MFCなし) の場合です。

ヒントだけでもいただけたらと思います。
2014/07/09(水) 11:49:40.02ID:Q25RUpED
どなたか、いませんか〜?
2014/07/09(水) 13:21:03.55ID:QQm9iNty
いませんよ
2014/07/09(水) 15:23:34.29ID:Q25RUpED
生存かくにん。 よかった(ハート)
410デフォルトの名無しさん
垢版 |
2014/07/10(木) 06:52:04.27ID:fp5I0Zvk
season quinen age
2014/07/10(木) 08:28:32.99ID:hXB94njE
COMも、LoadLibraryみたいな形でアプリ内で閉じて使えたらアプリのプラグイン
インターフェースとして使えたのにな。
2014/07/10(木) 09:47:10.09ID:1VHW603R
>>406
WSH上で動かすんじゃなくてWSHの機能を呼び出すんじゃろ

まずは難しいことを考えずに
コマンドリストを実行できる機能をつけて
そこから改良していけばいいのではないか

凝ったことをやりたいなら構文解析・パーサーをキーワードにして
知識を広げていくのが良い
2014/07/10(木) 15:23:41.68ID:1VHW603R
それとも
IDispatch::Invoke と IDispatch::GetIDsOfNames を組み合わせて使うとか
そういう話かな
2014/07/10(木) 17:14:05.85ID:fp5I0Zvk
v8を組み込んで
jsインタプリタ内蔵の
プラグインにすれば良い
2014/07/13(日) 03:23:13.23ID:b3Vz6umr
>>406
サクラエディタのマクロはWSHだったような気がする
416デフォルトの名無しさん
垢版 |
2014/07/14(月) 15:28:36.63ID:uZs3XM/U
IFileOperation でファイルのショートカットを作成することって出来ないの?

コピー・移動・リンク作成が直交的に作れたら美しいんだけど
2014/07/14(月) 22:35:59.63ID:DvBldTQU
EXCELをCOMアドインで操作していると、同じ処理をしているにも関わらず、
ある時は数秒で終わるのに、ある時は、何十秒も掛かったりと、挙動が
おかしいのですが、何か解決のヒントありますか?
2014/07/15(火) 20:35:27.97ID:UxnDWfjl
>>417
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を一度にやってくれないし

もしかしてこのウンコの方法が正統な方法だったりする?
2014/07/21(月) 07:53:53.45ID:hvY5HB9k
うん
2014/07/24(木) 19:57:03.53ID:s9ARWR1P
COMによるOffice automationを調べていると
COM/ATLというような用語も見つかるのですが、COMとCOM/ATLというのは
異なる技術ですか?
私の理解では、C++でCOMやる場合は、CoInitializeExやCoUninitializeを使って
やる方式のことだと思っています。COM/ATLというのが分りません。
どなたか簡単に解説お願いします。
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
2014/08/07(木) 17:50:19.99ID:oQyOe1xD
わっかりやすーい
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)なんだと思う
2014/08/08(金) 01:05:55.34ID:hqeBSYtp
COMはレジストリ登録必須じゃなくて従来のdllと同じようにアプリケーションに閉じた形で使えたら
もう少し使いでがあったんだがなぁ。
2014/08/08(金) 01:12:38.28ID:B23vVFp/
>>427
dllをLoadLibraryして関数呼べばCOMオブジェクト作れるでしょ?
レジストリ登録はCoCreateInstanceでCOMオブジェクト作るなら必要ってだけで
自前でやる分には何の問題もない
2014/08/08(金) 01:27:40.29ID:hqeBSYtp
なるほど、自分でDllGetClassObject呼んでやればいいのか。
もう使うことはないだろうが、参考になった。
2014/08/08(金) 04:42:26.72ID:1UU7vf/D
>>426
すべてが行き当たりばったりなんですね
2014/08/08(金) 07:00:09.81ID:/GOXeWKw
>>423
細かい突っ込みだが WTL は COM と関係ないべ
2014/08/08(金) 09:24:29.43ID:gW33htdT
概出かも知れませんが
http://keicode.com/winprimer/index6.php
http://keicode.com/winprimer/com-basics1-3-registry.php
433デフォルトの名無しさん
垢版 |
2014/10/23(木) 13:56:20.92ID:ISc0F2Qf
OLEオブジェクトにゼロデイ脆弱性、Microsoftが暫定対策プログラムを公開
http://www.forest.impress.co.jp/docs/news/20141022_672480.html
2014/11/07(金) 16:14:18.00ID:tCwEoRvN
分散オブジェクトは距離に応じた最適な大きさ(機能)があって、
一律の仕組みにすることが最良ではなかった。
435デフォルトの名無しさん
垢版 |
2014/12/06(土) 08:07:09.24ID:1X8GhzUe
>>430
だがそれがいい
2014/12/08(月) 00:18:29.73ID:imKvrg71
COMは.NETの登場で廃れると思ってたが結局10年経っても廃れなかったな、ネイティブコードの言語が健在だから
2014/12/08(月) 10:11:02.56ID:rVPpfxjW
非同期処理には向いてないっぽい
2014/12/12(金) 09:04:26.82ID:s5Npqjiu
DCOMの非同期版みたいなのをMSが考案してMSJかMSDNマガジンでそれを読んだが、全く流行らなかった。名前も思い出せないわ。
2014/12/12(金) 11:51:31.03ID:RkbkbG+A
結局、MS Office は .NET では書かれないんだからな。そりゃCOMとOLEが残るわな。
2014/12/12(金) 11:55:33.92ID:r3Fvlg1D
OOOとかLibreOとかGoogleSpreadsheetとかで間に合うのに
なんでみんな有料のものを喜んで買うんだ
2014/12/12(金) 12:16:02.48ID:j/Rc/sNK
MS自体がデスクトップアプリで.NETなんか使わんと言ってるようなもんだからな
2014/12/13(土) 00:14:39.65ID:pBf+dW7w
DLLとしてのCOM実装は実行オーバーベッドもないし、それでいてコンポーネントベースのオブジェクト指向を実現できるからな、シンプルでよく出来てる

流行り廃りではなく、ネイティブコードならいつまでも使い続けらる技術だよ

.NETには何の魅力も長所も感じない

動作が遅い、デフォで導入されてない.NETフレームワークのインストールも、OSに任せればインターネット接続が要るし、丸ごと再頒布するにはデカ杉
2014/12/13(土) 00:17:26.75ID:hYWK5mUP
最近のOSには入ってるしインストールの手間はないだろ
2014/12/13(土) 00:25:07.03ID:pBf+dW7w
Win8からは.NET fxはVer4.5しかインストールされてないよ、デフォでは

.NET3とか2のエンジンは、Windows Featureのon/offの所からから明示的に導入しないと、.NETランタイム不在と認識される

.NET4は3や2の代用にはならない
2014/12/13(土) 00:34:37.63ID:pBf+dW7w
.NET fx2の再頒布モジュールは30~40MBでたいして大きくはないんだけど、それを製品に添付してインストールしようとすると、Win8はそれを利用しないんだよね

確かにインストールは開始するんだけど、持ち込んだ.NET fx2は古すぎて気に入らないのか、無視してネットからDLしようとする

かといってもっと新しい.NET fx2再頒布モジュールがある訳でもない
446デフォルトの名無しさん
垢版 |
2014/12/13(土) 04:28:04.73ID:jrsNMnhJ
何がんばっちゃってんのこいつ?
447デフォルトの名無しさん
垢版 |
2014/12/13(土) 06:14:24.22ID:KcZztYF+
http://blog.trendmicro.co.jp/archives/10346
2014/12/14(日) 11:37:06.17ID:X+6lyliS
.NETからDLL呼ぶためにはP/Invokeを手で書かないといけないけど、COMDLLならTLBからインタロップ自動生成してるから楽
まあ普通のDLLもIDLファイル作っとけばいいんだろうけど、普通やらないもんな
2015/01/02(金) 20:24:42.85ID:mlj15zVW
Inside COM(日本語版)って結構高く売れんのかね?
2015/01/02(金) 20:29:14.43ID:F7Nf/+TC
>>449
今更新規に学ぶ人なんか居ないから売れない
既に理解してる身としてはまだまだ使い道ある技術だけどね
2015/01/03(土) 01:17:50.23ID:AuGuhWCh
>>449
読んだのはだいぶ前だけどそこそこ勉強にはなったな
COMの利点はC++で作ったDLLを他の言語から使えるって事かな
OSの基本機能はC++で実装する事がほとんどだろうからCOM自体は永久に無くならんだろうね
452デフォルトの名無しさん
垢版 |
2015/01/03(土) 11:28:31.16ID:duDbuP4G
ステマ乙
2015/01/03(土) 15:18:55.60ID:AuGuhWCh
>>452
ステマって誰が儲かんだよw
ま、いい売り文句を言えたと理解しておこう
2015/01/06(火) 08:32:22.24ID:c/PNiN5K
元々はC++のvtblを巧みに利用したインターフェース志向の技法で、DLLというコンポーネント分散によって言語依存が消えた

でBasic言語にC++のvtbl構造を模倣する仕組みを入れてCOMをネイティブにあつかえるようにしてVBAが出来た

てことなんだろうと思う
2015/01/06(火) 23:31:34.41ID:KFlyuGQs
>>454
VBからCOMが使えるのは間違い無いが、VBから使う時は名前(文字列)によるメソッド検索をしてると
Inside COMに書いてあった気がする (QueryInterfaceだっけ?)
どっちにしても、言語に依存しないのはいい事だ

LinuxはC言語が唯一のインターフェースだから、そろそろ言語非依存のインターフェースが普及してほしいよ
候補は色々あるけど、どれも普及はしてないな
2015/01/06(火) 23:34:43.36ID:C2mmH5Le
IDispatchだろ
2015/01/06(火) 23:47:22.80ID:KFlyuGQs
>>456
すまん…スゲー昔の記憶だけ書き込んでた…
反省はしてない
2015/01/06(火) 23:50:36.05ID:kiKfNKwr
>>456
だね、俗に言うレイトバインディング
VB4まではそれしか使えなかった
2015/01/07(水) 00:33:09.37ID:A8Vu2ukb
>>455
Win32だってC言語ベースのAPIだからね
DirectXとか一部だけでしょCOMなのは

C++の抽象クラスとvtblをつかったポリモーフィズム技法をDynamic Libraryに適用すればCOMもどきはできるんじゃないかな

WindowsでのCOM DLLみたいに、OSからの認識規則なんかを誰かが決めてやらないとダメだけど
2015/01/07(水) 02:06:30.69ID:HBIMK+Li
ORBとかCORBAでしょ
XPCOMとかもあったけどLinuxでは結局どれも流行らなかったのかな
Linuxだと普通GPLでソース公開だから、そんなもの使わなくてもスタティックリンクでokってことなのかもな
2015/01/07(水) 07:25:24.74ID:nx6cbjbg
>>449
Inside OLE(日本語版)がAmazonで良い値が付いてるな
売ろうかw
2015/01/07(水) 08:53:21.20ID:v+HQiVT1
初期のOLEはCOMではなくDDEで動いてたんだっけ

OLEはアタマが付いていかなくて最後まで仕組みを理解できなかったな
463デフォルトの名無しさん
垢版 |
2015/01/07(水) 09:04:35.98ID:7s8hjn62
いまはwebAPI全盛だな
2015/01/09(金) 00:37:23.61ID:5zBZY3tC
>>460
Linux上だと↓これだけあるかな

CORBA (Orbit2 GNOMEが使ってた)
XPCOM (Firefox)
UNO (OpenOffice.orgとその派生)
D-Bus

よく考えたらD-Busもコンポーネントモデルとも言えるしかなり普及してたよ
つう事でLinuxにはD-Busがあると言えるかな
2015/04/04(土) 22:47:14.80ID:ActYb9Xv
ActiveXコントロールは死んだ
ttp://www.artonx.org/diary/20150404.html#p01
2015/04/05(日) 09:35:59.42ID:Y8CRHpsW
クソみたいな文章だな
世の中にひり出すまえに推敲しろ
467デフォルトの名無しさん
垢版 |
2015/04/07(火) 19:42:58.87ID:qktNI4KL
COMは死なぬ。COMこそ人類の夢だからだ
468デフォルトの名無しさん
垢版 |
2015/04/07(火) 23:02:11.04ID:Bchxa3Il
>>467
COMってマンコと同じなんだなw
2015/04/08(水) 19:44:02.14ID:5pE9Fokq
>>468
つまりは、都市伝説だといいたいのか
2015/05/07(木) 22:55:18.82ID:yfN65J+v
ActiveXコントロールがIEのためだけのものだという誤解を解く方法
471デフォルトの名無しさん
垢版 |
2015/05/18(月) 20:25:05.77ID:oJXHJ+WI
次世代ブラウザEdge関係のCOMインターフェイスってどうなるのん?
2015/05/28(木) 17:06:44.48ID:qrMVO/gn
提供されないと思われ
2015/05/28(木) 17:47:37.58ID:e6ztGmIB
じゃあオートメーションでブラウザが必要なときはどうすんのさ
2015/08/23(日) 09:56:27.24ID:cZ8t4prN
Microsoft Edge、WebDriver サポートを発表
ttp://buildingedge.blogspot.jp/2015/07/microsoft-edgewebdriver.html
475デフォルトの名無しさん
垢版 |
2015/08/23(日) 10:34:40.27ID:hZLJ7+aO
http://peace.2ch.net/test/read.cgi/tech/1378978504/433
2015/08/28(金) 22:37:54.12ID:opvHfyoQ
[Windows 10]UWPアプリでWebViewコントロールを使ってみた。
ttp://www.ka-net.org/blog/?p=6167
477_
垢版 |
2015/09/05(土) 13:29:13.46ID:b0+gtEMA
a
478デフォルトの名無しさん
垢版 |
2015/11/10(火) 12:17:00.27ID:aBSI5Ff+
初学者なんですが

HRESULT hageMethod( IHoge **ppHoge )
{
 *ppHoge = NULL;
 IHoge *pHoge;....

 pHoge->QueryInterface(IID_PPV_ARGS(ppHoge ));
 pHoge->Release();
}

このQueryInterfaceのところってなにやってるんですか?
同じ型のコピーを作ってるみたいな感じ?
pHogeを直接返せないとかですかね
2015/11/11(水) 20:40:15.01ID:RY0eiki2
HRESULTを返してない不完全なコードに見えるし
おれにもさっぱりわからんけど
480デフォルトの名無しさん
垢版 |
2015/12/03(木) 11:05:36.09ID:IgpEN7lw
シェルのコンテキストメニューハンドラーを作ってるんですが、
ショートカットファイル(.lnk)を受け取ったとき、IDataObjectの中にリンクファイル自体じゃなくて
リンク先のファイルが入っています。

リンクファイル自体が欲しいんですが
この動作を制御することってできないんでしょうか?
481片山博文MZ ◆T6xkBnTXz7B0
垢版 |
2016/04/08(金) 19:04:18.35ID:eaIwZ6It
https://github.com/katahiromz/atlbasefake

アンパンマン、新しい顔ができたよ!
482デフォルトの名無しさん
垢版 |
2016/04/08(金) 20:11:51.90ID:BALYf2ws
>>481
http://katahiromz.web.fc2.com/ant.png
蟻さん好きなの?
483デフォルトの名無しさん
垢版 |
2016/06/27(月) 08:26:28.63ID:wgXdRov4
OfficeオートメーションでWordを操作するとき
VB.NETだけは自動的に解放処理をしてくれるんだっけ?
2016/06/27(月) 12:21:49.42ID:KfwOTMrs
>>483
c#もでしょ
485デフォルトの名無しさん
垢版 |
2016/06/30(木) 06:55:01.83ID:unO7gBzv
C#もVBも
GCとか使わないとプロセスが残るでしょ
486デフォルトの名無しさん
垢版 |
2018/05/23(水) 22:57:47.41ID:Au5e7VGg
僕の知り合いの知り合いができたパソコン一台でお金持ちになれるやり方
役に立つかもしれません
グーグルで検索するといいかも『ネットで稼ぐ方法 モニアレフヌノ』

2E7EB
487デフォルトの名無しさん
垢版 |
2018/07/04(水) 23:10:48.07ID:gFgZc5FG
RM1
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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