COM

■ このスレッドは過去ログ倉庫に格納されています
1IUnkonwn
垢版 |
2007/01/10(水) 20:13:15
いざ語れや
2008/10/30(木) 23:29:32
>vc++6 
>platform sdk 2003 server sp1 

VCのバージョンを上げろゴラってことじゃないかと・・・
2008/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を定義してるよ。
231224,226,228
垢版 |
2008/10/31(金) 00:08:51
すみません。
すべてNO_WIN32_LEAN_AND_MEANです。
232デフォルトの名無しさん
垢版 |
2008/11/10(月) 20:10:51
永遠なるCOMを称えてage
2008/12/07(日) 02:34:42
Windowsの音量を変更するCOM教えてください。。。
すんません、こんな質問で。
2008/12/08(月) 12:28:56
つ[http://www.google.co.jp/search?hl=ja&q=Windowsの音量を変更するCOM教えてください]
235デフォルトの名無しさん
垢版 |
2009/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するやり方が悪いのでしょうか?
2009/04/10(金) 19:40:45
ほしゅ
237235
垢版 |
2009/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]は出力されません。単にファイル終端なだけです

ここまででファイルの終端になっています。何が悪いんだろう・・・


2009/04/13(月) 02:42:25
>>237
最近同じところではまった気がする

結局、何が悪いかは分からなかったけど、ITypeLib View のウィンドウの右ペインで
テキスト選択 => コピー => エディタで貼り付け、
で回避した

ちなみにコピーは Ctrl+C
Ctrl+C のコピーできるなら、マウス右クリックの編集メニューサポートしとけよって…
239235
垢版 |
2009/04/14(火) 22:04:30
ありがとう!!!

手動コピペでうまくいった
240235
垢版 |
2009/04/14(火) 22:48:06
>>233
> Windowsの音量を変更するCOM教えてください。。。
> すんません、こんな質問で。
>

   Dim objShell
  Set objShell = CreateObject("Shell.Application.1")
  objShell.ControlPanelItem("mmsys.cpl")

これでどうよ?コントロールパネル-サウンドとオーディオデバイスのプロパティ を出すだけだけど
241235
垢版 |
2009/04/14(火) 23:23:57
APIでwaveOutSetVolume()ってのがあるみたいだな>>オーディオの調整
2009/04/16(木) 13:13:27
はいはい
2009/05/05(火) 15:20:06
>>235
#import <wshom.ocx> rename("FreeSpace","FreeSpace2")

main.obj - エラー 0、警告 0



244デフォルトの名無しさん
垢版 |
2009/08/27(木) 04:41:21
あげ
2009/08/30(日) 05:14:08
COM形式の実行ファイルの話はこのスレでいいんですか
2009/08/30(日) 12:33:10
いいとは思うが、COM形式の実行ファイルって何だ?
2009/08/30(日) 12:47:30
command.com
2009/08/30(日) 13:10:03
いまさらそっちのCOMなのか
じゃあ違うな
個別のスレはなさそうだし、「スレ立てるまでもない質問はここで」とかで聞くしかないんじゃないの?
2009/10/20(火) 05:39:50
office製品との連携にc++でcom(dll)作ってしまうのが良さそうと思ったけど、誰も使ってなさそうだな。orz
みんなvbaで済ませちゃってるっぽいな。vb回避したいのでいろいろ探してcomにたどり着いたのに。orz
それとももうcomは捨てて、まねーじcom(.net)のほうに逝っちゃったかな?
.netはcom使える様にする設定が面倒と思った。
2009/10/21(水) 05:21:57
もうだれもobaやってないみたいだなw
2009/10/30(金) 12:34:24
Inside COMって絶版だったのか。
会社にあったから何とかなったけど、
XPCOMでの関連書籍にEssential COMとかあるのに、それも絶版とか・・・
2009/10/30(金) 12:43:45
Inside COM
には、
COMは誰も定義が言えないうえ今までなかったプログラミングの構造だが、
今後のプログラミングはこの構造になるって、
ばっちゃが書いてた。
2009/10/31(土) 04:55:58
いまは.netの方向に進んでて、comは捨てられてるな。
2009/11/02(月) 09:43:44
ドトネト進むというか迷走だがw
2009/11/02(月) 16:10:20
com回帰来るの?
2009/11/02(月) 16:33:30
そうならなくて、HTML5だろ、jk
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を読め
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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