備忘録のエントリです。 フリーの開発環境でラクにCOMサーバーを作ろう、という主旨です(^^;;; キーワードは「C++属性」です。この属性を利用することで手作業であっても退屈なメンドクサイ、コードの大部分(ほとんど)が自動的に作成されます。コーディングするのは、実装するインターフェイスのメソッドの中身だけ。簡単です。ただ・・・ATLだけはどうしても必要です。 しかし・・・Visual Studio 2008 Express EditionにはATLは付属していません。 ATLのヘッダーファイルとライブラリファイルをどこぞから調達しなくてはいけませんが、幸いなことにマイクロソフトがこれまた無料で配布しているWDK(Windows Driver Kit)をインストールすることにより利用することが可能です。WDKはかつては DDK(Driver Developper Kit)と呼ばれていたモノ
とある OLE/COM オブジェクトを C++ で扱おうと思ったのですが、ヘッダーがなかったので自分で作る方法を調べてみました。 まず、 Platform SDK (私のインストールしているバージョンは Server 2003 SP1) の Tool の OLE/COM Object Viewer を起動して、目的のオブジェクトを探します。メニューの [Object]-[View Type Information] を実行し、 ITypeLib Viewer を起動します。ここで、メニューの [File]-[Save As] で IDL ファイルとして保存します。 (MIDL.EXE のパスが通っていれば、この段階で直接 C ファイルや H ファイルを生成できるのかもしれません。) 次に、 Platform SDK に含まれる IDL コンパイラ MIDL.EXE を使って、 IDL ファ
ホーム < ゲームつくろー! < IKD備忘録 COM VS2010とWindows7でCOMを作る時のハマり所 (2014. 9. 20) 久々にATL(COM)を作成する必要が生じ、以前の知識を元に作ってみた所、びっくりする程うまくいかない…。なんで~~(T_T)。そこで、ハマった所を列挙し、解決出来た所を記載していこうと思います。尚環境は以下の通りです: ・ Windows7 Professional (32bit) SP1 ・ Visual Studio 2010 Professional SP1 ① errno.hが無い 至って普通にATLコントロールを作成してみます。 まずVS2010を立ち上げ、新規のプロジェクトを作成します。インストールされたテンプレートの中の[Visual C++]にある[ATL]を選択すると、[ATL プロジェクト]が出てきますのでそれを選択。名前はAT
作ってわかる COM の基礎 簡単な COM コンポーネントの実装例を通して、COM コンポーネントに最低限必要な要素についてみていきます。 IUnknown とは? IUnknown インターフェイスはすべての COM コンポーネントに実装されます。これが何かみてみましょう。 COM オブジェクトの寿命管理 COM オブジェクトはいつメモリから解放されるかということを考えます。 COM コンポーネントの登録機能 COM コンポーネントは自分をシステムに登録させる機能をもたせることができます。 クラスファクトリ クラスファクトリを使ってインスタンス化します。その仕組みを見てみましょう。 簡単な COM コンポーネントの実装例 単純な COM コンポーネントを実装してみます。 簡単な COM クライアントの実装 上で作った COM コンポーネントを利用するプログラムの実装例です。 ここまでお
P0288R9: move_only_functionが待ち遠しく、似たようなもの(劣化版)を自作しようかどうかよく悩んでいます。そんな折、Boost.TypeErasureで簡単に作れるのではないかと思いつき、試していました。 その結果がこれです: https://wandbox.org/permlink/GwWCWR0PtF4XXqmh #include <iostream> #include <memory> #include <boost/type_erasure/any.hpp> #include <boost/type_erasure/builtin.hpp> #include <boost/type_erasure/callable.hpp> #include <boost/type_erasure/relaxed.hpp> template<typename T> usin
概要 COMの作成はVisual C++ .NET 2002、COMを使う作業はVBS(VBScript)から行っている。 作成するCOMはメソッドを1つだけ実装している。 このメソッドは1つの文字列をパラメータとして受け取り、それをメッセージボックスに表示 するだけの簡単なものだ。 COMを作る VC++で 1.「ファイル」メニューから「新規作成」にある「プロジェクト」を選択する 2.「ATLプロジェクト」を選択してプロジェクト名を「ttt」にして「OK」ボタンを押す 3.プロジェクトウイザードが起動したらそのまま「完了」ボタンを押す 4.「プロジェクト」メニューの「クラスの追加」を選択する 5.「ATLシンプルオブジェクト」をダブルクリックする 6.短い名前に「aaa」と入力して「OK」ボタンを押す ここまでの操作でプロジェクトが作られます。これから機能の実装をします。 7.クラスビュ
Introduction Interfaces Step 1:Create the IDL file Step 2:Generating the type library Step 3:Derive from IAdd Step 4:Implement the methods of IAdd Step 5:Implementing IUnkown Step 6:Factory Step 7:Implementing the methods of IClassFactory Step 8:Implementing DllGetClassObject Step 9:Implementing DllCanUnloadNow Step 10:DllRegisterServer-UnregisterServer Step 11:Inserting the IDL file into the Work
situs informasi perjudian online informasi perjudian online yang memberikan rifrensi atau wawasan dalam bermain This article explores the 마사지 elements that contribute to the level of happiness experienced by women in the workplace. Female workers’ work-life balance and job satisfaction are negatively impacted when they are required to work remotely, however the findings of COVID-19 might be used t
A process is a collection of virtual memory space, code, data, and system resources. A thread is code that is to be serially executed within a process. A processor executes threads, not processes, so each application has at least one process, and a process always has at least one thread of execution, known as the primary thread. A process can have multiple threads in addition to the primary thread
Learn the fundamental principles of the COM Single-Threaded Apartment Model by code examples. Download source files - 123 Kb Introduction Advanced COM-based projects often require the passing of objects across threads. Besides the requirement to invoke the methods of these objects from various threads, there is sometimes even the need to fire the events of these objects from more than one thread.
2011年11月24日12:00 カテゴリ プログラム終了時にCOMが消えずにメモリリークする 2011/11/17 10:56:18 昨日は、自分の直したコードがどこか思い出せなくて、あやうく自分が数カ月悩んだ問題をもう一度やらせてしまうところだった。でもあの現象であの原因ってのは罠だよ。 2011/11/17 11:19:33 あの現象=プログラム終了時にCOMが消えずにメモリリークする。というプログラムが1つ見つかった。あの原因=マルチスレッドの場合CoInitialiseを複数回呼んではいけない。シングルスレッドなら問題にならない。2階層くらいライブラリを辿った先でDOMを使うために呼んでた。 2011/11/17 11:23:17 @NakamuraYoichi その現象はよくわかりませんが、CoInitialize は COM を利用する1スレッドにつき1回呼べばよく、また、複
前回のサンプルに修正を加えて行くことにしましょう。 前回に引き続きOLEにおけるCOMインターフェースの使われ方を見ていきます。 今回実装対象となるインターフェースはIStreamです。このインターフェースを引数に取る関数は膨大な量になりますが、その中でも比較的簡単に使用でき、かつ、使用頻度の高いと思われるOleLoadPicture関数を取り上げます。 OleLoadPicture関数は、<olectl.h>の中で次のように定義されています。 WINOLECTLAPI OleLoadPicture(LPSTREAM lpstream, LONG lSize, BOOL fRunmode, REFIID riid, LPVOID FAR* lplpvObj); このことより、OleLoadPicture関数は第1引数として、IStreamインターフェースのポインタを取ることが分かります。
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く