タグ

COMに関するdogatanaのブックマーク (23)

  • C#メモ ExcelのCOMオブジェクトの破棄処理を実行直後にしてみる | tetsuyanbo

    2018/05/29C# なんか…メインプロセスを終了しないと、Excelのプロセスが残っちゃう。 ってか、実行するとどんどん増えてく。 たとえば、コントロールパネルでみてみるとこんな感じでプロセスが実行した分だけ残っちゃう。 これで困るのはこんな感じ。 いらないプロセスがどんどん増えてメモリを余計に使ってしまう ファイルを開いて処理して閉じることを繰り返すような処理をする場合、Excel自体の設定の変更が無視される ※最初に作ったExcelのプロセスでファイルを開くことになるので設定がそのまま はじめに用意したメソッドはこんな感じ。 ExcelアプリケーションをQuit()メソッドで終了すれば勝手にCOMオブジェクトを開放してくれると思ったけど…そうはいかないみたい。 特にGUIEXCELを開いたり閉じたりするような処理をするときは、プロセスがずっと残っててEXCELファイルが読み

    C#メモ ExcelのCOMオブジェクトの破棄処理を実行直後にしてみる | tetsuyanbo
  • クラスファクトリの実装 ~ 作ってわかる COM の基礎 - Web/DB プログラミング徹底解説

    クラスファクトリは、COM オブジェクトを生成するためのクラスです。このインスタンスはクラスオブジェクトなどといいます。 COM オブジェクトを生成するときには通常、CoCreateInstance という COM API を利用します。 C++ のオブジェクトを new で生成するのと異なり、CoCreateInstance という API を途中に挟んでインスタンスを生成することによって、 COM のシステムがそのインスタンスを生成する場所を変えることができるのです。例えば、CoCreateInstance で COM オブジェクトを生成したときに、 その実体が同じプロセス内にある場合もあれば、他のプロセスにある場合もあるのです。 CoCreateInstance を介してオブジェクトを生成するためには、あるお約束事が必要になりますが(オブジェクトの生成方法がてんでばらばらなら、 統一

    クラスファクトリの実装 ~ 作ってわかる COM の基礎 - Web/DB プログラミング徹底解説
    dogatana
    dogatana 2017/03/17
  • レジストリへの登録機能 ~ 作ってわかる COM の基礎 - Web/DB プログラミング徹底解説

    レジストリをこのように構成しておくことによって、 例えば 「クラス ID が {0069c1ec-3242-4e30-b7c2-0f5cc3a19453} である、COM コンポーネントを実装する DLL をロードしたい!」 と思ったときに、レジストリの HKEY_CLASSES_ROOT\CLSID\{0069c1ec-3242-4e30-b7c2-0f5cc3a19453}\InprocServer32 の値から DLL のパスを取得することができ、 その DLL をロードすることができます。 ここで出てきたプログラム識別子 というのは、COM コンポーネントの名前と考えれば良いです。 COM システム内部では、 COM のクラスやインターフェイスを識別するために世界で一意の GUID を利用します。 しかしながら、GUID は長ったらしくて覚えにくいものですから、便宜上名前を付けるこ

    レジストリへの登録機能 ~ 作ってわかる COM の基礎 - Web/DB プログラミング徹底解説
    dogatana
    dogatana 2017/03/17
  • COM を学ぶ(6) : C言語でExcel を操作する(Mingw) - sirocco の書いてもすぐに忘れるメモ

    C++ を Haskell から呼ぶのが大変だというのが分ったので、Ruby の win32ole.c を参考にC言語で Excel を操作する関数を書いてみました。 これらの関数を Haskell から呼べば HaskellでExcel を操作出来ます(^^)/ C++ ではシートから行・列を指定してCellsオブジェクトを取得しましたが、C で同じ方法だと取得に成功はするものの文字化け。 シートからRengeとセル名 "C2" を指定してDISPID_PROPERTYGET を指定して invoke 関数を呼びました。 DISPID_PROPERTYPUT のときは渡すパラメータが別に必要のようです。 VARIANT の配列を作って渡す方法が分らなくて泣きそうだった・・・。プログラマー's研究所/研究日誌 COMの呼び方に感謝です。 "Renge" "C2" を指定するのは win32

    COM を学ぶ(6) : C言語でExcel を操作する(Mingw) - sirocco の書いてもすぐに忘れるメモ
    dogatana
    dogatana 2017/03/16
  • ネットワークアダプタを無効に

  • Technical documentation

    This browser is no longer supported. Upgrade to Microsoft Edge to take advantage of the latest features, security updates, and technical support.

    Technical documentation
    dogatana
    dogatana 2009/09/18
  • 実装のための基礎知識

    AddRefとReleaseは1対1の関係で呼び出される必要がある。 なぜなら、COMでは、参照カウンタが0になった時点でメモリからインスタンスが消滅する。 そのため、参照カウンタが0にならない場合、いつまでもメモリ上にインスタンスが存在することになる。 ただし、VC++のスマートポインタなどでは、自動的に、AddRef,Releaseの呼びだしが行われるため、スマートポインタを利用している場合は、気にする必要がない。 CoCreateInstance コンポーネントのインスタンスを生成するためのAPI。 クラスファクトリ ほかのCOMコンポーネントの新スタンスを作成するためのコンポーネント。 IDispatchインターフェイス オートメーションの基礎になるインターフェイス。 このインターフェイスを利用すると、コンポーネントの持つ機能(状態や動作)を実行時に知ることが可能。

    dogatana
    dogatana 2009/09/18
  • BSTR型⇒_bstr_t型へ型変換

    前回BSTR型を調べてリンク集がありますので前提知識としてどぞ 知識のゴミ箱:BSTR型[http://mzs184.blogspot.com/2008/03/bstr.html] BSTR型を_bstr_t型へ型変換について。 _bstr_tはBSTRのスマートポインタですね。 BSTRはそのまま使うとメモリリークが怖いので一度_bstr_tに型変換して使った方が良いですね。 // OK { BSTR testBSTR; // BSTR型のメモリ確保と解放 testBSTR = ::SysAllocString(L"testBstr"); ::SysFreeString(testBSTR); } // OK { BSTR testBSTR; testBSTR = ::SysAllocString(L"testBstr"); // 第二引数がfalseなのでtestBSTRをコピーせずに_

    dogatana
    dogatana 2009/09/18
  • http://japan.internet.com/developer/20051004/27.html

    dogatana
    dogatana 2009/09/18
  • VARIANT型(BSTR)のデータを表示するには?

    dogatana
    dogatana 2009/09/18
  • http://www2.wbs.ne.jp/~kanegon/doc/bstr.txt

    dogatana
    dogatana 2009/09/18
  • SAFEARRAY構造体 - メモ魔 @ ウィキ

    主にCOM経由でのデータのやりとりを行う際に使われる。 VBの配列に似た性質を持っていて、各次元毎に配列の長さが決められたりする。 各要素をVARIANT型で持てば、かなり柔軟な情報格納ができる。 …、けど使うのはなんとなく煩雑な気がするし、正直めんどい。 COMを通じてExcelデータの取得、指定レンジオブジェクトへのデータの書き込みなどを 行う際には使わざるを得なくなる。 まぁVBのデータ型を持ってこれる配列、と認識しておいてもいいのでは? メンバ typedef struct tagSAFEARRAY { USHORT cDims; USHORT fFeatures; ULONG cbElements; ULONG cLocks; PVOID pvData; SAFEARRAYBOUND rgsabound[ 1 ]; } SAFEARRAY; cDims 配列の次元 fFeatur

    SAFEARRAY構造体 - メモ魔 @ ウィキ
    dogatana
    dogatana 2009/09/18
  • BSTR VARIANT SAFEARRAY

    VBScript ではIDispatchインタフェースを使ってCOMサーバを呼出します。 受け渡すパラメータは、VARIANT互換のタイプを使います。 ここではわかりにくいBSTR VARIANT SAFEARRAYを親切に説明。 BSTRの使い方 BSTRは、クライアントとCOMサーバで文字列のやり取りに使います。 ヘッダファイルの定義は、 typedef OLECHAR *BSTR typedef WCHAR OLECHAR; typedef unsigned short WCHAR; となっています。ようするにWCHAR(unsigned short)のポインタです。最初に文字列の長さが入ります。 次のように文字列でパラメータを受取りたいときに使います。 下の例では、UNICODEをASCII に変換しています。 STDMETHODIMP CBasp21::SendMail(BSTR

    dogatana
    dogatana 2009/09/17
  • リダイレクトの警告

    表示中のページから http://www.luckypines.com/cgi-bin/mt/mt-search.cgi?IncludeBlogs=1&search=currenttrack にリダイレクトしようとしています。 このページにリダイレクトしないようにする場合は、前のページに戻ってください。

    dogatana
    dogatana 2009/09/16
  • 単純な COM コンポーネントの作成 - Web/DB プログラミング徹底解説

    このページはかなり昔に書いた資料です。今 COM コンポーネントを作るとしたらこの方法では行わないでしょうが、 基的な動作を理解するためには役に立つかもしれないと思い、ここに掲載しています。 このページの目標 ここでは非常に単純なコンポーネントの例を調べることを通して、コンポーネントの作成およびコンポーネントクライアントのプログラミングを理解しましょう。テスト用に作成するコンポーネントは、下図のコンポーネントです。 IDL によるインターフェイスの定義 COM コンポーネントは IDL (Interface Difinition Language) で始まります。IDL を作成する作業では、リンカは必要ないので Visual C++ 6.0 プロジェクトとしては、 Utility Project を選択して新規作成します。 このプロジェクト内に、テキストファイルを新規作成します。ファイル

    単純な COM コンポーネントの作成 - Web/DB プログラミング徹底解説
    dogatana
    dogatana 2009/09/09
  • 目から鱗 w/SQLite » C++で作るCOMサーバ

    .NET を用いればregasm.exeでCOMサーバを簡単に登録することが出来るのだが、やはり.NETは重い。加えて、.NET Framework がインストールされていないコンピュータの割合はそれほど低くないと思われる。 他方で、簡単な構造のCOMサーバなら、C++を用いてWin32プログラムとして製作すればよい。この場合、動作は軽いし汎用性もある。ただし、複雑なプログラムを組むのはやはり骨が折れるのだが…。 今回C++を用いたCOMサーバを製作することになったので、その方法をここにまとめておくことにした。 COMサーバの基となるインターフェース部分を一つのcppファイルにした。以下の通りである。このファイルはいっさい変更することなく用いることが出来る。C++プロジェクトにインクルードすればよい。 comserver.cppの内容 #include <windows

    dogatana
    dogatana 2009/09/09
  • Allergy Design Office COMプログラミング

    COM...正直言ってプログラミングではかかわらないほうが良い。それでも尚COMをやりたいと言うならば、このページが助けになる場面もあろう。何故なら、このページに書かれていることは私が実際にAnpsockやLHAコントロールを作成したときに大いに頭を悩ませた事ばかりだからである。 日語で書かれたCOMのドキュメントは数少ない。決して趣味でやろうなどと考えてはいけない。(私は趣味だが)文中の記述例およびサンプルは、すべてVB6またはVC6で書いてある。 記述例およびサンプルに含まれるファイルの全部、または一部を使用したことによる損害等について、一切の責任を負いません。 COM VARIANT [VC]SAFEARRAY BSTR [VC,ATL]VARIANTによる引数の省略 [VC,ATL]SAFEARRAYをVARIANTで受ける [VC,ATL]SAFEARRAYをVARIANTの

    dogatana
    dogatana 2009/09/07
  • VC++DLL作成補足(Hishidama's VC++Memo "DLL")

    DLLの補足 DLL作成の指針やDLLに関連するファイルについて。 暗黙的リンクと明示的リンクの使い分け DLLに関係するファイル ソースファイル defファイル libファイル expファイル dllファイル [/2007-09-28] 序数 暗黙的リンクと明示的リンク DLLの呼び出し方法には、暗黙的(静的)リンクと明示的(動的)リンクがある。 暗黙的リンクと明示的リンクの特徴(メリット・デメリット) 暗黙的(静的)リンク 明示的(動的)リンク 関数の宣言

  • variant型のデータについてキャストするには?

    [戻る] タカ 2006/06/11(日) 19:32:59 <210.238.23.25> variant型のデータからchar配列に文字列を 複写する方法をご教授いただきたいとおもいます。 _variant_t ward; //ward.bstrVal には"abcdefg"が入力されている (ウォッチウインドウで確認できてきます。) よろしくお願いします。 Blue 2006/06/11(日) 21:05:15 <221.189.235.67> bstrVal は BSTRポインタ型なので、char型配列に変換するには wcstombs関数を使って変換してください。 また、_bstr_t型を使って、const char*型を取得することも可能です。 ex) #include <comdef.h> #include <clocale> #include <i

    dogatana
    dogatana 2009/09/04
  • 2006年02月の雑感 Rubyコンパイル

    2月26日(日) ● 『獣と肉』 (イアン・ランキン) 重厚長大なモジュラー型警察ミステリ。 エジンバラの難民問題をストーリーに絡ませ社会派ミステリとしての一面も見せてくれる。 時には軽口もたたくリーバス警部は魅力的。 一見、何のつながりもないと思われていた事件が絡み合うプロットは見事。 だけど、短編集でリーバス物に入門した私には、ストーリーが長くて読むのに少し疲れた。 これで今年は翻訳4冊、国内4冊で五分と五分。 2月25日(土) ● 『魔力の女』 (グレッグ・アイルズ) 突然、自分の目の前に現れた魅力的な女性。 彼女が話す言葉や仕草は、死んだはずのかつての恋人のものとしか思えなくなってくる。 死んだはずの恋人が生まれ変わったのか、それともこれは巧妙に仕組まれた罠なのか? ミステリには魅力的な謎が欠かせません。 いくら謎解きがすごくても、発端の謎の見せ方がしょぼいと駄目なのです。 その点

    dogatana
    dogatana 2009/09/02