10/09/01 22:42:43 .net
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登録する場合は、絶対パスを指定しないとダメなのでしょうか?
263:デフォルトの名無しさん
10/09/02 00:07:50 .net
環境変数
264:デフォルトの名無しさん
11/02/25 23:01:19.09 .net
蘇れ
265:デフォルトの名無しさん
11/02/26 19:19:28.35 .net
>>262
レジストリ登録ファイル使えばええがな。
アレと、継承ツリーを遡り、IIDをマッピングする独自テンプレート
書いておくとATL無しでも簡単にCOMサーバー書けるぞ。
話は変わるが.netってCLSID付きのクラスや、共有のインスタンスって
作れるの?
266:デフォルトの名無しさん
11/03/03 00:26:26.58 .net
>>265
後者は知らない。
CLSIDはGuid属性付きでクラス定義すればOK。
267:デフォルトの名無しさん
11/03/12 21:46:04.54 .net
IDispatchって簡単に言うとなんですか?
268:デフォルトの名無しさん
11/03/13 04:23:01.91 .net
WM_COMMAND
269:デフォルトの名無しさん
11/03/13 06:54:02.94 .net
ポリモーフィズム
270:デフォルトの名無しさん
11/03/18 23:42:19.02 .net
ん、つまり
いみがわからない
271:デフォルトの名無しさん
11/03/26 23:15:49.47 .net
馬鹿にはcomは無理。
272:デフォルトの名無しさん
11/04/09 17:50:41.49 .net
.netでCOMインターフェイス実装して
なんも知らないユーザーがMarshal.ReleaseComObjectすると例外でるよね
だってCOMオブジェクトじゃないもん!って怒られちゅうんだ
273:天使 ◆uL5esZLBSE
11/07/06 07:02:42.16 .net
これ ; デリミタっていうんだけどさ、よく打ち忘れるよね
Rubyだとつけなくてよくなるんだけど
ゴミだな
274:デフォルトの名無しさん
11/07/06 08:54:45.07 .net
キチガイはすっこんでろ
275:デフォルトの名無しさん
11/09/01 21:25:48.66 .net
COMあげ
276:デフォルトの名無しさん
11/09/02 22:09:39.14 .net
MFCのWindowsアプリから、COMのアウトプロセスサーバーのメソッド呼び出し中に
Windowsメッセージに割り込まれることがありますが、これを防ぐ方法はありますか?
現状は、COMの呼び出し中にフラグを立てて、Windowsメッセージ受信時にフラグONなら
同メッセージをPostMessageし直して処理を保留としていますが、スマートではないので。
277:デフォルトの名無しさん
11/09/02 22:22:13.72 .net
充分スマートです
278:デフォルトの名無しさん
11/09/02 22:45:33.25 .net
>>277
レスありがとうございます。
他に上手い方法が思いつかないので、とりあえずこの方法で対処したいと思います。
279:デフォルトの名無しさん
11/09/02 22:56:48.28 .net
はい
がんがって
280:デフォルトの名無しさん
11/10/11 18:24:40.07 .net
qttabbarとかのソースみたらCOMだらけだったんですが
ああいうのってどこで学習したらいいんでしょうか
281:デフォルトの名無しさん
11/10/12 03:02:03.58 .net
URLリンク(www.amazon.co.jp)
282:デフォルトの名無しさん
11/10/12 11:55:53.42 .net
基本的に今の時代0からOLE/COM学習するの無理っぽくね?
昔俺が手がかりにしたMSの仕様書は今探してもことごとく抹消されてた。
Inside OLEとか絶版だし、手に入れても内容がバラけてて網羅性もない。
やっぱりあの仕様書群読むのが一番手っ取り早いはずなんだけど。
283:デフォルトの名無しさん
11/10/27 10:58:54.79 .net
URLリンク(msdn.microsoft.com)(v=VS.85).aspx
284:デフォルトの名無しさん
11/11/28 20:38:46.98 .net
シェルエクステを簡単に実装する方法を教えてください
285:デフォルトの名無しさん
12/01/10 18:51:55.79 .net
SHCreateShellItemArrayFromDataObject の逆のAPIってないの?
IShellItemArrayからIDataObjectが欲しいんだけど
286:デフォルトの名無しさん
12/01/10 18:56:36.31 .net
と思ったら
IShellItemArray::BindToHandler でいいのか
いずれにせよIShellItemArrayとIDataObjectの寿命がバインドしてるっぽいから
使い勝手悪いな
ITEMIDLISTにばらして持つしかないのか
287:デフォルトの名無しさん
12/01/11 10:36:36.21 .net
IShellItemArray / IShellItem使って
IShellFolder / ITEMIDLIST は使うなってことなのか
でも過渡期だとどうせ両方使わなくちゃできないことも多いんで
手間が増えるな
288:デフォルトの名無しさん
12/01/13 13:08:43.73 .net
class IHoge : public IUnknown { ~
class IFuga : public IUnknown { ~
class Piyo : public IHoge , public IFuga { ~
COMってこういう場合でも仮想継承はしないほうがいいんですか?
void MyFunc(IUnknown * p) { ~
Piyo * piyo;
MyFunc(piyo);
みたいなコードが書けなくて困るんですけど
289:デフォルトの名無しさん
12/01/13 17:00:12.78 .net
うんこなぅ
290:デフォルトの名無しさん
12/03/21 18:04:08.53 .net
俺のCOM は9800bpsの高速だぜぇ。
291:デフォルトの名無しさん
12/03/21 18:10:30.31 .net
それを言うなら、9600bpsだろう。
いずれにしても、つまらんが。
292:デフォルトの名無しさん
12/03/21 20:28:33.22 .net
久しぶりだなこのスレ
Windows7とか8でまた楽しいCOMインターフェイスが追加されてるな
293:デフォルトの名無しさん
12/03/22 21:57:04.40 .net
IInspectable
294:デフォルトの名無しさん
12/03/22 22:50:15.60 .net
COMで扱うバリアント型の気持ち悪さは異常
295:デフォルトの名無しさん
12/03/23 08:15:11.72 .net
馬鹿には無理
296:営利利用に関するLR審議中@詳細は自治スレへ
12/04/10 19:47:12.90 .net
ああするしかない。
297:営利利用に関するLR審議中@詳細は自治スレへ
12/04/10 20:47:48.71 .net
データもIUnknownから派生すればよかったのに
298:本田
12/04/13 20:27:15.38 .net
>>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
URLリンク(msdn.microsoft.com)
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.
299:デフォルトの名無しさん
12/04/29 18:42:56.85 .net
>>288
なので、IUnknownへのポインタが欲しくば、QueryInterfaceするのが王道。
QueryInterefaceはCOMインタフェースへのキャストを行うものだと思えばいい。
300:デフォルトの名無しさん
12/08/27 09:32:55.41 .net
Windows8 でデスクトップガジェットってなくなるの?
IDesktopGadgetとかどうしてくれるの?
301:デフォルトの名無しさん
12/11/08 16:20:07.81 .net
COOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOM
302:デフォルトの名無しさん
12/11/09 08:06:58.10 .net
COMのイベントについてググるのはバカにとって鬼門だな。
バカがやると「なんとかドットコム、秋のイベント開催中」みたいのしかヒットしないからなw
303:デフォルトの名無しさん
12/11/09 08:47:34.89 .net
やったのですね
わかります
304:片山博文MZボット ◆0lBZNi.Q7evd
12/12/05 12:08:57.50 .net
ReactOSっていうWindowsクローンのOSを開発しています。
その中のexplorer_newの開発を手伝ってくれる人を探しています。
COMの知識がある人、居ませんか?
305:デフォルトの名無しさん
12/12/05 21:26:28.16 .net
おいらはExplorerでCOMな人間だけど
あいにくC#で動いてるしなぁ
306:デフォルトの名無しさん
12/12/06 02:15:33.17 .net
>>304
おめーのプロジェクトじゃねえだろうが…
307:デフォルトの名無しさん
12/12/09 16:33:50.20 .net
COMっちゃうなー
Reactに誘われて♪
308:デフォルトの名無しさん
12/12/10 17:20:38.44 .net
元ネタわかる人いるのかよ
309:デフォルトの名無しさん
12/12/10 18:02:17.16 .net
元ネタがあると言うことがわかっただけで、ロートル確定だな。
310:デフォルトの名無しさん
12/12/10 18:24:41.37 .net
ロートル(老頭児)は中国語である。
これ豆な
311:デフォルトの名無しさん
12/12/14 17:08:29.06 .net
馬鹿には無理
312:デフォルトの名無しさん
12/12/14 18:43:35.12 .net
どしたの?
313:デフォルトの名無しさん
13/02/13 09:00:54.64 .net
>>283
>>298
良スレthx
314:デフォルトの名無しさん
13/02/13 09:36:01.00 .net
コードにちらばるunkというキーワード
思わずoを足したくなる
なんとかしてくれ
315:デフォルトの名無しさん
13/02/13 10:40:12.85 .net
IUnkonow
316:デフォルトの名無しさん
13/02/23 01:11:21.52 .net
そういやcommってアプリはどうなった?
317:デフォルトの名無しさん
13/02/28 20:44:03.56 .net
Shellまわりのインターフェイス
どうせだったらexplorerそのもにも実装してくれればいいのにと思うものが多数
318:デフォルトの名無しさん
13/03/04 08:03:26.94 .net
winRTでカレーにフッカツ
とっととタヒねばいいのに
319:デフォルトの名無しさん
13/03/04 08:23:27.34 .net
アプリのプラグインdllでCOMを使いたい場合、イニシャライズは
どうすればいいんだろう?一般的な指針ってあるんだろうか?
320:デフォルトの名無しさん
13/03/17 12:52:41.05 .net
なんの初期化をしたいか、COMを使うというのは、
COM規約を利用してCOM実装を作る側なのか、
利用する側なのかで変わるから一概に答えられん。
当てずっぽうで言っとくと、利用する場合は、
DllMainでCoInitialize、CoUnitilializeだろう。
逆に自分でCOM objectを提供する場合は、
Factoryクラスで初期化と後片付けを提供すりゃいいだろう。
321:デフォルトの名無しさん
13/03/17 13:19:40.20 .net
初期化と後片付けの手間が半端ない
322:デフォルトの名無しさん
13/03/17 14:11:15.72 .net
聞きたかった点をもう少し詳しく書くと、COMを利用するdllにおいて
・アプリ本体側でCoInitialize(Ex)を行っていない場合、dll側で初期化してもよいのか
・する場合、どこですべきか(DllMainかあるいは各エントリポイントか)
・特に、dllの関数がマルチスレッドで呼び出される場合についてはどうか
というあたり。
アプリ側がdllの仕様を知っていて必要な初期化を行ってくれるんであればいいけど、
dllプラグインのような場合dll側がアプリに合わせる必要があるんで、そのとき
どういうふうにすればいいんだろうかと。
323:デフォルトの名無しさん
13/03/17 14:20:21.91 .net
VARIANT が VT_DATE のときの値と CRT の time_t を相互変換するにはどうすれば良い?
324:デフォルトの名無しさん
13/03/17 18:45:12.96 .net
>>322
CoInitialize(Ex)のremarksに書いてあるやつじゃだめなの?
一度初期化したスレッドモデルと異なってたら初期化に失敗するだけじゃね(後に初期化しようとした他の人のプラグイン含む)?
325:デフォルトの名無しさん
13/03/17 22:15:31.11 .net
なるほど、と思って改めてmsdn見にいったら、DllMainでは呼ぶなって書いてあるのね。
結局のところホストアプリ側で考慮してなきゃ無理ってことかな。
326:デフォルトの名無しさん
13/03/18 11:30:40.91 .net
DLLに、最初にこの関数呼んでね的な関数追加して、そこでCoInitializeすれば良いのかなぁ
327:デフォルトの名無しさん
13/03/18 13:47:33.00 .net
プラグインなんでしょ?
サーバーというかホストが 初期化するよ/終了するよ みたいなの教えてくれないの?
328:デフォルトの名無しさん
13/03/18 21:29:45.45 .net
>>323 MFCを読め
329:デフォルトの名無しさん
13/03/18 22:12:09.83 .net
>>326
>>327
アプリ側でケアするんならそっちでCoInitializeするだけじゃね?
330:デフォルトの名無しさん
13/03/20 16:18:28.68 .net
>>326
MSも含め、DLL側じゃなくexe側で初期化しろって方針なんだから、
DLL側で初期化すんのやめたら?
MSのDLL使う時だって、CoInitialize、CoUninitialize(もしくはWrapした関数)
必要なんだから、DLL使う側だって今更そこまで気にしないだろ。
331:デフォルトの名無しさん
13/03/20 17:08:33.74 .net
CoInitialize忘れてCOM使うと
エラーが良くわからん状態になるので
忘れないようにしたいという需要はある
332:デフォルトの名無しさん
13/03/20 18:51:54.57 .net
そういってもMS提供のDLLでもそうしてんだから、
それに従うしか無いだろうに
333:デフォルトの名無しさん
13/03/20 20:18:30.82 .net
アパートメントモデルの問題があるから、
DLLで勝手に初期化するわけにはいかない。
334:デフォルトの名無しさん
13/03/21 12:58:18.91 .net
foreach実装する方法おしえてチョン
335:デフォルトの名無しさん
13/03/21 13:36:26.47 .net
何語?
336:デフォルトの名無しさん
13/03/24 14:17:42.23 .net
マゲ
337:片山博文MZパンク ◆0lBZNi.Q7evd
13/04/06 22:42:52.62 .net
IShellViewのヘッダーが表示され内容に死体が胴すればいイカ?
338:デフォルトの名無しさん
13/04/07 15:09:37.56 .net
FWF_NOCOLUMNHEADER あたり
339:片山博文MZパンク ◆0lBZNi.Q7evd
13/04/17 20:53:57.97 .net
>>338 似たようなフラグで解決。ありが㌧。
相変わらずReactOS開発中。SHDOCVWとBROWSEUIの実装に関する資料希望。
340:片山博文MZパンク ◆0lBZNi.Q7evd
13/04/17 22:39:12.48 .net
儲かるActiveXの作り方教えて下さい、偉い人。
341:デフォルトの名無しさん
13/04/17 23:21:04.39 .net
んなもんない
342:デフォルトの名無しさん
13/04/21 13:17:50.82 .net
localのEXEサーバーに大きなデータ(数十MB)を渡したいんだが、SAFEARRAYに
突っ込んだ場合、パフォーマンスはどうなんだろう?
数秒とかかかるようならあきらめるけど。
343:片山博文MZパンク ◆0lBZNi.Q7evd
13/04/23 10:36:29.88 .net
登録されているCOMのCLSIDとそのDLLパスのペアの一覧を取得する方法を教えて下さい。
344:デフォルトの名無しさん
13/04/23 10:47:56.76 .net
レジストリを舐める
345:デフォルトの名無しさん
13/04/23 22:32:31.11 .net
>>344
構造を説明した資料ないっすか?英語可
346:デフォルトの名無しさん
13/04/24 12:35:05.38 .net
URLリンク(msdn.microsoft.com)
347:片山博文MZパンク ◆0lBZNi.Q7evd
13/04/24 19:07:02.13 .net
OLE Viewer使えば簡単だった。すまそ
348:デフォルトの名無しさん
13/04/24 20:21:39.67 .net
ヽ(・ω・)/ズコー
349:片山博文MZパンク ◆0lBZNi.Q7evd
13/04/24 21:32:53.68 .net
ATLが使えてひまな人、ReactOSの開発に参加して下さい。お願いします。
350:デフォルトの名無しさん
13/04/24 21:36:25.70 .net
はい。
351:片山博文MZパンク ◆0lBZNi.Q7evd
13/04/24 23:19:06.74 .net
>>350
おお、参加してくれるか。まずは僕のHPの「ReactOS開発の手引き」を読んで下さい。
352:デフォルトの名無しさん
13/04/24 23:20:39.20 .net
いいえ。
353:デフォルトの名無しさん
13/04/24 23:31:49.80 .net
--------------------------
運命の選択
--------------------------
ReactOS開発に参加しますか?
[はい] [いいえ]
--------------------------
354:デフォルトの名無しさん
13/04/24 23:44:20.41 .net
それは人生のスイッチ。
実力と英語力と時間がある人はお金がもらえるよ
355:デフォルトの名無しさん
13/04/28 13:51:46.76 .net
複数のアプリで共通のインタフェースを持たせたい場合、単純にそのインタフェースを
定義したIDLをそれぞれのアプリでimportすればいいんですかね?
あとこのとき、インタフェースのバージョンアップ(メソッドの追加など)はどのようにすれば
いいんでしょうか?
356:デフォルトの名無しさん
13/04/29 01:24:17.27 .net
>>349
お前が亡くなれば参加してもいい
357:デフォルトの名無しさん
13/04/30 22:25:04.86 .net
>>356
ジェラシーか?
自分を恥じているのか?
いずれにしても時間の無駄
358:デフォルトの名無しさん
13/05/03 10:32:20.14 .net
VSのウィザードが生成するidlは最初にinterfaceの定義があって、その後に
coclassを含むlibraryが記述されますが、interfaceがlibraryの外で定義されるのは
どういう理由からなんでしょうか?
libraryの中にinterface定義を記述する場合とどう違うんでしょうか?
同じinterfaceを使う複数のlibraryが書けるようにしているんですかね?
359:デフォルトの名無しさん
13/05/05 19:33:07.15 .net
>>358
インターフェイスの再利用のため。
360:片山博文MZパンク ◆0lBZNi.Q7evd
13/05/05 19:35:18.14 .net
COMは人工知能を作りたい人が越えるべき一里塚
361:デフォルトの名無しさん
13/05/05 19:48:55.67 .net
いいえ。
362:片山博文MZパンク ◆0lBZNi.Q7evd
13/05/05 20:44:26.04 .net
COMではinterfaceと実装を分けて考える必要がある。
interfaceは外に公開する操作用の接点。実装はinterfaceに必要な機能の詳細。
interfaceを幅広く利用するために、生成・破棄の手段を一定の形式に従って公開している。
363:デフォルトの名無しさん
13/05/05 20:48:16.38 .net
ずっと昔はidlとodlに分かれてなかったっけ?
364:デフォルトの名無しさん
13/05/05 21:39:29.29 .net
馬鹿じゃね?
OOならずともinterfaceなら当たり前じゃね
365:片山博文MZパンク ◆0lBZNi.Q7evd
13/05/05 22:01:55.03 .net
例えば、集合を表すinterface ISetを公開する場合、実装方法は自由に選べる。
連結リストで集合を実装するclass CSetByListの実体を返してもいいし、ベクトルで集合を実装するclass CSetByVectorを返してもいい。
interfaceと実装を分離することでソフトウェア部品の共通化と再利用性が高まる。これはこれからの人工知能の要と言える。
366:デフォルトの名無しさん
13/05/05 22:12:28.10 .net
>>359
再利用ってのはつまり、複数のlibraryで同じinterfaceを参照したい場合のために
libraryの外でintefaceを定義しているってことですかね。
ということはひとつのlibraryでしか使わないintefaceはlibraryの中で定義しても
同等なんでしょうか?
dispinterfaceの場合はlibraryの中で定義する場合と外の場合とでMIDLの
コンパイル結果が大きく違うようですが。
367:デフォルトの名無しさん
13/05/05 22:36:34.92 .net
公開したくないなら公開するな。そういうことだ
368:デフォルトの名無しさん
13/05/05 22:55:13.70 .net
>>367
library内のcoclassが参照するinterfaceなら、中で定義されたものでも外で定義されたものでも
どちらの場合もタイプライブラリに含まれて公開されますが?
369:デフォルトの名無しさん
13/05/05 23:10:51.26 .net
じゃあ、参照するinterfaceを作成する方法は何通りある?
370:デフォルトの名無しさん
13/05/05 23:41:13.95 .net
とりあえず、再利用の話なのか公開の話なのか参照の話なのか話題を絞れ。
371:デフォルトの名無しさん
13/05/05 23:49:02.61 .net
>>369
一通りって何を数えるんだろう?
・同じidlに書く
・別のidlに書いてimportする
・別のタイプライブラリにコンパイルしたものをimportlibする
とか?
372:デフォルトの名無しさん
13/05/05 23:57:34.82 .net
>COMは人工知能を作りたい人が越えるべき一里塚
なんで人工知能を作りたい人の文脈でCOMが出てくんの?
373:デフォルトの名無しさん
13/05/06 00:03:17.85 .net
>365 :片山博文MZパンク ◆0lBZNi.Q7evd :2013/05/05(日) 22:01:55.03
>interfaceと実装を分離することでソフトウェア部品の共通化と再利用性が高まる。これはこれからの人工知能の要と言える。
なんでこの人広義なソフトウェアの一般論をわざわざ人口氏h脳だけに的を絞って話してんの?
覚えたてなの?きもちわるい
374:片山
13/05/06 00:44:13.05 .net
えいやこら
えいやこら
どっこいしょ
375:デフォルトの名無しさん
13/05/06 00:54:33.89 .net
ワリートマケの唄
えいやこらどっこいしょ
えいやこらどっこいしょ
パソコンのためならえいやこら
376:デフォルトの名無しさん
13/06/16 20:30:09.00 .net
We love COM
377:デフォルトの名無しさん
13/06/25 09:16:34.35 .net
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 );
って感じで使えてマジでスクリプトっぽい。ちょっと感動。
378:デフォルトの名無しさん
13/06/25 10:03:40.56 .net
当たり前じゃね?
なんで出来ないと思ったの?
379:デフォルトの名無しさん
13/06/25 11:18:52.59 .net
いやー
スクリプトさんがシグニチャからメソッド探すときに
よく間違えないで見つけてくれるもんだと思ってさぁ
オプション引数使ってないメソッドをシグニチャ違いで呼ぶと
スクリプトさんのプロセスで「プロシージャの呼び出し、または引数が不正です」って怒られるのよ
.netの方じゃなくて。
380:デフォルトの名無しさん
13/06/25 12:12:25.70 .net
引数があってるか確認してるのは
スクリプト側じゃなくてBinderだからな
381:デフォルトの名無しさん
13/06/25 22:38:57.90 .net
そうだ、バインダーが探せバインダー
382:デフォルトの名無しさん
13/06/26 10:22:05.92 .net
昔MSX界隈に、どうすれバインダーっていう人がいたな
383:デフォルトの名無しさん
13/07/13 NY:AN:NY.AN .net
ファイルタイプのアイコンハンドラを登録して
InprocServer32にdllを設定する時、
64bitOSの場合でそのdllが64でビルドされてたら
32bitアプリケーションからはそのアイコンハンドラが呼ばれないって状況はありえる?
つーか普通そのdllって32bitで作るの?
384:デフォルトの名無しさん
13/07/13 NY:AN:NY.AN .net
状況はありえる
32bit専用で作ることも出来るし
64/32bit兼用で作ることも出来るが
64bit専用のものは32bit側からは使えない
385:デフォルトの名無しさん
13/08/07 NY:AN:NY.AN .net
comcom
386:デフォルトの名無しさん
13/08/08 NY:AN:NY.AN .net
comとcom+は何が違うのですか?
387:デフォルトの名無しさん
13/10/20 07:29:10.07 .net
COMはインプロセス
COM+はアウトプロセス
細かい違いはあるが基本はそれだけ
388:デフォルトの名無しさん
13/10/20 07:57:19.20 .net
32bit用に作られたcomサーバーを
64bit用のcomクライアントから使用したい場合
上記サーバーを64bit用に作り直す
(ソースの変更と再コンパイル)
必要がありますか?
それともwrapperみたいなのを書けば対処可能ですか?
389:デフォルトの名無しさん
13/10/20 08:13:57.34 .net
必要ありません
登録する時に適切な手順を踏めば問題なく利用できますし
390:デフォルトの名無しさん
13/10/20 10:33:00.13 .net
なるほど
どいうことは
64bit用のクライアントで使用できない
32bit用に作られたCOMサーバーは
登録する時に適切な手順を踏んでいないということですね
多分COMサーバーのインストーラーが変なことしてるのかな
391:デフォルトの名無しさん
13/10/20 10:52:02.39 .net
URLリンク(msdn.microsoft.com)(v=vs.85).aspx
この辺見ると、63bit/32bit相互運用可能なのは、アウトプロセスの場合のみって思えるけど違うの?
IEやOfficeはともかく、一般のライブラリ的なCOMサーバはインプロセスが多そうなので、
相互呼び出しできないんじゃないの?
392:デフォルトの名無しさん
13/10/20 10:58:41.04 .net
×63bit/32bit相互運用可能なのは、
○64bit/32bit相互運用可能なのは、
です
393:デフォルトの名無しさん
13/10/20 11:57:13.62 .net
>>392
気付かなかったorz
眼科行くべきか
394:デフォルトの名無しさん
13/10/20 12:09:36.50 .net
2秒くらいえっ?てなった
395:デフォルトの名無しさん
14/03/08 15:04:30.80 .net
鳥の竜田揚げ
396:デフォルトの名無しさん
14/03/17 14:07:47.87 Z9hT6Asb.net
IDataObjectを実装してるオブジェクトから
あるフォーマットのデータを削除することってできる?
空データで上書きしてもそのフォーマットとしては残るし
空データでもデータとして意味がある場合もあるし
自前の実装でそういう処理を書ける場合じゃないと無理?
397:デフォルトの名無しさん
14/03/17 19:51:29.13 +0g3AXKA.net
無理だな
398:デフォルトの名無しさん
14/04/12 18:28:31.07 EWT/9iBD.net
IDataObjectにHGLOBALなデータを設定するとき、
一体どのAPIを使ってメモリを割り当てたらいいんでしょう?
伝統的にはGlobalAllocを使うんだと思いますが
LocalAllocを直接使っているコードを見たことがあります。。
399:デフォルトの名無しさん
14/04/12 18:44:11.92 ZtAe8uA3g
そやな
400:デフォルトの名無しさん
14/04/12 18:47:39.61 QTVFiGTh.net
HGLOBALならGlobalAlloc使っとけばいいんじゃない?
Win16と違って、Win32では同じものだけどね。
401:400
14/05/02 09:11:42.05 vd73L/AD.net
とりあえずシェルのカラムにあるやつはなんとか取得できそうです。
IShellFolder2::GetDetailsOf( null, ... をループでまわして取得したローカル名と比較するという力技ですが。
一致した場合にそのインデックスからIShellFolder2::MapColumnToSCIDでPROPERTYKEYが取れました……
402:デフォルトの名無しさん
14/05/06 20:14:34.65 XJoiCw0I.net
OLE スレッド モデルの概要としくみ
URLリンク(support.microsoft.com)
403:デフォルトの名無しさん
14/05/07 13:11:23.49 9Lrwf94O.net
φ(..)メモメモ
EternalWindows - COM
URLリンク(eternalwindows.jp)
温COM知新 (おんこむちしん)
URLリンク(www.asahi-net.or.jp)
COM研究室
URLリンク(atata.sakura.ne.jp)
404:デフォルトの名無しさん
14/05/07 13:19:13.42 9Lrwf94O.net
どとねと
相互運用マーシャリング
URLリンク(msdn.microsoft.com)
アンマネージ コードとの相互運用
URLリンク(msdn.microsoft.com)
405:デフォルトの名無しさん
14/05/14 14:14:24.97 duQE1tkX.net
A synchronous OLE call made by the recipient of an inter-process/inter- thread SendMessage fails with
RPC_E_CANTCALLOUT_ININPUTSYNCCALL(0x8001010D).
URLリンク(support.microsoft.com)
406:デフォルトの名無しさん
14/07/08 15:13:40.82 VCOU0wLj.net
テキストエディタのMeryみたく、自作アプリのマクロを
WSHエンジンで動かせるようにするにはどうしたらいいのでしょうか?
Visual Studio で C++(MFCなし) の場合です。
ヒントだけでもいただけたらと思います。
407:デフォルトの名無しさん
14/07/09 11:49:40.02 Q25RUpED.net
どなたか、いませんか~?
408:デフォルトの名無しさん
14/07/09 13:21:03.55 QQm9iNty.net
いませんよ
409:デフォルトの名無しさん
14/07/09 15:23:34.29 Q25RUpED.net
生存かくにん。 よかった(ハート)
410:デフォルトの名無しさん
14/07/10 06:52:04.27 fp5I0Zvk.net
season quinen age
411:デフォルトの名無しさん
14/07/10 08:28:32.99 hXB94njE.net
COMも、LoadLibraryみたいな形でアプリ内で閉じて使えたらアプリのプラグイン
インターフェースとして使えたのにな。
412:デフォルトの名無しさん
14/07/10 09:47:10.09 1VHW603R.net
>>406
WSH上で動かすんじゃなくてWSHの機能を呼び出すんじゃろ
まずは難しいことを考えずに
コマンドリストを実行できる機能をつけて
そこから改良していけばいいのではないか
凝ったことをやりたいなら構文解析・パーサーをキーワードにして
知識を広げていくのが良い
413:デフォルトの名無しさん
14/07/10 15:23:41.68 1VHW603R.net
それとも
IDispatch::Invoke と IDispatch::GetIDsOfNames を組み合わせて使うとか
そういう話かな
414:デフォルトの名無しさん
14/07/10 17:14:05.85 fp5I0Zvk.net
v8を組み込んで
jsインタプリタ内蔵の
プラグインにすれば良い
415:デフォルトの名無しさん
14/07/13 03:23:13.23 b3Vz6umr.net
>>406
サクラエディタのマクロはWSHだったような気がする
416:デフォルトの名無しさん
14/07/14 15:28:36.63 uZs3XM/U.net
IFileOperation でファイルのショートカットを作成することって出来ないの?
コピー・移動・リンク作成が直交的に作れたら美しいんだけど
417:デフォルトの名無しさん
14/07/14 22:35:59.63 DvBldTQU.net
EXCELをCOMアドインで操作していると、同じ処理をしているにも関わらず、
ある時は数秒で終わるのに、ある時は、何十秒も掛かったりと、挙動が
おかしいのですが、何か解決のヒントありますか?
418:デフォルトの名無しさん
14/07/15 20:35:27.97 UxnDWfjl.net
>>417
COMなんて使わずにこれ使えよ。マイクロソフトご謹製だよ。
URLリンク(www.microsoft.com)
ま、使うとかなり目眩がするけどなwww
419:デフォルトの名無しさん
14/07/21 07:49:19.08 6nmHe42m.net
>>416のシェルを使ったショートカット作成の件だけど、
→作成先フォルダのIDropTarget取得
→ショートカットを作るファイルのIDataObjectをCF_HDROPとかCF_SHELLIDLISTとかの形式で作成
IFolderViewがある場合簡単。
→IDropTargetのDropその他を順番に呼び出す。その時effectをDROPEFFECT_LINKにしておく
みたいなウンコな方法か、ちまちま一個ずつ作るしかないの?
ちまちま一個だとUndoを一度にやってくれないし
もしかしてこのウンコの方法が正統な方法だったりする?
420:デフォルトの名無しさん
14/07/21 07:53:53.45 hvY5HB9k.net
うん
421:デフォルトの名無しさん
14/07/24 19:57:03.53 s9ARWR1P.net
COMによるOffice automationを調べていると
COM/ATLというような用語も見つかるのですが、COMとCOM/ATLというのは
異なる技術ですか?
私の理解では、C++でCOMやる場合は、CoInitializeExやCoUninitializeを使って
やる方式のことだと思っています。COM/ATLというのが分りません。
どなたか簡単に解説お願いします。
422:片山博文MZ悪魔崇拝 ◆T6xkBnTXz7B0
14/07/24 20:19:40.19 BX5qEEGf.net
「active template library」で検索
423:デフォルトの名無しさん
14/08/07 17:34:11.54 utSp7A7J.net
>>421
プログラムが大きくなるとコンパイルに時間がかかるから
共通部分と分けるじゃない? あれが静的ライブラリで lib
さらに共通であちこちのexeで使われるようなものは1度コンパイルしておいて
動的にメモリに読み込んで使えるようにすればいいじゃん これが動的ライブラリで dll
さらに動的ライブラリdllにもC++のオブジェクト構造のような関数以外のものも入れたいなぁ
さらに言語非依存にして、そこで参照回数などのオブジェクトのメモリ管理も加えたCOM技術で作ったdll
COMサーバーという
この外部オブジェクトライブラリを使うのに、CoInitializeExやCoUninitializeを使うのはCOMクライアント
COMクライアントは別にC++でなくてもJavaScriptでもVBでもC#でもPerlでもなんでもいい
COMサーバーは大別してインプロセスサーバー、アウトプロセスサーバーがあるけど
ぶっちゃけ一から書くのはメンドクサイ
そこでライブラリ作ろうか~ということで出来たのがATL/WTL
424:デフォルトの名無しさん
14/08/07 17:50:19.99 oQyOe1xD.net
わっかりやすーい
425:デフォルトの名無しさん
14/08/07 19:32:56.15 zGwpFhqC.net
参照カウントなんてどこで増やしてんの?
426:デフォルトの名無しさん
14/08/07 20:30:34.00 utSp7A7J.net
>>425
参照カウントはIUnkhownが担当してる
なぜ参照カウントが必要かというと使われなくなったオブジェクトを提供するために
dllをメモリに読み込んでいるわけだけど、つかわれなくなったら破棄するため
ちなみに何度も1個だけインターフェースを作ったり破棄したりする可能性のあるCOMは
dllの読み込みや破棄を連続で行わないためにClassFactoryを実装することが薦められている
COMは最初は言語非依存じゃなくて単に動的ライブラリdllにオブジェクト機能を持たせるだけだった
(インターフェイスの階層構造で、仮想ポインタの配列順で実現してた)
だから以前はヘッダが必要だった
つまりC++専用だった
IDispatchというインターフェイス名でを動的に関数ポインタを取得できるインターフェイスを作ることで
プログラム内にインターフェイス名を書くだけでよくなり言語非依存になった
従来の関数ポインタ順とは別にIDispatchを両方用意することをディアルインターフェースという
このあたりからOLEとか呼ばれるようになった
さらにこのインターフェイス名やGUIDはOS(というかレジストリ)に記録するものなので
Windowsアプリからはどこからでも利用できるはず・・・・
それならブラウザ内の埋め込みスクリプトからも利用できるようにしようということで ActiveX と名前を変え
ActiveXサーバーを作るものだから ATL(Active Template Library)なんだと思う
427:デフォルトの名無しさん
14/08/08 01:05:55.34 hqeBSYtp.net
COMはレジストリ登録必須じゃなくて従来のdllと同じようにアプリケーションに閉じた形で使えたら
もう少し使いでがあったんだがなぁ。
428:デフォルトの名無しさん
14/08/08 01:12:38.28 B23vVFp/.net
>>427
dllをLoadLibraryして関数呼べばCOMオブジェクト作れるでしょ?
レジストリ登録はCoCreateInstanceでCOMオブジェクト作るなら必要ってだけで
自前でやる分には何の問題もない
429:デフォルトの名無しさん
14/08/08 01:27:40.29 hqeBSYtp.net
なるほど、自分でDllGetClassObject呼んでやればいいのか。
もう使うことはないだろうが、参考になった。
430:デフォルトの名無しさん
14/08/08 04:42:26.72 1UU7vf/D.net
>>426
すべてが行き当たりばったりなんですね
431:デフォルトの名無しさん
14/08/08 07:00:09.81 /GOXeWKw.net
>>423
細かい突っ込みだが WTL は COM と関係ないべ
432:デフォルトの名無しさん
14/08/08 09:24:29.43 gW33htdT.net
概出かも知れませんが
URLリンク(keicode.com)
URLリンク(keicode.com)
433:デフォルトの名無しさん
14/10/23 13:56:20.92 ISc0F2Qf.net
OLEオブジェクトにゼロデイ脆弱性、Microsoftが暫定対策プログラムを公開
URLリンク(www.forest.impress.co.jp)
434:デフォルトの名無しさん
14/11/07 16:14:18.00 tCwEoRvN.net
分散オブジェクトは距離に応じた最適な大きさ(機能)があって、
一律の仕組みにすることが最良ではなかった。
435:デフォルトの名無しさん
14/12/06 08:07:09.24 1X8GhzUe.net
>>430
だがそれがいい
436:デフォルトの名無しさん
14/12/08 00:18:29.73 imKvrg71.net
COMは.NETの登場で廃れると思ってたが結局10年経っても廃れなかったな、ネイティブコードの言語が健在だから
437:デフォルトの名無しさん
14/12/08 10:11:02.56 rVPpfxjW.net
非同期処理には向いてないっぽい
438:デフォルトの名無しさん
14/12/12 09:04:26.82 s5Npqjiu.net
DCOMの非同期版みたいなのをMSが考案してMSJかMSDNマガジンでそれを読んだが、全く流行らなかった。名前も思い出せないわ。
439:デフォルトの名無しさん
14/12/12 11:51:31.03 RkbkbG+A.net
結局、MS Office は .NET では書かれないんだからな。そりゃCOMとOLEが残るわな。
440:デフォルトの名無しさん
14/12/12 11:55:33.92 r3Fvlg1D.net
OOOとかLibreOとかGoogleSpreadsheetとかで間に合うのに
なんでみんな有料のものを喜んで買うんだ
441:デフォルトの名無しさん
14/12/12 12:16:02.48 j/Rc/sNK.net
MS自体がデスクトップアプリで.NETなんか使わんと言ってるようなもんだからな
442:デフォルトの名無しさん
14/12/13 00:14:39.65 pBf+dW7w.net
DLLとしてのCOM実装は実行オーバーベッドもないし、それでいてコンポーネントベースのオブジェクト指向を実現できるからな、シンプルでよく出来てる
流行り廃りではなく、ネイティブコードならいつまでも使い続けらる技術だよ
.NETには何の魅力も長所も感じない
動作が遅い、デフォで導入されてない.NETフレームワークのインストールも、OSに任せればインターネット接続が要るし、丸ごと再頒布するにはデカ杉
443:デフォルトの名無しさん
14/12/13 00:17:26.75 hYWK5mUP.net
最近のOSには入ってるしインストールの手間はないだろ
444:デフォルトの名無しさん
14/12/13 00:25:07.03 pBf+dW7w.net
Win8からは.NET fxはVer4.5しかインストールされてないよ、デフォでは
.NET3とか2のエンジンは、Windows Featureのon/offの所からから明示的に導入しないと、.NETランタイム不在と認識される
.NET4は3や2の代用にはならない
445:デフォルトの名無しさん
14/12/13 00:34:37.63 pBf+dW7w.net
.NET fx2の再頒布モジュールは30~40MBでたいして大きくはないんだけど、それを製品に添付してインストールしようとすると、Win8はそれを利用しないんだよね
確かにインストールは開始するんだけど、持ち込んだ.NET fx2は古すぎて気に入らないのか、無視してネットからDLしようとする
かといってもっと新しい.NET fx2再頒布モジュールがある訳でもない
446:デフォルトの名無しさん
14/12/13 04:28:04.73 jrsNMnhJ.net
何がんばっちゃってんのこいつ?
447:デフォルトの名無しさん
14/12/13 06:14:24.22 KcZztYF+.net
URLリンク(blog.trendmicro.co.jp)
448:名無しさん@そうだ選挙に行こう
14/12/14 11:37:06.17 X+6lyliS.net
.NETからDLL呼ぶためにはP/Invokeを手で書かないといけないけど、COMDLLならTLBからインタロップ自動生成してるから楽
まあ普通のDLLもIDLファイル作っとけばいいんだろうけど、普通やらないもんな
449:デフォルトの名無しさん
15/01/02 20:24:42.85 mlj15zVW.net
Inside COM(日本語版)って結構高く売れんのかね?
450:デフォルトの名無しさん
15/01/02 20:29:14.43 F7Nf/+TC.net
>>449
今更新規に学ぶ人なんか居ないから売れない
既に理解してる身としてはまだまだ使い道ある技術だけどね
451:デフォルトの名無しさん
15/01/03 01:17:50.23 AuGuhWCh.net
>>449
読んだのはだいぶ前だけどそこそこ勉強にはなったな
COMの利点はC++で作ったDLLを他の言語から使えるって事かな
OSの基本機能はC++で実装する事がほとんどだろうからCOM自体は永久に無くならんだろうね
452:デフォルトの名無しさん
15/01/03 11:28:31.16 duDbuP4G.net
ステマ乙
453:デフォルトの名無しさん
15/01/03 15:18:55.60 AuGuhWCh.net
>>452
ステマって誰が儲かんだよw
ま、いい売り文句を言えたと理解しておこう
454:デフォルトの名無しさん
15/01/06 08:32:22.24 c/PNiN5K.net
元々はC++のvtblを巧みに利用したインターフェース志向の技法で、DLLというコンポーネント分散によって言語依存が消えた
でBasic言語にC++のvtbl構造を模倣する仕組みを入れてCOMをネイティブにあつかえるようにしてVBAが出来た
てことなんだろうと思う
455:デフォルトの名無しさん
15/01/06 23:31:34.41 KFlyuGQs.net
>>454
VBからCOMが使えるのは間違い無いが、VBから使う時は名前(文字列)によるメソッド検索をしてると
Inside COMに書いてあった気がする (QueryInterfaceだっけ?)
どっちにしても、言語に依存しないのはいい事だ
LinuxはC言語が唯一のインターフェースだから、そろそろ言語非依存のインターフェースが普及してほしいよ
候補は色々あるけど、どれも普及はしてないな
456:デフォルトの名無しさん
15/01/06 23:34:43.36 C2mmH5Le.net
IDispatchだろ
457:デフォルトの名無しさん
15/01/06 23:47:22.80 KFlyuGQs.net
>>456
すまん…スゲー昔の記憶だけ書き込んでた…
反省はしてない
458:デフォルトの名無しさん
15/01/06 23:50:36.05 kiKfNKwr.net
>>456
だね、俗に言うレイトバインディング
VB4まではそれしか使えなかった
459:デフォルトの名無しさん
15/01/07 00:33:09.37 A8Vu2ukb.net
>>455
Win32だってC言語ベースのAPIだからね
DirectXとか一部だけでしょCOMなのは
C++の抽象クラスとvtblをつかったポリモーフィズム技法をDynamic Libraryに適用すればCOMもどきはできるんじゃないかな
WindowsでのCOM DLLみたいに、OSからの認識規則なんかを誰かが決めてやらないとダメだけど
460:デフォルトの名無しさん
15/01/07 02:06:30.69 HBIMK+Li.net
ORBとかCORBAでしょ
XPCOMとかもあったけどLinuxでは結局どれも流行らなかったのかな
Linuxだと普通GPLでソース公開だから、そんなもの使わなくてもスタティックリンクでokってことなのかもな
461:デフォルトの名無しさん
15/01/07 07:25:24.74 nx6cbjbg.net
>>449
Inside OLE(日本語版)がAmazonで良い値が付いてるな
売ろうかw
462:デフォルトの名無しさん
15/01/07 08:53:21.20 v+HQiVT1.net
初期のOLEはCOMではなくDDEで動いてたんだっけ
OLEはアタマが付いていかなくて最後まで仕組みを理解できなかったな
463:デフォルトの名無しさん
15/01/07 09:04:35.98 7s8hjn62.net
いまはwebAPI全盛だな
464:デフォルトの名無しさん
15/01/09 00:37:23.61 5zBZY3tC.net
>>460
Linux上だと↓これだけあるかな
CORBA (Orbit2 GNOMEが使ってた)
XPCOM (Firefox)
UNO (OpenOffice.orgとその派生)
D-Bus
よく考えたらD-Busもコンポーネントモデルとも言えるしかなり普及してたよ
つう事でLinuxにはD-Busがあると言えるかな
465:デフォルトの名無しさん
15/04/04 22:47:14.80 ActYb9Xv.net
ActiveXコントロールは死んだ
URLリンク(www.artonx.org)
466:デフォルトの名無しさん
15/04/05 09:35:59.42 Y8CRHpsW.net
クソみたいな文章だな
世の中にひり出すまえに推敲しろ
467:デフォルトの名無しさん
15/04/07 19:42:58.87 qktNI4KL.net
COMは死なぬ。COMこそ人類の夢だからだ
468:デフォルトの名無しさん
15/04/07 23:02:11.04 Bchxa3Il.net
>>467
COMってマンコと同じなんだなw
469:デフォルトの名無しさん
15/04/08 19:44:02.14 5pE9Fokq.net
>>468
つまりは、都市伝説だといいたいのか
470:デフォルトの名無しさん
15/05/07 22:55:18.82 yfN65J+v.net
ActiveXコントロールがIEのためだけのものだという誤解を解く方法
471:デフォルトの名無しさん
15/05/18 20:25:05.77 oJXHJ+WI.net
次世代ブラウザEdge関係のCOMインターフェイスってどうなるのん?
472:デフォルトの名無しさん
15/05/28 17:06:44.48 qrMVO/gn.net
提供されないと思われ
473:デフォルトの名無しさん
15/05/28 17:47:37.58 e6ztGmIB.net
じゃあオートメーションでブラウザが必要なときはどうすんのさ
474:デフォルトの名無しさん
15/08/23 09:56:27.24 cZ8t4prN.net
Microsoft Edge、WebDriver サポートを発表
URLリンク(buildingedge.blogspot.jp)
475:デフォルトの名無しさん
15/08/23 10:34:40.27 hZLJ7+aO.net
スレリンク(tech板:433番)
476:デフォルトの名無しさん
15/08/28 22:37:54.12 opvHfyoQ.net
[Windows 10]UWPアプリでWebViewコントロールを使ってみた。
URLリンク(www.ka-net.org)
477:_
15/09/05 13:29:13.46 b0+gtEMA.net
a
478:デフォルトの名無しさん
15/11/10 12:17:00.27 aBSI5Ff+.net
初学者なんですが
HRESULT hageMethod( IHoge **ppHoge )
{
*ppHoge = NULL;
IHoge *pHoge;....
pHoge->QueryInterface(IID_PPV_ARGS(ppHoge ));
pHoge->Release();
}
このQueryInterfaceのところってなにやってるんですか?
同じ型のコピーを作ってるみたいな感じ?
pHogeを直接返せないとかですかね
479:デフォルトの名無しさん
15/11/11 20:40:15.01 RY0eiki2.net
HRESULTを返してない不完全なコードに見えるし
おれにもさっぱりわからんけど
480:デフォルトの名無しさん
15/12/03 11:05:36.09 IgpEN7lw.net
シェルのコンテキストメニューハンドラーを作ってるんですが、
ショートカットファイル(.lnk)を受け取ったとき、IDataObjectの中にリンクファイル自体じゃなくて
リンク先のファイルが入っています。
リンクファイル自体が欲しいんですが
この動作を制御することってできないんでしょうか?
481:片山博文MZ ◆T6xkBnTXz7B0
16/04/08 19:04:18.35 eaIwZ6It.net
URLリンク(github.com)
アンパンマン、新しい顔ができたよ!
482:デフォルトの名無しさん
16/04/08 20:11:51.90 BALYf2ws.net
>>481
URLリンク(katahiromz.web.fc2.com)
蟻さん好きなの?