COM

1IUnkonwn2007/01/10(水) 20:13:15
いざ語れや

2Iknow2007/01/10(水) 20:15:35
嫌だね。

3デフォルトの名無しさん2007/01/10(水) 22:50:49
関連スレ
どうしてCOMは即死したのか
ttp://pc10.2ch.net/test/read.cgi/tech/1143171172/l50
【OLE】オートメーション総合スレ【ActiveX】
ttp://pc10.2ch.net/test/read.cgi/tech/1137771139/l50
一応
Win32API質問箱 Build48
ttp://pc10.2ch.net/test/read.cgi/tech/1166172047/l50

4デフォルトの名無しさん2007/01/10(水) 23:01:55
何となく偉くなった気がする15の夜

5デフォルトの名無しさん2007/01/10(水) 23:19:39
【ネガティブ派遣根性チェック】

3つ以上、思い当たる点があればアナタの性格はひん曲がっており、ネガティブ負け組人生を歩んでいます。

□派遣先の社員の意見にはたとえ間違っていても反対しない
□派遣先から「いつまでもここで仕事してくださいね」と言われるようになりたい
□自社に仕事を持ち帰れるように言われるとムカつく
□自社で仕事なんてできるわけがない
□派遣/受託の差異を指摘する人間はムカつく
□派遣先には仕事だけでなく自分のプライベートについても指示して欲しい
□自分の月額金額を知らない
□派遣先社員より自分の生涯収入が低いのは当然だ
□派遣先に尻尾を振り、いつまでも一緒に仕事をすることが大切だ
□今のプロジェクトが終わっても同じ派遣先に常駐したい

6デフォルトの名無しさん2007/01/11(木) 22:05:26
          ヽ / /⌒\
         /ヽヽ|/⌒\ii|\
       / /ヾゞ///\\|
       |/   |;;;;;;|/ハ \|
             |;;;;//⌒ヽ
             |;/( ^ω^) >>1おっおっおっ乙枯ー
.           |{ ∪  ∪
             |;;ヾ.,____,ノ
             |;;; |
             |;;;;;|
             |;;;;;|

7デフォルトの名無しさん2007/01/12(金) 00:45:10
COMの本、死ぬの早すぎ
もうちょっと刷ればいいのに

8デフォルトの名無しさん2007/01/16(火) 17:05:09
一通り仕組み頭に入れとけばそれ以上深い話があるでもなく
あとは使う部品のマニュアル嫁としかいえないからなw

9デフォルトの名無しさん2007/01/16(火) 17:12:56
簡単に言えば、異なる言語間で共通に使用できるだけで、
異なる環境での使用が困難だったからw
(MS仕様のOSでないと使えない)
Javaの逆を狙って、見事に大ハズレしただけ

もうMSには、新技術を提起して欲しくない。
5年持ったためしがないんだもの・・・・

10デフォルトの名無しさん2007/01/16(火) 18:00:56
COMは傑作なんだけど。馬鹿にはわからないのが残念でならない

11デフォルトの名無しさん2007/01/16(火) 18:35:27
馬鹿にも分かるものこそが真の傑作だとは思わんか?

12デフォルトの名無しさん2007/01/16(火) 18:52:52
comの基本概念は、次の.NETに受け継がれてるけど(当たり前の話だが)、
その設計の具体的要素(インターフェースの呼出設計など)のほとんどは
破棄されて受け継がれず、結局NETフレームワークの大部分は、
JavaVMを参考にして設計された。。。

>>10の様な知ったか馬鹿信者がいる限り、MSはまた独自のポンコツアーキテクチャを
世に送り出して、世界中のエンジニアを煙に巻く過ちを繰り返すだろう。

13デフォルトの名無しさん2007/01/16(火) 19:08:51
>>12
.NETの有り様からするとCOMが素晴らしいということを言いたいのですね?

14デフォルトの名無しさん2007/01/16(火) 19:22:44
>>9
COMは10年以上現役だろ
むしろ.NETのほうがヤバイ

15デフォルトの名無しさん2007/01/16(火) 19:25:08
というかwindows自体がCOMの塊だろ。
winが続く限り生き残るだろ。

16デフォルトの名無しさん2007/01/16(火) 19:34:37
>>9
無知乙

COM はMicrosoft Windows Distributed interNet Application (Windows DNA)アーキテクチャにコンポーネント テクノロジを提供し、
Web ベースとクライアント/サーバー アプリケーションを単一のアーキテクチャに統合することを可能にします。
COM を使用することにより、開発者は任意の言語で、任意のネットワークを介して相互作用できる分散コンポーネントを作成することができます。
COM は、Solaris、HP-UX、DEC UNIX、Siemens Nixdorf SINIX など、他のプラットフォーム上のコンポーネントとの相互運用性も提供します。

17デフォルトの名無しさん2007/01/16(火) 19:36:00
CLSIDがうざい
128ビットの癖にたまに被るし

18デフォルトの名無しさん2007/01/16(火) 19:37:05
COMの失敗は名前だけ

19デフォルトの名無しさん2007/01/16(火) 19:47:43
検索できねー

20デフォルトの名無しさん2007/01/16(火) 19:52:11
>>14
Windowsの枠組み内でしか生きられないメジャーだがローカルな技術としてな。。。

>>16
>他のプラットフォーム上のコンポーネントとの相互運用性も提供します。
だから、これが上手くいかなかったんだよ!
知ったかは氏ね

21デフォルトの名無しさん2007/01/16(火) 20:07:52
怒りっぽい人ですね

22デフォルトの名無しさん2007/01/16(火) 20:10:14
16はすぐ詐偽に引っかかるタイプ

23デフォルトの名無しさん2007/01/16(火) 20:12:17
>>16 は単に MS のページか
どっかの解説サイトからとってきただけなんじゃないの

24デフォルトの名無しさん2007/01/16(火) 20:21:00
COMを理解するために必死でC++の仕様を勉強した時期がありました。
嫌な思い出です。

25デフォルトの名無しさん2007/01/16(火) 20:54:51

26デフォルトの名無しさん2007/01/16(火) 21:02:02
>>5年持ったためしがないんだもの・・・・

COMもOLEも、もうすぐ20歳ですが?

27デフォルトの名無しさん2007/01/16(火) 21:50:47
OLEの定義自体が、過去に二回もコロリと変わってる。
OLE1.0時代は、ただその略名通り(異アプリ間のデータ交換)の技術だったのが
OLE2.0時代(COM誕生)には、一つのアーキテクチャの総称だと突如宣言してる。
しかし、ActiveXの誕生と共に「やっぱりただのLink&Embedでした」とまた変えてる。
あまりに節操がない、と言うかエンジニアを舐めてる

28デフォルトの名無しさん2007/01/16(火) 22:02:54
アパートメントからしてよく分からん。
結局STAでも、他のスレッドからアクセスしていいんだよな。
単に、プロキシ・スタブを介するからMTAに比べると
性能が若干落ちるってことだよな??

29デフォルトの名無しさん2007/01/16(火) 22:52:16
DirectXもCOM

30デフォルトの名無しさん2007/01/16(火) 22:53:09
その代わり排他制御をしなくて済む(プロキシ・スタブがメソッド呼出をキューイングするため)という利点がある。

31デフォルトの名無しさん2007/01/16(火) 23:01:30
その代わり、Read Writeパターンが使えないのでサーバーパフォーマンスが
大幅に落ちるという欠点もある

32デフォルトの名無しさん2007/01/17(水) 17:04:18
ActiveX 〜犠牲者たち〜

33デフォルトの名無しさん2007/01/17(水) 22:48:58
>>31
read write パターンって何ですか?
COMは情報が少なくて困る

34デフォルトの名無しさん2007/01/17(水) 22:58:26
名前までわかってるんだから検索しろよ
つーか名前を付けたことがデザインパターンの最大の功績と言っても過言ではない

35デフォルトの名無しさん2007/01/18(木) 00:03:23
なんだデザインパターンか

36デフォルトの名無しさん2007/01/18(木) 05:00:46
>>35
こーゆーのがエンジニアかと思うと、なんか情けなくなってくるね

37デフォルトの名無しさん2007/01/18(木) 22:50:08
Java SwingとOLEとCORBA(にGUIコンポってあるの?)をJava上で手間なくリンクしたい。
ちょうどIEコンポーネントみたいな感じでOS毎の似たような部品を再利用したいんだ。

38デフォルトの名無しさん2007/01/18(木) 23:03:05
>>36
なんなんだえらそうに
デザパタ厨かよwwww

39デフォルトの名無しさん2007/01/19(金) 07:07:41

ネーミングパターン

こきおろしパターン

ぐぐれパターン

話題逸らしパターン


40デフォルトの名無しさん2007/01/22(月) 18:43:51
過疎

41デフォルトの名無しさん2007/01/31(水) 13:09:50
CON

42デフォルトの名無しさん2007/01/31(水) 13:46:23
OCN

43デフォルトの名無しさん2007/03/09(金) 16:56:26
IE用のツールバー作ろうとして、
IDeskBandを継承したクラスのSetSiteで
パラメータからQueryInterfaceでIID_IOleWindowを
取得しようとしたんだが
E_NOINTERFACEエラーが出る。
なんか心当たりある方いらっしゃいませんか?

44デフォルトの名無しさん2007/03/09(金) 22:46:43
もしかしてIE7なのが原因?
開発環境はVS2005です。

45デフォルトの名無しさん2007/03/09(金) 22:54:14
どっと混む

46デフォルトの名無しさん2007/03/10(土) 00:35:59
下手なシャレはよしなしゃれ

47デフォルトの名無しさん2007/03/10(土) 01:27:30
>>43
IOleWindowって自分自身じゃね?

48デフォルトの名無しさん2007/03/10(土) 10:47:13
>>47
http://idm.s9.xrea.com/ratio/2004/06/17/000104.html
ここに

>ツールバーがactivateされるとき、 IObjectWithSite#SetSite が呼ばれる。
>パラメータのIUnknownインターフェースは、IOleWIndowをquery可能なので、
>これを使ってツールバーの親となるウィンドウの情報を取得する。
>MSDNのサンプルでは、このタイミングでツールバー本体のウィンドウを生成している。

ってあって、MSDNでもそうなってたんだが。

49デフォルトの名無しさん2007/03/10(土) 15:34:41
>>48
IOleWindowとれたよ
親のReBar32WindowのハンドルもGetWindowで正しくとれてる。

Vistaだけども。

50デフォルトの名無しさん2007/03/10(土) 19:28:49
なんでだろ・・・
解決したら報告します。

51デフォルトの名無しさん2007/04/13(金) 18:44:41
COMCOMCOMCOMCOMCOMCOM
COMCOMCOMCOMCOMCOMCOM
COMCOMCOMCOMCOMCOMCOM
COMCOMCOMCΟMCOMCOMCOM
COMCOMCOMCOMCOMCOMCOM
COMCOMCOMCOMCOMCOMCOM
COMCOMCOMCOMCOMCOMCOM
COMCOMCOMCOMCOMCOMCOMage

52デフォルトの名無しさん2007/04/16(月) 19:50:58
ATLの属性をつかってテキストで簡単にCOMを作るチュートリアルやってみたが、
あれATL7.0じゃないと動かねーじゃねぇか

53デフォルトの名無しさん2007/04/25(水) 18:19:04
ネットの情報だけでCOMサーバを勉強するのって無理ある?

MFCでコントロール作ってそれをコンテナに組入れるのはやったことあるけど
ATLで見えないWinsock+COMサーバ.exeに挑戦中でCOMとソケット通信をどのように
連携すればいいのかで色々悩んだ。
結局ウィンドウメッセージとグローバル変数を駆使してなんとか目処がついた
けど、もっとスマートなやり方が載ってる参考書はないんでしょうか?

54デフォルトの名無しさん2007/04/26(木) 12:40:13
>>53
ウィンドウを持たないCOMオブジェクトで、Winsockの非同期やるんなら、イベント使った方が
良いと思う。

55532007/04/26(木) 18:32:04
>>54
ありがとう。
>イベント使った方が良いと思う。
のイベントとはウィンドウメッセージとの理解でよいですか?

もう一点教えていただきたいことがあるのですが、
ブラウザに貼り付けたコントロール(ocx)からATLで作ったCOMサーバ.exeに
Dispatchしてメソッドを呼ぶことができたのですが、
ブラウザを閉じるとCOMサーバ.exeも終了してしまいます。
ブラウザを閉じてもCOMサーバ.exeを常駐させたいのですが
クライアント側/サーバ側どちらで対応すればよいのかさえ検討がつきません
どのようにすればよいかご存知でしょうか?

56デフォルトの名無しさん2007/04/26(木) 19:14:00
よくない。WSAEventSelect使えって話でそ。

57532007/04/26(木) 23:21:36
>>56さん 了解です。

引続き>>55についてご存知の方お力を貸してください。
お願いします。

58デフォルトの名無しさん2007/04/27(金) 10:49:59
DLLに汁

59デフォルトの名無しさん2007/04/28(土) 18:07:15
DCOMの実装に関する参考書や参考サイト知りませんか?

60デフォルトの名無しさん2007/04/28(土) 18:31:14
↑クライアントとサーバ両方の実装についてです。
言語は問わないのですが、できればVCについてお願いします。

61デフォルトの名無しさん2007/04/29(日) 02:27:45
>>51
なにぃっ、Mageだと!?貴様鉄道板住人だな!

62デフォルトの名無しさん2007/05/03(木) 12:01:20
COMスレってなんでこんなに過疎ってるの?
それについて議論しよう

63デフォルトの名無しさん2007/05/03(木) 12:01:47
ネットでCOMについて記述してるサイトもあんま見ない

64デフォルトの名無しさん2007/05/03(木) 12:35:53
COMに比べると似たようなことはドトネトの方が簡単にできるから
もう存在意義がなくなってんじゃないの?

65デフォルトの名無しさん2007/05/03(木) 12:38:08
COMを使う舞台がエクセルVBAなんかに移ってるからな

66デフォルトの名無しさん2007/05/04(金) 00:28:42
なんで?comサーバでの利用機会とか無いの?
アプリ間でデータ交換とか外部アプリへの機能提供とかの場面で利用価値あると思うけど

まあ、代替手段は色々あるし、わざわざムズい技術を覚えてまでcomを利用する必要もないか
特に開発人口が多い業務系開発だったら尚更だな

67デフォルトの名無しさん2007/05/04(金) 00:43:47
業務系ならなおさら何でもエクセルでやりたがる
もしくはCOBOL

68デフォルトの名無しさん2007/05/04(金) 14:13:48
PlatformSDKにもMIDLはあることだしSxSアセンブリでのCOMならいくらかハードルも低いし、C++での共有ライブラリ作成という観点でもう少しひろまってもいい気がするんだけどな。
ActiveXでもOLEでもなくDLL+αとしてのCOMっていう観点でさ。

なんにしてもMFCやATLで新しくコンポーネント作るってのはなくなっていくんだろうな。せいぜいVB6でか.NETアセンブリからタイプライブラリ作る位になるのか。

69デフォルトの名無しさん2007/05/07(月) 18:10:27
ATLでアウトプロセスサーバを作っているのですが、

親ウィンドウのメッセージループから自exe内のCOMオブジェクトを
どのように参照すればよいかわかりません。
マクロで展開されたポインタがどこかにあると思うのですが
どのように参照すればよいでしょうか?

ATL初心者なので質問の表現がおかしいかも知れませんが
よろしくお願いします。

70692007/05/07(月) 19:26:22
デバッガで見てみたら
Choge *a=(Choge*)&ObjectMap[n];
で参照できました。
で、いいですか? ←直感的にやったらできたので不安ですが・・・

71デフォルトの名無しさん2007/05/08(火) 03:09:34
いいよ〜いいよ〜いいよ〜

72デフォルトの名無しさん2007/05/08(火) 12:19:59
もー。ATLイベントの実装の仕方がいまいちわからん。

73デフォルトの名無しさん2007/05/08(火) 12:45:22
イベント出す側だったらウィザードが殆どやってくれるからあまり意識したことないけど?

74デフォルトの名無しさん2007/05/08(火) 13:32:57
イベント出す側なんですが、
クラスビューからメソッドと接続ポイントを追加したんですが
xxxxx.idlとxxxxxCP.hに空のクラスを作るだけで
メソッドの雛形作ってくれないんですよ。

最初のウィザードのときシンプルオブジェクトで作成してるからでしょうか?

75デフォルトの名無しさん2007/05/08(火) 13:42:03
ATLシンプルオブジェクトを追加するとき"接続ポイント"にチェックいれて作れば
クラスビューに IHoge と Libの下に _IHogeEvents が出来ているでしょ
イベントメソッド追加したければ _IHogeEventsで右クリック - メソッド追加で追加できるよ

メソッド追加した後、実装クラス (CHoge) の方で右クリック - 接続ポイントの追加をもう一回
やるのを忘れんな

76デフォルトの名無しさん2007/05/08(火) 14:49:43
で、できました。
>接続ポイントの追加をもう一回やるのを忘れんな
もう一回やったらできました・・・なぜもう一回なのかわかりませんか゛
とにかく今日一日試行錯誤していたのが「もう一回」のキーワードで解決しました。

>>75さんになにかごちそうしたい気持ちでいっぱいです。

77デフォルトの名無しさん2007/05/08(火) 16:24:46
極稀に2chも役に立ったり立たなかったりする

78デフォルトの名無しさん2007/05/08(火) 17:48:04
もう一役お願いします。

イベントを作成したのですが、イベントがクライアントに届きません。
Fire_Hogeを呼びだすときデバッガで追ったら
int nConnections = m_vec.GetSize(); で0が帰ってきて
その下のループの中のpDispatch->Invokeまでいきません。

ソフトの構成としてはアウトプロセスサーバ.exeからブラウザのjavascriptへイベントを発生したいのですが、上記の通りとなり、イベントを渡すことができませんでした。
m_vecが接続を管理するらしいのですが、javascriptからの接続がうまくないのでしょうか?
接続の方法としては<OBJECT>タグにCLSIDを埋め込むようにしてjavascriptでサーバ.exeのメソッドを呼び出すことは成功しています。

79デフォルトの名無しさん2007/05/08(火) 18:41:37
javascriptからEventをAdviseしてあげた?

80デフォルトの名無しさん2007/05/08(火) 20:21:50
>>78
Fire_Hoge()の呼び出しってどうやってます?
多分IHogeの実装クラスCHogeのインスタンスから呼び出してると思いますが、

COMクライアントが作ったCHogeインスタンスから呼ばないとFireできないっす

81802007/05/08(火) 20:30:56
補足:

インターフェースをシングルトンにしとけば作成されるインスタンスは必ず一つなので、
いっそシングルトンにしてしまうとか

つ DECLARE_CLASSFACTORY_SINGLETON

ただこれをやると以下の問題も・・・

http://support.microsoft.com/kb/198834/ja

後は泥臭いやり方しか知らない

82デフォルトの名無しさん2007/05/08(火) 21:07:42
こんな感じなんですが・・・ EventをAdviseとはどのようなことをするのでしょうか?
<SCRIPT language="javascript" for="HogeID" event="HogeEvents(a, b)">
   alert(a);
</SCRIPT>
<OBJECT ID="HogeID" CLASSID="CLSID:XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX">
</OBJECT>

Adviseをお願いします。

83デフォルトの名無しさん2007/05/08(火) 21:08:40
>>80のアンカー間違えました。>>79が正解です

84デフォルトの名無しさん2007/05/08(火) 21:14:49
>>82>>79に対するレスです。
>>83は誤爆です。

>>80,81
ありがとうございます。
参考にさせていただき再び試行錯誤させていただきます。

85デフォルトの名無しさん2007/05/08(火) 21:21:59
>>80
書き忘れましたが、Fire_Hoge()の呼び出しはは
ブラウザ(HTMLに記述したjavascript)からCHoge.exeのメソッドを呼び出して
呼び出されたメソッドの中でFire_Hoge()を呼んでいます。

86デフォルトの名無しさん2007/06/11(月) 15:36:03
質問させてください。
アウトプロセスサーバで
クライアントから呼出して配列データ(BSTR)を取得するメソッドを作成しています。
このときサーバ側ではSafeArrayCreate()でクライアントに渡す
配列データを作成しますが、この配列データはSafeArrayDestroy()で
解放する必要はないであってますか?

根拠としてメソッド内で解放するとクライアントに渡せない。
デバッガで確認したところSafeArrayCreate()のポインタをstaticで保持して
次にメソッドを呼び出したら、ポインタが指しているメモリが壊れていた
(=勝手に解放してくれた)。
ということからこのような結論に至ったのですが、間違ってないでしょうか?

87デフォルトの名無しさん2007/06/11(月) 15:52:36
解放しない。解放したら返せないからね。

今回outprocだから、正確にはマーシャラーが適当にシリアライズしたのち
解放してくれるのでユーザのコードでは(inprocの場合と同様)解放しなくて良い、
というような動作。

逆に「取得した側」は自分で解放する。

88デフォルトの名無しさん2007/06/11(月) 16:04:00
>>87
すばやいレスありがとうございます。

さらに詳しいCOMの内情まで教えていただきまして勉強になりました。
感謝いたします。

89デフォルトの名無しさん2007/07/08(日) 15:55:55
COMについての入門書がありましたら、紹介してくれないでしょうか?
なにせ情報や サンプルがなかなか見当たらないので

90デフォルトの名無しさん2007/07/09(月) 09:14:09
ttp://www.amazon.co.jp/exec/obidos/ASIN/4881356992
これはまぁわかりやすい方。

91デフォルトの名無しさん2007/07/10(火) 20:39:52
わかりやすくなくていいからIEが作れるぐらい
詳しい本は?

92デフォルトの名無しさん2007/07/11(水) 09:08:04
IEってかIEコンポ使ってのタブブラウザみたいなの?
それなら>>90の本とMSDN。
IEコンポ専門に突っ込んで書いてる本はないとおもう。
英語のMSDN読みまくる根性ないと無理。

93デフォルトの名無しさん2007/07/11(水) 20:47:11
いや、IEコンポを使うんじゃなくて、IEコンポ自体を作りたい。
IWebBrowser2を実装して、ActiveXコントロールをホストしたい。

94デフォルトの名無しさん2007/07/11(水) 22:03:14
IEコンポ自体を作りたいなら止めはしないが、MSは他人に実装させるつもりはないはず。
http://msdn2.microsoft.com/en-US/library/aa752127.aspx
> Custom Implementation No

ActiveXコントロールをホストしたいだけならIWebBrowser2を実装する必要は無いぞ。

95デフォルトの名無しさん2007/07/11(水) 23:27:02
mozillaにIWebBroser2の互換インターフェースが存在したような、

96デフォルトの名無しさん2007/07/12(木) 00:21:14
>>94
ぬあー、そうなのか。

>>95
Mozillaのコード見たけど、想像以上に整然としてて驚いた。

97902007/07/12(木) 11:31:55
>>93
だったらATLインターナルがいいかも。

98デフォルトの名無しさん2007/07/15(日) 21:24:58
古きCOM書籍
興味がある方は、復刊リクエストご協力ください

Inside COM
ttp://www.fukkan.com/fk/VoteDetail?no=20887

Essential COM
ttp://www.fukkan.com/fk/VoteDetail?no=38742

99デフォルトの名無しさん2007/07/16(月) 07:43:51
3層アプリでビジネスロジックを
ドメインオブジェクトとして他のマシンに置きたいとき
COMならCOM+が使えるじゃないですか。
.NETだと何を使えばいいのでしょう?

Web Serviceだとサーバ側にインスタンスを作って
継続的に使用できないですよね。
となると.NET Remotingかな。

100デフォルトの名無しさん2007/07/16(月) 08:53:34
>>99
System.EnterpriseServices でCOM+

101992007/07/16(月) 11:31:25
>>100
なるほど!
結局はCOM+ですか。
.NetはCOMをうまく内包しているんですね。
ということは、「.NetになったらCOMは必要ない」
という意見は的外れなんですね。

102デフォルトの名無しさん2007/07/16(月) 15:54:41
COM+はやめたほうがいいんじゃないか?

103デフォルトの名無しさん2007/07/16(月) 21:18:15
>>101
CLR自身がCOMで実装されてるのに、誰だよそんなこと言った奴は。

104デフォルトの名無しさん2007/08/15(水) 00:05:12
現在どのプロセスがどのCOMコンポーネントを使っているか
知る方法はないでしょうか?

105デフォルトの名無しさん2007/08/17(金) 01:49:01
CoCreateInstanceなんかをHOOKしとけば、判るんじゃない?
(直接DLLからインスタンスを生成する方法がないわけじゃないけど)

106デフォルトの名無しさん2007/08/20(月) 22:00:05
COMが流行のキーワードでなくなり、.NETは使いものにならない
ということで、プログラミング環境は90年代前半に戻りつつあるよね。
ホビープログラマとしてはプログラムなんて動けばなんでもいいし。

107デフォルトの名無しさん2007/08/21(火) 08:37:59
確かにC++のシェアが下がったと思ったら、組み込みでC++再来みたいな。

108デフォルトの名無しさん2007/08/21(火) 19:01:55
ウェブプログラミングに飽きて、.NETも何かいまひとつ、そしてC++に戻ってきた。

109デフォルトの名無しさん2007/08/22(水) 22:17:32
COMでは参照カウンタが0になるとすぐに解放されることは
保証されているんでしょうか?

110デフォルトの名無しさん2007/08/24(金) 13:49:34
インターフェイスは参照カウンタ0で開放する規約になっている。
なってない場合バグ。その辺のロジックはATLとかがサポートしてて
直接コーディングすることは少ないから普通は大丈夫。
アウトプロセスの複合サーバーの場合は、
インターフェイスが開放されてもプロセスが終了しないものがある。
WordやExcelがその例。

111デフォルトの名無しさん2007/08/24(金) 14:44:18
IISでASPからActiveX DLLを使った時、ASPでSet obj = Nothing
してもDLLがロックされたままになるのは別の問題ですかね?

112デフォルトの名無しさん2007/08/26(日) 08:22:25

113デフォルトの名無しさん2007/08/26(日) 12:43:19
・COMオブジェクトの参照カウンタが0になったときに、
 そのオブジェクトが消え去る

・あるDLLに属しているCOMオブジェクトの生存数が0
 になったときにそのDLLをアンロードしてほしい

この二つは全く別の話。

114デフォルトの名無しさん2007/09/27(木) 10:42:39
奥深いよね〜COM

115デフォルトの名無しさん2007/09/27(木) 16:33:32
>>107
どの分野でc++のシェアが下がったんだろう

業務系→cobol、j2ee
組み込み系→c、c++、asm

116デフォルトの名無しさん2007/09/27(木) 16:48:30

117デフォルトの名無しさん2007/09/27(木) 18:15:23
>>115
Windows のソフトでわずかだけれども C# が使われ始めているな。
以前ならMFCで書かれていたような奴が。

Sunが横やり入れなければ数年前にJ++で出来ていたことなのにねぇ・・・

118デフォルトの名無しさん2007/09/28(金) 04:52:55
組み込みでC#使ってるひといる?

119デフォルトの名無しさん2007/10/01(月) 09:32:59
VB6の後継はC#だよね〜

120デフォルトの名無しさん2007/10/01(月) 13:13:07
ぽとぺた環境のことか?

121デフォルトの名無しさん2007/10/24(水) 14:50:19
どとねと環境のことだろう

122デフォルトの名無しさん2007/10/31(水) 06:53:00
getUnk(&pUnk1);
getUnk(&pUnk2);
getUnk(&pUnk3);

123デフォルトの名無しさん2007/11/03(土) 15:41:50
pUnkOut->release();

124デフォルトの名無しさん2007/11/03(土) 19:23:29
IUnko

125デフォルトの名無しさん2007/11/05(月) 19:49:15
eco->recycle(unko);

126デフォルトの名無しさん2007/11/05(月) 21:55:35
シェルがCOMをまったく使わなくなる日が来たりするのだろうか

127デフォルトの名無しさん2007/11/05(月) 23:14:29
果たしてそれはWindowsなのだろうか。

128デフォルトの名無しさん2007/11/06(火) 01:23:31
果たしてWindowsのそれはシェルなのだろうか

129デフォルトの名無しさん2007/11/11(日) 22:25:40
IThumbnailCache ってどこから手繰りよせたらいいのん?
IThumbnailProviderからもってくるとキャッシュみないよね?

1301292007/11/12(月) 00:26:45
>IThumbnailProviderからもってくるとキャッシュみないよね?

IShellItem.BindToHandler経由でIThumbnailProviderからサムネールもってくるとキャッシュみないよね?

1311292007/11/12(月) 02:14:14
自己解決しますた
LocalThumbnailCacheでnewしてやればいいのね
ほんとのところCOMを理解してないけど

キャッシュ見るようになって動画のサムネイル早っ

132デフォルトの名無しさん2007/11/13(火) 23:58:24
先週からVisualStudio2005でCOM/ATLの開発始めたCOM初心者なんだけど、
おっそろしい程に参考になる本とかWEBページとか少ないな

ボチボチ進んでるから、なんとかなるとは思うけど、自力で探るのはめんどい

133デフォルトの名無しさん2007/11/16(金) 02:04:59
Essential COMの第一章はPDFになってて結構参考になった

1341292007/11/16(金) 02:13:11
>>133
kwsk

135デフォルトの名無しさん2007/11/16(金) 02:16:20
>>134
http://www.ascii.co.jp/pb/bookmart/pdf/47561/4756130666.pdf
直接の役には全然役に立たないよ
でもこれ読む前はなんでCOMがこんなことになってるのか全然わかんなかった

136デフォルトの名無しさん2007/11/16(金) 02:28:35
>>135
ありがとう。
読んでみる。

137デフォルトの名無しさん2007/11/17(土) 02:14:16
レジストリを使わないCOMがあったら便利だなぁと、そう思った
マニフェスト的なものをヘッダに持って
どう実現するかは知らんけど

138デフォルトの名無しさん2007/11/17(土) 03:36:51
>>137
XP以降ならマニフェストでサイドバイサイドできるよ。

139デフォルトの名無しさん2007/11/21(水) 00:20:03
解放忘れのチェックの仕方とエラー処理の書き方がわからんなあ

140デフォルトの名無しさん2007/11/21(水) 00:48:55
CComPtr
_com_ptr_t

141デフォルトの名無しさん2007/11/22(木) 00:08:27
>>137
海外のライブラリでそれできるやつあるよ

142デフォルトの名無しさん2007/11/23(金) 01:44:45
Registration-Free COM

ttp://www.ailight.jp/blog/sha256/archive/2005/03/29/5437.aspx

143デフォルトの名無しさん2007/12/02(日) 02:36:38
翔泳社の「ATL COMプログラミング」でCOMの勉強を始めたのですが、
VisualStudio2005でATLの「実行可能サーバー」を生成すると
ソースが書籍のサンプルと全然対応しなくて困っております

今の開発環境でCOMの学習用にいい書籍とかありますでしょうか?

144デフォルトの名無しさん2007/12/02(日) 02:49:08
ATL Internals: Working with ATL 8 (2nd Edition)
by Christopher Tavares, Kirk Fertitta, Brent Rector and Chris Sells

とかは2006年だ読んだこと無いけど

145デフォルトの名無しさん2007/12/02(日) 17:22:28
>>143
前に日本語でその手の本を探したけど、結局、見つからなかった。
真面目にサンプル作って解説本でも書いたら売れるかな。
売れないだろうな・・・・

146デフォルトの名無しさん2007/12/02(日) 18:08:07
>>143
俺もその本持ってるけど、COM/ATLの根本的なところは大して変わらないんだし、ATLの側でも
互換性のためATL3.0用のクラス残してるし、それで勉強してみたら?
C++属性なんて最後でいいと思うし、ATL8.0の部分だってATL3.0判ればそう難しくはないんじゃないか?

147デフォルトの名無しさん2007/12/03(月) 00:38:06
>>144-146
皆様ご意見ありがとうございます。
少なくとも日本語の書籍に新しいものはなさそうですね。
英語の本は時間が許せば…と思いますがやはり敷居が高いです。

>>146さんの言うとおりもう少し現状の環境で書籍の内容を確認してみます。

148デフォルトの名無しさん2007/12/05(水) 01:36:09
別環境のVisualC++6.0でATLのプロジェクトを生成し、それを使って演習…

149デフォルトの名無しさん2007/12/14(金) 22:18:03
IDropTarget/IDropTargetHelperを実装したクラスのウィンドウで
ドラッグドロップをしています。

そのウィンドウ上にマウスカーソルがあるときに他のウィンドウを非アクティブのまま
表示するようにしたいんですが、ウィンドウを表示すると元のウィンドウの下に
ドラッグイメージが隠れてしまいます。
(後から表示したいウィンドウもIDropTarget/IDropTargetHelperを実装してます。そっち上では
ドラッグイメージは隠れません)

ドラッグイメージのZOrderをなんとかしたいわけですが、
ヒント等ご存知の方いらしたら教えてくんなましょ

150デフォルトの名無しさん2007/12/15(土) 01:59:23
そのウィンドウと他のウィンドウと元のウィンドウと後から表示したいウィンドウが
どのウィンドウなのかわかんないのでAとかBとか名前付けて書いてくれると嬉しい

151デフォルトの名無しさん2007/12/15(土) 11:39:46
すんません

すべてのウィンドウ: IDropTarget
 ・IDropTargetHelperをもってる
 ・擬似メニューみたいな感じで、擬似サブメニューみたいなウィンドウがポップアップする

A上にドラッグ、A上にドラッグイメージ出る

A上のサブメニューが展開してBを表示( AのDragOverでWM_MOUSEMOVEをA自身にsend。これが原因? )

マウスはA上にあるけど、ドラッグイメージはAの下に隠れてしまう

B上にドラッグ、B上にドラッグイメージが出る

B上のサブメニューが展開してCを表示( BのDragOverでWM_MOUSEMOVEをB自身にsend。これが原因? )

マウスはB上にあるけど、ドラッグイメージはBの下に隠れてしまう
(以下繰り返し)

IDropTargetHelper使わないと正常なんで、諦めるかも……

152デフォルトの名無しさん2007/12/20(木) 16:43:05
mpeg compass.jp
名古屋駅近辺でお話しましょう

153デフォルトの名無しさん2007/12/20(木) 23:05:18
COM初心者です。

CLSCTX_INPROC_SERVERを渡したCoCreateInstanceは
1つのプロセス内に1つのインスタンスを作成するみたいですが、

1つのプロセス内の複数のスレッドでひとつのIIDで指定されたインスタンスを
スレッドごとに作成したいときはどうしたらいいのでしょう。

もしかしてIIDごとに何個つくれるとか決まってたりするんでしょうか

154デフォルトの名無しさん2007/12/20(木) 23:14:33
各スレッドでCoCreateInstanceを呼べばいい。

155デフォルトの名無しさん2007/12/28(金) 13:03:07
Win32スレから誘導されてきますた

IExtractImageを実装したんだけど、2000で動かすと時々フォルダ内の全ファイルに同じ
サムネイルが出るようになる不具合はどう対処したらいいんでしょう。
MSDNのサンプル実装で起きるし、フラグ類いろいろ変えたりマルチスレッド対応にしたり
しても改善せず・・・

156デフォルトの名無しさん2008/01/03(木) 22:27:35
関数型でCOM使いたいんだけど、実装ありまっか?

157デフォルトの名無しさん2008/01/03(木) 23:06:10
あるよ。

158デフォルトの名無しさん2008/01/04(金) 21:05:48
処理系を教えてください

159デフォルトの名無しさん2008/01/04(金) 21:12:55
>>144の本(ATL Internals 2nd Edition)て日本語版出ないのかねぇ。

160デフォルトの名無しさん2008/01/04(金) 22:24:07
>>156
F#なら.NET経由でいけるのでは

161デフォルトの名無しさん2008/01/06(日) 12:47:23
>>135
今更ながらCOMの仕事が入り勉強中助かりました( ´∀`)

すぐに絶版にするなら独占翻訳権を取得しないで欲しい。特にASCII。
それ以上にCOMはもう終わってるのか…(´・ω・`)?

162デフォルトの名無しさん2008/01/07(月) 18:37:25
終わってるというよりは枯れてる・・・と思いたい

163デフォルトの名無しさん2008/01/08(火) 08:38:47
COM無いとウィンドウズ自体起動しないだろ

164デフォルトの名無しさん2008/01/08(火) 09:32:43
インタネッツセキュリティが無いので、DCOMは終わりマスタ。
PDFリーダーとか本当にメジャーなものしか存在が許されないというか。

165デフォルトの名無しさん2008/01/08(火) 22:27:40
>>163
さすがに起動はするwwwwwwwwwww

166デフォルトの名無しさん2008/01/08(火) 22:31:55
デスクトップ(HDESKTOP的な意味で)の表示くらいまではいけるうと思う。

167デフォルトの名無しさん2008/01/09(水) 03:09:25
タスクマネージャとかってCOM使ってる?

168デフォルトの名無しさん2008/01/09(水) 03:41:29
タスクマネージャくらいならパフォーマンスカウンタとかPSAPIくらいで大丈夫じゃねーか

デスクトップの表示まで行くと無理だな
IShellFolder

169デフォルトの名無しさん2008/01/09(水) 13:36:00
アプリケーションのタブでアイコンを表示してるから
COMつかってるんじゃね

170デフォルトの名無しさん2008/01/09(水) 13:43:28
な に が い い た い ?

171デフォルトの名無しさん2008/01/10(木) 02:32:53
アイコン表示してるのはリストビューの標準機能とイメージリストコントロールでCOM関係ない

172デフォルトの名無しさん2008/01/10(木) 02:40:58
VistaはCOM無しでは動かないかも
VistaのユーザーモードドライバはCOM仕様だから

173デフォルトの名無しさん2008/01/10(木) 08:22:49
>>164
http://itpro.nikkeibp.co.jp/members/NBY/techsquare/20030717/3/?ST=security

やべえ今までしらんかった
Administratorでログオンすると危険にさらされるんだね。

174デフォルトの名無しさん2008/01/10(木) 18:28:10
そもそもDCOMをルー田子えさ攻め

175本田2008/01/17(木) 17:43:02
>COMプログラマの解説書
>Crispin Goswell
>Microsoft Office Product Unit
>1995年 春
>1995年9月13日改訂
http://msdn.microsoft.com/library/ja/default.asp?url=/library/ja/jpdncomp/htm/com_co.asp
>抄録
>この解説書は、
>Microsoft(r) OLE Component Object Model(COM)オブジェクトを作成し、
>効果的に使用する方法を説明しています。
>例文はほとんどCで書かれていますので、実際に何が行われているかが、大変分かりやすく示されています。
>プログラマの中には、オブジェクトを実行するためにC++を好んで使用する人もいるでしょう。
>C++プログラマの観点からCOMの概念および基本的な使用法を論じているのは
>Kraig Brockschmidt著のInside OLE (第2版)(MSDN Library(Books))です。
>COMとは何か、またその設計や哲学の後ろにある動機付けをより理解する事に興味がある読者なら、
>Component Object Model Specification(MSDN Library(Specifications))の最初の2章を読んでください。
>第1章には簡単なイントロダクションを、第2章では徹底的に概要を解説してあります。
>この解説書ではInside OLEとCOM Specificationにある情報を、
>COMオブジェクトを実装する良い方法をいくつか示しながら解説するようにしてあります。

176デフォルトの名無しさん2008/01/21(月) 23:07:01
VistaのExplorerで
デフォルトのIExplorerCommandProviderって取得できねーのかな?
なんかあの緑色のコマンドバーのなかのコマンドって余所から実行できないんで困る

プレビューペインとかナビゲーションペインを出し入れしたいんだけど。

177デフォルトの名無しさん2008/01/24(木) 00:31:42
俺はしたくないしされたくもない

178デフォルトの名無しさん2008/01/28(月) 17:29:23
タスクバーのツールバー(IDeskBand)をCOMサーバーとして作成しています。
ツールバーを表示させたとき、エクスプローラーごとダウンして
バグの発生場所を特定できません。
空のツールバーの作成・起動には成功したのですが、外部から取得したデータを
反映させる機能を追加したところ、ダウンする現象が発生しています。

COMサーバーのデバッグ方法をご教授ください。
環境は、WindowsVista、VC++2008EE、ATLおよびMFC不使用です。

179デフォルトの名無しさん2008/02/06(水) 23:57:12
COM・・・
サーバ上のやつは取得できて、動かせます
クライアントからサーバ上のCOMを使いたい・・・
IDとかは設定してるのだが・・・
検索3時間してもわからず、ググるキーワードを2,3教えて下さい (-_-)

180デフォルトの名無しさん2008/02/07(木) 00:19:02
>>178
Visual C++なら、アタッチすれば、あとは普通のアプリケーション同様に
ブレークポイントで止めて、変数見たりステップ実行したりできるぞ。

>>179
日本語でおk

181デフォルトの名無しさん2008/02/07(木) 01:43:49
エッチ スケッチ

182デフォルトの名無しさん2008/02/07(木) 01:46:42
>>179
きめえから市ね

183179 レス禁止2008/02/07(木) 21:45:43
とりあえず2,3単語が分かりました、消えます

184デフォルトの名無しさん2008/02/08(金) 03:48:03
>>179
DCOMの設定したら使えるけど危険すぎ。
閉じたネットワークでだけ使うものだよあれは。

185デフォルトの名無しさん2008/02/08(金) 17:32:50
ネットワークに関係なく、
単にコンポーネントの提供する側と利用する側という意味で使っているかもよ。
179の書き方ではどういう意味か分からないけど。

186デフォルトの名無しさん2008/02/08(金) 21:26:27
俺もそうかと思ってたので>>184の洞察力に感服

187デフォルトの名無しさん2008/02/21(木) 16:24:48
このスレに住まわれるCOMの精霊様、
どうか以下の件についてお答えくださいませ。
VS2005でATLプロジェクトでWindowsサービスを作りましたが、
PreMessageLoop()の中で、以下のコードが無いとサービスが起動しません。
-----
if (SUCCEEDED(hr) && !m_bDelayShutdown)
 hr = CoResumeClassObjects();
-----
しかしサービスに1つでもCOMインタフェースを追加すると
CoResumeClassObjects()がS_OK以外を返すようになります。
そこでCoResumeClassObjects()を呼び出さないようにしても、
サービスは起動してくれます。

なぜCOMインタフェースが自分で追加していない状態では
CoResumeClassObjects()を呼ぶ必要があり、
COMインタフェースを追加すると呼ぶ必要がなくなるのでしょうか?

188デフォルトの名無しさん2008/02/22(金) 01:05:40
Effective COMには
・1つ以上のクラスをエクスポートしてるサービスが最初のCoregisterClassObjectの呼び出しで開始してしまうと、それらのクラスの初期化の問題が起きる場合がある
・このためREGCLS_SUSPENDフラグで起動を遅らせて、CoResumeClassObjectsで起動させる
みたいなことはあったけど。

追加したときにフラグ上書きしたことになってるのではと想像。

1891872008/02/22(金) 13:15:06
ふむー、こういうことかな?
サービスそのものがCOMであるけど、サービスは起動直後に立ち上がるから、
自分でタイミング見て初期化しないといけない。
新たにCOM実装すると、ATLのどっかで初期化するようになる。
よってサービスでCoregisterClassOBjectsを呼ぶと2重初期化で
エラーを返すのかな。
なんにせよ、COM追加したら呼ばないでいいのだろうか。
とりあえず外部アプリからサービスのCOM呼び出しとかは、うまくは動いてるし。

190デフォルトの名無しさん2008/02/26(火) 02:30:07
外部からエクスプローラーバーのIBandSiteを取得したいのですが、
とれません。
どのようにして取得すればよいでしょうか?

191デフォルトの名無しさん2008/03/23(日) 00:54:12
CHogeってCOMクラスが
HRESULT SetHoge(IDispatch* pV)
ってメソッドを持っていて、pVのポインタをCHogeのメンバとして保持するとき
- SetHoge()の先頭くらいでthis->pV->AddRef()
- FinalRelease()でthis->pV->Release()
ってすればOKって認識であってるかな。

192デフォルトの名無しさん2008/03/27(木) 21:43:35
>>191
一般的にはこんな感じ

SetHoge(IHoge* pHoge)
{
 if (pHoge) pHoge->AddRef();
 if (this->pHoge) this->pHoge->Release();
 this->pHoge = pHoge;
}

NULLをセットして開放することを許可しておくと、循環参照等を
断ち切るときのためになるので吉。

ATL 等なら、CComPtr<IHoge> pHoge とメンバ変数を宣言し、
SetHoge(IHoge* pHoge) { this->pHoge = pHoge; } で十分。
非 ATL なら _com_ptr_t の利用も考慮してみると良いと思う。

1931912008/03/27(木) 22:33:15
ああそうかメンバ自体をCComPtrにしとけば代入だけでいけますね。

194デフォルトの名無しさん2008/04/13(日) 00:28:44
おお、COMのすれ、あるんだ!

195デフォルトの名無しさん2008/04/13(日) 03:00:22
よろしくね(´・ω・`)

196デフォルトの名無しさん2008/04/13(日) 03:09:06
先生、googleがCOMを検索してくれないので勉強できません

197デフォルトの名無しさん2008/04/14(月) 23:31:09
COM
OLEオートメーション総合
どうしてCOMは即死したのか
の3つのCOM関連スレがあるけど、どう使い分けるの?
というかどれもすでに死んでるのかな、、少しさびしい。

198デフォルトの名無しさん2008/04/15(火) 00:13:00
>>197
IEコンポーネントをC++から使う話はたまにWin32APIスレで見る。
.NETから各種COMコンポーネントを使う話もたまにC#やVB.NETのスレで見る。
あと、DirectXのことは当然DirectXのスレで扱われる。

質問はそっちで賄われるから、
その3つのスレはほとんど雑談くらいにしか使われないんだよね。

199デフォルトの名無しさん2008/04/18(金) 01:20:01
雑談モード。
たしかMSHTML::IHTMLWindowだったか、QueryServiceというのがあったが、QueryInterfaceと何が違ったんだろう…。
どっちもIFを取得するという点では同じなのだが。何か長短があるんだろうか。
たとえば自分がComponent作るとき、QuerySeriviceでIF提供したほうがいいなって場面あるんだろか。

200デフォルトの名無しさん2008/04/22(火) 15:39:39
IBindCtxとIMonikerの関係と、存在意義について教えてください。

201デフォルトの名無しさん2008/04/22(火) 18:00:23
それらは、MkParseDisplayNameとBindToObjctや、
それをラップしたCoGetObjectなどのように
文字列からCOMオブジェクトを作るためのものだと俺は理解している。

IMonikerはその文字列をくるんだだけのインタフェース。
IBindCtxはオプションを指定するBIND_OPTSをくるんだだけのインタフェース。
実際にはもう少し高機能だろうけど。

文字列ってのは何でもあり。ファイルパスやURLもそうだし、
とあるExcelブックのあるセルを参照するのは
"C:\[hoge.xls]Sheet1!A5"みたいな感じだったと思う。

2022002008/04/22(火) 18:45:43
>>201
ありがとうございます。

IBindCtxやIMonikerを引数に渡すAPIやInterfaceが多いのですが、
MSDNを何度読んでも、どういう時にどういう設定で使えばよいか良くわからず、困っています。

MSDNに、
The IBindCtx interface provides access to a bind context, ・・・
と書かれていますが、”bind context”とは何なのでしょうか?

203デフォルトの名無しさん2008/04/22(火) 18:49:42
文字列からオブジェクトへの変換を行うバインダへのハンドルのようなもんと思えば

204デフォルトの名無しさん2008/04/23(水) 07:47:16
>>199
自分の理解では。QueryInterfaceは、あくまでもそのオブジェクトが持つ機能を公開するもので。
QueryServiceは、そのオブジェクトが管理している別のオブジェクトを返すものだと思っている。
例えば、プラグインとかさ。

205デフォルトの名無しさん2008/04/23(水) 16:12:01
>>119
QueryInterface は自分自身の IUnknown を返さなくてはならない
(オブジェクトの寿命や同定とかいう観点から)という制約というか仕様なので、
要求された機能を持つ他のオブジェクト(かも知れない)のインタフェイスを
返すには使えないから。

206デフォルトの名無しさん2008/04/23(水) 17:03:26
>>202
どう使うかということは、MSDNライブラリを眺めるより、
サンプルを探しにググって実例を見たほうが分かるようになる。

207デフォルトの名無しさん2008/04/23(水) 19:07:22
>>206
全くその通りなんだけど、
サンプル見つからなくてね・・・。

208デフォルトの名無しさん2008/04/25(金) 00:15:14
>>204
>>205

なるほどー。QSで帰ってくるものは自分自身じゃないんだ。しらなかった。どうもありがとう。
ん?でもでも、だとすると次なる疑問が。。。

QIの価値はわかる。同一コンポーネントが複数IFを持つことは価値があるし、
(IPersistXXXXを持ち、IMyAppを持ち、IMyConfigを持ち、とか)
それが機能するには、Platform側の標準やりとりが必要だから。
(Javaだと言語が切り替えの仕組みをサポートするとか)

それに対しQSって何で必要なんだろ。
標準やりとりが必要ないなら、単純にGetter相当でOKのような。

209デフォルトの名無しさん2008/04/25(金) 01:37:41
ごめん、自己解決。なんで必要か分かった。
はじめから追加サービスがどれだけあるか決まってるならGetterでいいが、
今後の拡張にそってどれだけサービスが増えるか分からないので、名前引きにした、ということですな。
expandoみたいな考え方な。

だからPluginとかいう話もガイシュツだったわけね。賢いなぁ、アドバイスしてくれた人

210デフォルトの名無しさん2008/04/26(土) 01:29:06
COMコンポーネントのメソッドから、COMコンポーネント呼び出し元クライアントの
SID取って管理者権限か判断とかできるかな?

211デフォルトの名無しさん2008/09/07(日) 09:08:57
COM勉強してるけど、楽しいなあ

212デフォルトの名無しさん2008/09/07(日) 09:56:27
最初だけだよ・・・一定規模以上のプログラム作り出したら全てを放り投げたくなる

213デフォルトの名無しさん2008/09/07(日) 10:50:31
Javaが90年代に鯖サイドであっという間に普及したのはCOMのめんどくささのおかげ
CORBAよりはましだけど

214デフォルトの名無しさん2008/09/07(日) 18:37:14
何ズレた事言ってんだよw

215デフォルトの名無しさん2008/10/22(水) 17:34:53
C#からCOMいじりしてると、なんか脳液がドクドク出てくるのが分かる
もうシェルインターフェイスだけで丼飯バクバク食えるぞ
自分がMだとは思わなかった

216デフォルトの名無しさん2008/10/22(水) 18:26:23
C++からCOMいじると最強。 >これ、何の意味がある暗号インターフェース?

217デフォルトの名無しさん2008/10/22(水) 18:31:43
これ、何語? >MFC

218デフォルトの名無しさん2008/10/24(金) 13:03:42
C#でCOM使ったことあるけどそんな大変でもないよね。
>>215はどんだけ敏感なんだ?

219デフォルトの名無しさん2008/10/24(金) 19:23:32
C#ではExcelのオートメーションみたいにデフォルト引数を使いまくりだと死ねる。

220デフォルトの名無しさん2008/10/27(月) 11:06:10
C#では重かったり、.net frameworkでサポートされてないのを
C++で書いてCOM化してC#から呼ぶのは使えるな。

221デフォルトの名無しさん2008/10/27(月) 11:10:24
 ↑
C#とCOMを無きものにしたらどうよ?

222デフォルトの名無しさん2008/10/27(月) 12:34:16
windowsでGUIアプリ作るのにC#って選択肢ははずせないしね・・・
さすがに、いまさらATLとかは辛い。

223デフォルトの名無しさん2008/10/27(月) 12:43:10
>windowsでGUIアプリ作るのにC#

外して下さい。
おながいします。

224デフォルトの名無しさん2008/10/30(木) 22:47:48
COM作ろうと思って、shobjidl.hインクルードしたんだが、多重定義のエラー

で、調べてみるとNO_WIN32_LEAN_AND_MEANをdefineすれば解決できるらしい

#define NO_WIN32_LEAN_AND_MEANしようが、コンパイルオプションに/D NO_WIN32_LEAN_AND_MEAN

つけようが、まだ多重定義エラーがでる・・・

解決策おしえてー;;

win xp sp3
vc++6
platform sdk 2003 server sp1

225デフォルトの名無しさん2008/10/30(木) 23:04:27
WIN32_LEAN_AND_MEANを定義したままなんてことはないよな?

226デフォルトの名無しさん2008/10/30(木) 23:08:44
>>225
はい。
ソースのほうは

#ifndef WIN32_LEAN_AND_MEAN
#define WIN32_LEAN_AND_MEAN
#endif

にしてるので・・・

はあ・・・・なんでだ・・・
なんだかんだで1日中調べてる・・・

どこかで、VC++6では2003年2月以降に発行されたplatform sdkは使えないとか
書いてあったけどそれは違うよね・・・?

227デフォルトの名無しさん2008/10/30(木) 23:12:53
>>226
それ削除しないと駄目だ。
両方定義していたら、たぶんWIN32_LEAN_AND_MEANが優先される。

228デフォルトの名無しさん2008/10/30(木) 23:19:59
>>227
優先される?って?

/D WIN32_LEAN_AND_MEAN単独でも
#define WIN32_LEAN_AND_MEAN単独でも
どちらも同じように多重定義エラーでるんですよね・・・


ちなみに・・VC++6のコンパイルオプションだけど、
プロジェクト⇒設定⇒C/C++オプションのところに
/D WIN32_LEAN_AND_MEANを加えるですよね

229デフォルトの名無しさん2008/10/30(木) 23:29:32
>vc++6 
>platform sdk 2003 server sp1 

VCのバージョンを上げろゴラってことじゃないかと・・・

230デフォルトの名無しさん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,2282008/10/31(金) 00:08:51
すみません。
すべてNO_WIN32_LEAN_AND_MEANです。

232デフォルトの名無しさん2008/11/10(月) 20:10:51
永遠なるCOMを称えてage

233デフォルトの名無しさん2008/12/07(日) 02:34:42
Windowsの音量を変更するCOM教えてください。。。
すんません、こんな質問で。

234デフォルトの名無しさん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するやり方が悪いのでしょうか?

236デフォルトの名無しさん2009/04/10(金) 19:40:45
ほしゅ

2372352009/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]は出力されません。単にファイル終端なだけです

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



238デフォルトの名無しさん2009/04/13(月) 02:42:25
>>237
最近同じところではまった気がする

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

ちなみにコピーは Ctrl+C
Ctrl+C のコピーできるなら、マウス右クリックの編集メニューサポートしとけよって…

2392352009/04/14(火) 22:04:30
ありがとう!!!

手動コピペでうまくいった

2402352009/04/14(火) 22:48:06
>>233
> Windowsの音量を変更するCOM教えてください。。。
> すんません、こんな質問で。
>

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

これでどうよ?コントロールパネル-サウンドとオーディオデバイスのプロパティ を出すだけだけど

2412352009/04/14(火) 23:23:57
APIでwaveOutSetVolume()ってのがあるみたいだな>>オーディオの調整

242デフォルトの名無しさん2009/04/16(木) 13:13:27
はいはい

243デフォルトの名無しさん2009/05/05(火) 15:20:06
>>235
#import <wshom.ocx> rename("FreeSpace","FreeSpace2")

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




244デフォルトの名無しさん2009/08/27(木) 04:41:21
あげ

COM形式の実行ファイルの話はこのスレでいいんですか

いいとは思うが、COM形式の実行ファイルって何だ?

command.com

いまさらそっちのCOMなのか
じゃあ違うな
個別のスレはなさそうだし、「スレ立てるまでもない質問はここで」とかで聞くしかないんじゃないの?

249デフォルトの名無しさん2009/10/20(火) 05:39:50
office製品との連携にc++でcom(dll)作ってしまうのが良さそうと思ったけど、誰も使ってなさそうだな。orz
みんなvbaで済ませちゃってるっぽいな。vb回避したいのでいろいろ探してcomにたどり着いたのに。orz
それとももうcomは捨てて、まねーじcom(.net)のほうに逝っちゃったかな?
.netはcom使える様にする設定が面倒と思った。

250デフォルトの名無しさん2009/10/21(水) 05:21:57
もうだれもobaやってないみたいだなw

251デフォルトの名無しさん2009/10/30(金) 12:34:24
Inside COMって絶版だったのか。
会社にあったから何とかなったけど、
XPCOMでの関連書籍にEssential COMとかあるのに、それも絶版とか・・・

252デフォルトの名無しさん2009/10/30(金) 12:43:45
Inside COM
には、
COMは誰も定義が言えないうえ今までなかったプログラミングの構造だが、
今後のプログラミングはこの構造になるって、
ばっちゃが書いてた。

253デフォルトの名無しさん2009/10/31(土) 04:55:58
いまは.netの方向に進んでて、comは捨てられてるな。

254デフォルトの名無しさん2009/11/02(月) 09:43:44
ドトネト進むというか迷走だがw

255デフォルトの名無しさん2009/11/02(月) 16:10:20
com回帰来るの?

256デフォルトの名無しさん2009/11/02(月) 16:33:30
そうならなくて、HTML5だろ、jk

257デフォルトの名無しさん2009/11/12(木) 23:34:11
シェル拡張ってInprocServerじゃないとダメなの?
サンクも出来ないLocalServerなCOMも呼べないとかどうしようもないお荷物じゃねーか

258デフォルトの名無しさん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

259デフォルトの名無しさん2010/01/30(土) 22:24:33
VC++ のキーワード __hook で COM のイベントのソースとハンドラを繋げる仕組みがありますが、
__hook を使わず、COM 系関数などで完全に再現できるものでしょうか。

260デフォルトの名無しさん2010/02/05(金) 18:06:08
いろいろ調べたところ、
__hook と同等の機能かはわかりませが、
IConnectionPointContainer インターフェイスを用いることで、
__hook を使わなくても COM のサーバーとクライアントを
イベントで関連づけることができました。

お騒がせししました。

261デフォルトの名無しさん2010/02/05(金) 18:56:45
おお

262デフォルトの名無しさん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登録する場合は、絶対パスを指定しないとダメなのでしょうか?

263デフォルトの名無しさん2010/09/02(木) 00:07:50
環境変数

264デフォルトの名無しさん2011/02/25(金) 23:01:19.09
蘇れ

265デフォルトの名無しさん2011/02/26(土) 19:19:28.35
>>262
レジストリ登録ファイル使えばええがな。
アレと、継承ツリーを遡り、IIDをマッピングする独自テンプレート
書いておくとATL無しでも簡単にCOMサーバー書けるぞ。

話は変わるが.netってCLSID付きのクラスや、共有のインスタンスって
作れるの?

266デフォルトの名無しさん2011/03/03(木) 00:26:26.58
>>265
後者は知らない。
CLSIDはGuid属性付きでクラス定義すればOK。

267デフォルトの名無しさん2011/03/12(土) 21:46:04.54
IDispatchって簡単に言うとなんですか?

268デフォルトの名無しさん2011/03/13(日) 04:23:01.91
WM_COMMAND

269デフォルトの名無しさん2011/03/13(日) 06:54:02.94
ポリモーフィズム

270デフォルトの名無しさん2011/03/18(金) 23:42:19.02
ん、つまり
いみがわからない

271デフォルトの名無しさん2011/03/26(土) 23:15:49.47
馬鹿にはcomは無理。

272デフォルトの名無しさん2011/04/09(土) 17:50:41.49
.netでCOMインターフェイス実装して
なんも知らないユーザーがMarshal.ReleaseComObjectすると例外でるよね
だってCOMオブジェクトじゃないもん!って怒られちゅうんだ

273天使 ◆uL5esZLBSE 2011/07/06(水) 07:02:42.16
これ ; デリミタっていうんだけどさ、よく打ち忘れるよね
Rubyだとつけなくてよくなるんだけど


ゴミだな

274デフォルトの名無しさん2011/07/06(水) 08:54:45.07
キチガイはすっこんでろ

275デフォルトの名無しさん2011/09/01(木) 21:25:48.66
COMあげ

276デフォルトの名無しさん2011/09/02(金) 22:09:39.14
MFCのWindowsアプリから、COMのアウトプロセスサーバーのメソッド呼び出し中に
Windowsメッセージに割り込まれることがありますが、これを防ぐ方法はありますか?
現状は、COMの呼び出し中にフラグを立てて、Windowsメッセージ受信時にフラグONなら
同メッセージをPostMessageし直して処理を保留としていますが、スマートではないので。

277デフォルトの名無しさん2011/09/02(金) 22:22:13.72
充分スマートです

278デフォルトの名無しさん2011/09/02(金) 22:45:33.25
>>277
レスありがとうございます。
他に上手い方法が思いつかないので、とりあえずこの方法で対処したいと思います。

279デフォルトの名無しさん2011/09/02(金) 22:56:48.28
はい
がんがって

280デフォルトの名無しさん2011/10/11(火) 18:24:40.07
qttabbarとかのソースみたらCOMだらけだったんですが
ああいうのってどこで学習したらいいんでしょうか

281デフォルトの名無しさん2011/10/12(水) 03:02:03.58
ttp://www.amazon.co.jp/dp/4881357557/

282デフォルトの名無しさん2011/10/12(水) 11:55:53.42
基本的に今の時代0からOLE/COM学習するの無理っぽくね?
昔俺が手がかりにしたMSの仕様書は今探してもことごとく抹消されてた。
Inside OLEとか絶版だし、手に入れても内容がバラけてて網羅性もない。
やっぱりあの仕様書群読むのが一番手っ取り早いはずなんだけど。

283デフォルトの名無しさん2011/10/27(木) 10:58:54.79

284デフォルトの名無しさん2011/11/28(月) 20:38:46.98
シェルエクステを簡単に実装する方法を教えてください

285デフォルトの名無しさん2012/01/10(火) 18:51:55.79
SHCreateShellItemArrayFromDataObject の逆のAPIってないの?

IShellItemArrayからIDataObjectが欲しいんだけど

286デフォルトの名無しさん2012/01/10(火) 18:56:36.31
と思ったら
IShellItemArray::BindToHandler でいいのか

いずれにせよIShellItemArrayとIDataObjectの寿命がバインドしてるっぽいから
使い勝手悪いな
ITEMIDLISTにばらして持つしかないのか

287デフォルトの名無しさん2012/01/11(水) 10:36:36.21
IShellItemArray / IShellItem使って
IShellFolder / ITEMIDLIST は使うなってことなのか

でも過渡期だとどうせ両方使わなくちゃできないことも多いんで
手間が増えるな

288デフォルトの名無しさん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);

みたいなコードが書けなくて困るんですけど

289デフォルトの名無しさん2012/01/13(金) 17:00:12.78
うんこなぅ

290デフォルトの名無しさん2012/03/21(水) 18:04:08.53
俺のCOM は9800bpsの高速だぜぇ。

291デフォルトの名無しさん2012/03/21(水) 18:10:30.31
それを言うなら、9600bpsだろう。
いずれにしても、つまらんが。

292デフォルトの名無しさん2012/03/21(水) 20:28:33.22
久しぶりだなこのスレ

Windows7とか8でまた楽しいCOMインターフェイスが追加されてるな

293デフォルトの名無しさん2012/03/22(木) 21:57:04.40
IInspectable

294デフォルトの名無しさん2012/03/22(木) 22:50:15.60
COMで扱うバリアント型の気持ち悪さは異常

295デフォルトの名無しさん2012/03/23(金) 08:15:11.72
馬鹿には無理

ああするしかない。

データも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.

299デフォルトの名無しさん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

302デフォルトの名無しさん2012/11/09(金) 08:06:58.10
COMのイベントについてググるのはバカにとって鬼門だな。
バカがやると「なんとかドットコム、秋のイベント開催中」みたいのしかヒットしないからなw

303デフォルトの名無しさん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#で動いてるしなぁ

306デフォルトの名無しさん2012/12/06(木) 02:15:33.17
>>304
おめーのプロジェクトじゃねえだろうが…

307デフォルトの名無しさん2012/12/09(日) 16:33:50.20
COMっちゃうなー
Reactに誘われて♪

308デフォルトの名無しさん2012/12/10(月) 17:20:38.44
元ネタわかる人いるのかよ

309デフォルトの名無しさん2012/12/10(月) 18:02:17.16
元ネタがあると言うことがわかっただけで、ロートル確定だな。

310デフォルトの名無しさん2012/12/10(月) 18:24:41.37
ロートル(老頭児)は中国語である。
これ豆な

311デフォルトの名無しさん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

314デフォルトの名無しさん2013/02/13(水) 09:36:01.00
コードにちらばるunkというキーワード

思わずoを足したくなる
なんとかしてくれ

315デフォルトの名無しさん2013/02/13(水) 10:40:12.85
IUnkonow

316デフォルトの名無しさん2013/02/23(土) 01:11:21.52
そういやcommってアプリはどうなった?

317デフォルトの名無しさん2013/02/28(木) 20:44:03.56
Shellまわりのインターフェイス

どうせだったらexplorerそのもにも実装してくれればいいのにと思うものが多数

318デフォルトの名無しさん2013/03/04(月) 08:03:26.94
winRTでカレーにフッカツ
とっととタヒねばいいのに

319デフォルトの名無しさん2013/03/04(月) 08:23:27.34
アプリのプラグインdllでCOMを使いたい場合、イニシャライズは
どうすればいいんだろう?一般的な指針ってあるんだろうか?

320デフォルトの名無しさん2013/03/17(日) 12:52:41.05
なんの初期化をしたいか、COMを使うというのは、
COM規約を利用してCOM実装を作る側なのか、
利用する側なのかで変わるから一概に答えられん。

当てずっぽうで言っとくと、利用する場合は、
DllMainでCoInitialize、CoUnitilializeだろう。

逆に自分でCOM objectを提供する場合は、
Factoryクラスで初期化と後片付けを提供すりゃいいだろう。

321デフォルトの名無しさん2013/03/17(日) 13:19:40.20
初期化と後片付けの手間が半端ない

322デフォルトの名無しさん2013/03/17(日) 14:11:15.72
聞きたかった点をもう少し詳しく書くと、COMを利用するdllにおいて
・アプリ本体側でCoInitialize(Ex)を行っていない場合、dll側で初期化してもよいのか
・する場合、どこですべきか(DllMainかあるいは各エントリポイントか)
・特に、dllの関数がマルチスレッドで呼び出される場合についてはどうか
というあたり。
アプリ側がdllの仕様を知っていて必要な初期化を行ってくれるんであればいいけど、
dllプラグインのような場合dll側がアプリに合わせる必要があるんで、そのとき
どういうふうにすればいいんだろうかと。

323デフォルトの名無しさん2013/03/17(日) 14:20:21.91
VARIANT が VT_DATE のときの値と CRT の time_t を相互変換するにはどうすれば良い?

324デフォルトの名無しさん2013/03/17(日) 18:45:12.96
>>322
CoInitialize(Ex)のremarksに書いてあるやつじゃだめなの?
一度初期化したスレッドモデルと異なってたら初期化に失敗するだけじゃね(後に初期化しようとした他の人のプラグイン含む)?

325デフォルトの名無しさん2013/03/17(日) 22:15:31.11
なるほど、と思って改めてmsdn見にいったら、DllMainでは呼ぶなって書いてあるのね。
結局のところホストアプリ側で考慮してなきゃ無理ってことかな。

326デフォルトの名無しさん2013/03/18(月) 11:30:40.91
DLLに、最初にこの関数呼んでね的な関数追加して、そこでCoInitializeすれば良いのかなぁ

327デフォルトの名無しさん2013/03/18(月) 13:47:33.00
プラグインなんでしょ?
サーバーというかホストが 初期化するよ/終了するよ みたいなの教えてくれないの?

328デフォルトの名無しさん2013/03/18(月) 21:29:45.45
>>323 MFCを読め

329デフォルトの名無しさん2013/03/18(月) 22:12:09.83
>>326
>>327
アプリ側でケアするんならそっちでCoInitializeするだけじゃね?

330デフォルトの名無しさん2013/03/20(水) 16:18:28.68
>>326
MSも含め、DLL側じゃなくexe側で初期化しろって方針なんだから、
DLL側で初期化すんのやめたら?
MSのDLL使う時だって、CoInitialize、CoUninitialize(もしくはWrapした関数)
必要なんだから、DLL使う側だって今更そこまで気にしないだろ。

331デフォルトの名無しさん2013/03/20(水) 17:08:33.74
CoInitialize忘れてCOM使うと
エラーが良くわからん状態になるので
忘れないようにしたいという需要はある

332デフォルトの名無しさん2013/03/20(水) 18:51:54.57
そういってもMS提供のDLLでもそうしてんだから、
それに従うしか無いだろうに

333デフォルトの名無しさん2013/03/20(水) 20:18:30.82
アパートメントモデルの問題があるから、
DLLで勝手に初期化するわけにはいかない。

334デフォルトの名無しさん2013/03/21(木) 12:58:18.91
foreach実装する方法おしえてチョン

335デフォルトの名無しさん2013/03/21(木) 13:36:26.47
何語?

336デフォルトの名無しさん2013/03/24(日) 14:17:42.23
マゲ

337片山博文MZパンク ◆0lBZNi.Q7evd 2013/04/06(土) 22:42:52.62
IShellViewのヘッダーが表示され内容に死体が胴すればいイカ?

338デフォルトの名無しさん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の実装に関する資料希望。

340片山博文MZパンク ◆0lBZNi.Q7evd 2013/04/17(水) 22:39:12.48
儲かるActiveXの作り方教えて下さい、偉い人。

341デフォルトの名無しさん2013/04/17(水) 23:21:04.39
んなもんない

342デフォルトの名無しさん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
レジストリを舐める

345デフォルトの名無しさん2013/04/23(火) 22:32:31.11
>>344
構造を説明した資料ないっすか?英語可

346デフォルトの名無しさん2013/04/24(水) 12:35:05.38

347片山博文MZパンク ◆0lBZNi.Q7evd 2013/04/24(水) 19:07:02.13
OLE Viewer使えば簡単だった。すまそ

348デフォルトの名無しさん2013/04/24(水) 20:21:39.67
ヽ(・ω・)/ズコー

349片山博文MZパンク ◆0lBZNi.Q7evd 2013/04/24(水) 21:32:53.68
ATLが使えてひまな人、ReactOSの開発に参加して下さい。お願いします。

350デフォルトの名無しさん2013/04/24(水) 21:36:25.70
はい。

351片山博文MZパンク ◆0lBZNi.Q7evd 2013/04/24(水) 23:19:06.74
>>350
おお、参加してくれるか。まずは僕のHPの「ReactOS開発の手引き」を読んで下さい。

352デフォルトの名無しさん2013/04/24(水) 23:20:39.20
いいえ。

353デフォルトの名無しさん2013/04/24(水) 23:31:49.80
--------------------------
運命の選択
--------------------------
ReactOS開発に参加しますか?

     [はい] [いいえ]
--------------------------

354デフォルトの名無しさん2013/04/24(水) 23:44:20.41
それは人生のスイッチ。

実力と英語力と時間がある人はお金がもらえるよ

355デフォルトの名無しさん2013/04/28(日) 13:51:46.76
複数のアプリで共通のインタフェースを持たせたい場合、単純にそのインタフェースを
定義したIDLをそれぞれのアプリでimportすればいいんですかね?
あとこのとき、インタフェースのバージョンアップ(メソッドの追加など)はどのようにすれば
いいんでしょうか?

356デフォルトの名無しさん2013/04/29(月) 01:24:17.27
>>349
お前が亡くなれば参加してもいい

357デフォルトの名無しさん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
インターフェイスの再利用のため。

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を幅広く利用するために、生成・破棄の手段を一定の形式に従って公開している。

363デフォルトの名無しさん2013/05/05(日) 20:48:16.38
ずっと昔はidlとodlに分かれてなかったっけ?

364デフォルトの名無しさん2013/05/05(日) 21:39:29.29
馬鹿じゃね?
OOならずともinterfaceなら当たり前じゃね

365片山博文MZパンク ◆0lBZNi.Q7evd 2013/05/05(日) 22:01:55.03
例えば、集合を表すinterface ISetを公開する場合、実装方法は自由に選べる。
連結リストで集合を実装するclass CSetByListの実体を返してもいいし、ベクトルで集合を実装するclass CSetByVectorを返してもいい。
interfaceと実装を分離することでソフトウェア部品の共通化と再利用性が高まる。これはこれからの人工知能の要と言える。

366デフォルトの名無しさん2013/05/05(日) 22:12:28.10
>>359
再利用ってのはつまり、複数の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.70
>>367
library内のcoclassが参照するinterfaceなら、中で定義されたものでも外で定義されたものでも
どちらの場合もタイプライブラリに含まれて公開されますが?

369デフォルトの名無しさん2013/05/05(日) 23:10:51.26
じゃあ、参照するinterfaceを作成する方法は何通りある?

370デフォルトの名無しさん2013/05/05(日) 23:41:13.95
とりあえず、再利用の話なのか公開の話なのか参照の話なのか話題を絞れ。

371デフォルトの名無しさん2013/05/05(日) 23:49:02.61
>>369
一通りって何を数えるんだろう?
・同じidlに書く
・別のidlに書いてimportする
・別のタイプライブラリにコンパイルしたものをimportlibする
とか?

372デフォルトの名無しさん2013/05/05(日) 23:57:34.82
>COMは人工知能を作りたい人が越えるべき一里塚

なんで人工知能を作りたい人の文脈でCOMが出てくんの?

373デフォルトの名無しさん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
えいやこら
えいやこら
どっこいしょ

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 );

って感じで使えてマジでスクリプトっぽい。ちょっと感動。

378デフォルトの名無しさん2013/06/25(火) 10:03:40.56
当たり前じゃね?
なんで出来ないと思ったの?

379デフォルトの名無しさん2013/06/25(火) 11:18:52.59
いやー
スクリプトさんがシグニチャからメソッド探すときに
よく間違えないで見つけてくれるもんだと思ってさぁ

オプション引数使ってないメソッドをシグニチャ違いで呼ぶと
スクリプトさんのプロセスで「プロシージャの呼び出し、または引数が不正です」って怒られるのよ
.netの方じゃなくて。

380デフォルトの名無しさん2013/06/25(火) 12:12:25.70
引数があってるか確認してるのは
スクリプト側じゃなくて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で作るの?

384デフォルトの名無しさん2013/07/13(土) NY:AN:NY.AN
状況はありえる

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+はアウトプロセス
細かい違いはあるが基本はそれだけ

388デフォルトの名無しさん2013/10/20(日) 07:57:19.20
32bit用に作られたcomサーバーを
64bit用のcomクライアントから使用したい場合
上記サーバーを64bit用に作り直す
(ソースの変更と再コンパイル)
必要がありますか?
それともwrapperみたいなのを書けば対処可能ですか?

389デフォルトの名無しさん2013/10/20(日) 08:13:57.34
必要ありません
登録する時に適切な手順を踏めば問題なく利用できますし

390デフォルトの名無しさん2013/10/20(日) 10:33:00.13
なるほど
どいうことは
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サーバはインプロセスが多そうなので、
相互呼び出しできないんじゃないの?

392デフォルトの名無しさん2013/10/20(日) 10:58:41.04
×63bit/32bit相互運用可能なのは、
○64bit/32bit相互運用可能なのは、
です

393デフォルトの名無しさん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を実装してるオブジェクトから
あるフォーマットのデータを削除することってできる?

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

自前の実装でそういう処理を書ける場合じゃないと無理?

397デフォルトの名無しさん2014/03/17(月) 19:51:29.13ID:+0g3AXKA
無理だな

398デフォルトの名無しさん2014/04/12(土) 18:28:31.07ID:EWT/9iBD
IDataObjectにHGLOBALなデータを設定するとき、
一体どのAPIを使ってメモリを割り当てたらいいんでしょう?

伝統的にはGlobalAllocを使うんだと思いますが
LocalAllocを直接使っているコードを見たことがあります。。

399デフォルトの名無しさん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を取得する方法ってありませんか。

もしかして総当りしか方法はなかったりしますか。。。

4014002014/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

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/

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

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

406デフォルトの名無しさん2014/07/08(火) 15:13:40.82ID:VCOU0wLj
テキストエディタのMeryみたく、自作アプリのマクロを
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の機能を呼び出すんじゃろ

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

凝ったことをやりたいなら構文解析・パーサーをキーワードにして
知識を広げていくのが良い

413デフォルトの名無しさん2014/07/10(木) 15:23:41.68ID:1VHW603R
それとも
IDispatch::Invoke と IDispatch::GetIDsOfNames を組み合わせて使うとか
そういう話かな

414デフォルトの名無しさん2014/07/10(木) 17:14:05.85ID:fp5I0Zvk
v8を組み込んで
jsインタプリタ内蔵の
プラグインにすれば良い

415デフォルトの名無しさん2014/07/13(日) 03:23:13.23ID:b3Vz6umr
>>406
サクラエディタのマクロは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

419デフォルトの名無しさん2014/07/21(月) 07:49:19.08ID:6nmHe42m
>>416のシェルを使ったショートカット作成の件だけど、

→作成先フォルダの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というのが分りません。
どなたか簡単に解説お願いします。

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

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)なんだと思う

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オブジェクト作るなら必要ってだけで
自前でやる分には何の問題もない

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 と関係ないべ

432デフォルトの名無しさん2014/08/08(金) 09:24:29.43ID:gW33htdT

433デフォルトの名無しさん2014/10/23(木) 13:56:20.92ID:ISc0F2Qf
OLEオブジェクトにゼロデイ脆弱性、Microsoftが暫定対策プログラムを公開
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に任せればインターネット接続が要るし、丸ごと再頒布するにはデカ杉

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の代用にはならない

445デフォルトの名無しさん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+

448名無しさん@そうだ選挙に行こう2014/12/14(日) 11:37:06.17ID:X+6lyliS
.NETからDLL呼ぶためにはP/Invokeを手で書かないといけないけど、COMDLLならTLBからインタロップ自動生成してるから楽
まあ普通のDLLもIDLファイル作っとけばいいんだろうけど、普通やらないもんな

449デフォルトの名無しさん2015/01/02(金) 20:24:42.85ID:mlj15zVW
Inside COM(日本語版)って結構高く売れんのかね?

450デフォルトの名無しさん2015/01/02(金) 20:29:14.43ID:F7Nf/+TC
>>449
今更新規に学ぶ人なんか居ないから売れない
既に理解してる身としてはまだまだ使い道ある技術だけどね

451デフォルトの名無しさん2015/01/03(土) 01:17:50.23ID:AuGuhWCh
>>449
読んだのはだいぶ前だけどそこそこ勉強にはなったな
COMの利点はC++で作ったDLLを他の言語から使えるって事かな
OSの基本機能はC++で実装する事がほとんどだろうからCOM自体は永久に無くならんだろうね

452デフォルトの名無しさん2015/01/03(土) 11:28:31.16ID:duDbuP4G
ステマ乙

453デフォルトの名無しさん2015/01/03(土) 15:18:55.60ID:AuGuhWCh
>>452
ステマって誰が儲かんだよw
ま、いい売り文句を言えたと理解しておこう

454デフォルトの名無しさん2015/01/06(火) 08:32:22.24ID:c/PNiN5K
元々はC++のvtblを巧みに利用したインターフェース志向の技法で、DLLというコンポーネント分散によって言語依存が消えた

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

てことなんだろうと思う

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

LinuxはC言語が唯一のインターフェースだから、そろそろ言語非依存のインターフェースが普及してほしいよ
候補は色々あるけど、どれも普及はしてないな

456デフォルトの名無しさん2015/01/06(火) 23:34:43.36ID:C2mmH5Le
IDispatchだろ

457デフォルトの名無しさん2015/01/06(火) 23:47:22.80ID:KFlyuGQs
>>456
すまん…スゲー昔の記憶だけ書き込んでた…
反省はしてない

458デフォルトの名無しさん2015/01/06(火) 23:50:36.05ID:kiKfNKwr
>>456
だね、俗に言うレイトバインディング
VB4まではそれしか使えなかった

459デフォルトの名無しさん2015/01/07(水) 00:33:09.37ID:A8Vu2ukb
>>455
Win32だってC言語ベースのAPIだからね
DirectXとか一部だけでしょCOMなのは

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

WindowsでのCOM DLLみたいに、OSからの認識規則なんかを誰かが決めてやらないとダメだけど

460デフォルトの名無しさん2015/01/07(水) 02:06:30.69ID:HBIMK+Li
ORBとかCORBAでしょ
XPCOMとかもあったけどLinuxでは結局どれも流行らなかったのかな
Linuxだと普通GPLでソース公開だから、そんなもの使わなくてもスタティックリンクでokってことなのかもな

461デフォルトの名無しさん2015/01/07(水) 07:25:24.74ID:nx6cbjbg
>>449
Inside OLE(日本語版)がAmazonで良い値が付いてるな
売ろうかw

462デフォルトの名無しさん2015/01/07(水) 08:53:21.20ID:v+HQiVT1
初期のOLEはCOMではなくDDEで動いてたんだっけ

OLEはアタマが付いていかなくて最後まで仕組みを理解できなかったな

463デフォルトの名無しさん2015/01/07(水) 09:04:35.98ID:7s8hjn62
いまはwebAPI全盛だな

464デフォルトの名無しさん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があると言えるかな

465デフォルトの名無しさん2015/04/04(土) 22:47:14.80ID:ActYb9Xv
ActiveXコントロールは死んだ
ttp://www.artonx.org/diary/20150404.html#p01

466デフォルトの名無しさん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

469デフォルトの名無しさん2015/04/08(水) 19:44:02.14ID:5pE9Fokq
>>468
つまりは、都市伝説だといいたいのか

470デフォルトの名無しさん2015/05/07(木) 22:55:18.82ID:yfN65J+v
ActiveXコントロールがIEのためだけのものだという誤解を解く方法

471デフォルトの名無しさん2015/05/18(月) 20:25:05.77ID:oJXHJ+WI
次世代ブラウザEdge関係のCOMインターフェイスってどうなるのん?

472デフォルトの名無しさん2015/05/28(木) 17:06:44.48ID:qrMVO/gn
提供されないと思われ

473デフォルトの名無しさん2015/05/28(木) 17:47:37.58ID:e6ztGmIB
じゃあオートメーションでブラウザが必要なときはどうすんのさ

474デフォルトの名無しさん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

476デフォルトの名無しさん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を直接返せないとかですかね

479デフォルトの名無しさん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だけは自動的に解放処理をしてくれるんだっけ?

484デフォルトの名無しさん2016/06/27(月) 12:21:49.42ID:KfwOTMrs
>>483
c#もでしょ

485デフォルトの名無しさん2016/06/30(木) 06:55:01.83ID:unO7gBzv
C#もVBも
GCとか使わないとプロセスが残るでしょ

新着レスの表示
レスを投稿する