COM カテゴリーの記事一覧 - 車輪のx発明 ~B.G's Blog~

COM

ITypeLib::GetDocumentation

COM

ITypeLib::GetDocumentationは、ライブラリのドキュメント文字列など取得する。ITypeLib::GetDocumentation (oaidl.h) - Win32 apps | Microsoft LearnITypeLib.cppで、とする。 こうなる。こうなる。Sample/com/ITypeLib/GetDocumentation/src/ITypeLib at …

ITypeLib::GetTypeInfoCount

COM

ITypeLib::GetTypeInfoCountで、持っているITypeInfoの数を返す。ITypeLib::GetTypeInfoCount (oaidl.h) - Win32 apps | Microsoft LearnITypeLib.cppで、こう書く。 こんなにいっぱい出る。こんなにいっぱい出る。Sample/com/ITypeLib/GetTypeInfoCount/src…

ITypeLib::GetTypeInfo

COM

ITypeLib::GetTypeInfoで、指定のITypeInfoポインタを取得する。ITypeLib::GetTypeInfo (oaidl.h) - Win32 apps | Microsoft LearnITypeLib.cppで、こう書く。 0番目を取得。0番目を取得。Sample/com/ITypeLib/GetTypeInfo/src/ITypeLib at master · bg1bgst…

ITypeLib

COM

ITypeLibは、タイプライブラリのCOMインターフェイス。ITypeLib (oaidl.h) - Win32 apps | Microsoft Learn今回は、ITypeLib::GetTypeInfoCountで持っているITypeInfoポインタの数を取得 ITypeLib.cppで、こう書く。 こうなる。こうなる。Sample/com/ITypeLi…

LoadTypeLib

COM

LoadTypeLibで、タイプライブラリをロードする。LoadTypeLib 関数 (oleauto.h) - Win32 apps | Microsoft LearnLoadTypeLib.cppで、こう書く。 で、以前タイプライブラリが見つからないと言ってたが、色々探したら、 ここにあった。ここにあった。Sample/com…

ITypeInfo::GetNames

COM

ITypeInfo::GetNamesで、関数名を取得する。ITypeInfo::GetNames (oaidl.h) - Win32 apps | Microsoft Learn タイプライブラリITypeInfo.cppで、とすると、 こっから、こっから、 ここまでの大量の関数名ここまでの大量の関数名。Sample/com/ITypeInfo/GetNa…

ITypeInfo::GetFuncDesc

COM

ITypeInfo::GetFuncDescは、指定した関数情報FUNCDESCを取得する。ITypeInfo::GetFuncDesc (oaidl.h) - Win32 apps | Microsoft Learn タイプライブラリITypeInfo.cppで、とすると、 大量のMEMBERIDだが、一部重複してる。大量のMEMBERIDだが、一部重複して…

ITypeInfo::GetDocumentation

COM

ITypeInfo::GetDocumentationで、型の名前やドキュメント文字列など取得する。ITypeInfo::GetDocumentation (oaidl.h) - Win32 apps | Microsoft Learn タイプライブラリITypeInfo.cppで、とすると、 こうなる。こうなる。 strDocStringはNULLなのね。Sample…

TYPEATTR

COM

TYPEATTR構造体に型の属性が格納されている。TYPEATTR (oaidl.h) - Win32 apps | Microsoft Learn タイプライブラリTYPEATTR.cppで、とすると、 こうなる。こうなる。Sample/com/TYPEATTR/TYPEATTR/src/TYPEATTR at master · bg1bgst333/Sample · GitHub

ITypeInfo::GetTypeAttr

COM

ITypeInfo::GetTypeAttrで、型の属性を取得する。ITypeInfo::GetTypeAttr (oaidl.h) - Win32 apps | Microsoft LearnITypeInfo.cppで、とすると、 デバッガで止めた時のpTypeAttrはこうで、デバッガで止めた時のpTypeAttrはこうで、 この時の出力はこう。こ…

ITypeInfo

COM

ITypeInfoは、型情報を持つインターフェース。ITypeInfo (oaidl.h) - Win32 apps | Microsoft LearnITypeInfo.cppで、ITypeInfo::GetDocumentationで、型名を取得。 "_Application"と出る。"_Application"と出る。 これ、タイプライブラリOleView.exeで"Type…

IDispatch::GetTypeInfo

COM

IDispatch::GetTypeInfoで、オブジェクトの型情報を取得する。IDispatch::GetTypeInfo (oaidl.h) - Win32 apps | Microsoft LearnIDispatch.cppで、として、デバッグ実行。 何度かこれが出るけど、「はい」で。何度かこれが出るけど、「はい」で。 pTypeInfo…

GetActiveObject

COM

既に実行しているアプリを操作したい場合は、GetActiveObjectでアクティブな登録済みオブジェクトを取得すればいい。動的な実行 GetActiveObject function (oleauto.h) - Win32 apps | Microsoft LearnGetActiveObject.cppで、こうする。 Wordを起動しておい…

IDispatch::Invoke

COM

IDispatch::Invokeで、メソッドやプロパティにアクセス(呼び出しや設定・取得)する。動的な実行 IDispatch::Invoke (oaidl.h) - Win32 apps | Microsoft LearnIDispatch.cppで、ちょっと引数周りがややこしいけど、こうすると、 こうなってこうなって、 Word…

IDispatch::GetIDsOfNames

COM

IDispatch::GetIDsOfNamesで、メソッドやプロパティのDISPIDを取得する。IDispatch (oaidl.h) - Win32 apps | Microsoft Learn 動的な実行IDispatch.cppで、こうすると、 こうなるこうなる。Sample/com/IDispatch/GetIDsOfNames/src/IDispatch at master · b…

IDispatch

COM

IDispatchインターフェースを使って、オブジェクト、メソッド、プロパティを公開する。IDispatch (oaidl.h) - Win32 apps | Microsoft Learn 動的な実行まずは、IDispatchインターフェースポインタの取得から。 IDispatch.cppで、CoCreateInstanceで、IDispa…

CLSIDFromProgID

COM

CLSIDFromProgIDで、ProgIDからCLSIDを取得する。CLSIDFromProgID 関数 (combaseapi.h) - Win32 apps | Microsoft Learn 動的な実行ProgIDはレジストリに書いてある。 WordのProgIDは、"Word.Application"らしい。 CLSIDFromProgID.cppでは、こう書く。 CLSI…

IsEqualIID

COM

IsEqualIIDで、2つのIIDが一致するか判定する。IsEqualIID - Win32 apps | Microsoft Learnこれまで、比較演算子"=="で比較してきたが、果たして正しいのか・・・。 たしか、構造体は"=="では比較できないはずだが・・・。WebBrowserHost.cppで、比較検証コ…

IWebBrowser2::put_Silent

COM

IWebBrowser2::put_Silentで、JavaScriptエラーなどのメッセージダイアログ表示を抑止する。Silent Property (IWebBrowser2) | Microsoft LearnWebBrowserHost.cppで、IWebBrowser2::put_SilentにVARIANT_TRUEをセット。 OKOK。 エラー出なくなって、騒がし…

IOleInPlaceObject::SetObjectRects

COM

IOleInPlaceObject::SetObjectRectsで、インプレースオブジェクトの範囲を指定する。IOleInPlaceObject::SetObjectRects (oleidl.h) - Win32 apps | Microsoft Learn 概要説明WebBrowserHost.cppで、こう書く。 成功はするが成功はするが、 左上に出来てしま…

IOleInPlaceObject

COM

IWebBrowser2のQueryInterfaceで、IOleInPlaceObjectポインタを取得する。IOleInPlaceObject (oleidl.h) - Win32 apps | Microsoft Learn 概要説明WebBrowserHost.hで、OnSizeを追加。 WebBrowserHost.cppで、IOleInPlaceObjectポインタの取得。 取得出来て…

IWebBrowser2::Navigate

COM

IWebBrowser2::Navigateで指定のURLに遷移する。Navigate Method (IWebBrowser2) | Microsoft Learn 概要説明WebBrowserHost.hで、Navigateを追加。 これの定義は、こう書く。初期化後に初期URLに遷移。 古いブラウザなのでスクリプトエラー古いブラウザなの…

IOleInPlaceSite

COM

IOleInPlaceSiteも実装する。IOleInPlaceSite (oleidl.h) - Win32 apps | Microsoft Learn 概要説明WebBrowserHost.hで、IOleInPlaceSiteは、IOleWindowを継承してるので、両方のメソッドを追加する。 WebBrowserHost.cppで、メソッドの実装はこう。QueryInt…

IOleObject::DoVerb

COM

IOleObject::DoVerbで、『エンドユーザーのアクションに応答してオブジェクトがアクションを実行するように要求します』ということらしい。IOleObject::D oVerb (oleidl.h) - Win32 apps | Microsoft Learn 概要説明WebBrowserHost.cppで、こう書く。 失敗し…

IOleObject::SetClientSite

COM

IOleObject::SetClientSiteで、IOleClientSiteポインタ(に扮したCWebBrowserHostポインタ)をセットする。IOleObject::SetClientSite (oleidl.h) - Win32 apps | Microsoft Learn 概要説明WebBrowserHost.cppで、こう書く。 ここまで上手くいってる。ここまで…

IOleClientSite

COM

CWebBrowserHost自身に、IOleClientSiteを実装し、自身のポインタthisをIOleClientSiteポインタにキャストする。IOleClientSite (oleidl.h) - Win32 apps | Microsoft Learn 概要説明WebBrowserHost.hで、IOleClientSiteを継承に追加。 参照カウンタm_lRefも…

IOleObject

COM

IWebBrowser2からIOleObjectを取得する。IOleObject インターフェイス (Microsoft.VisualStudio.OLE.Interop) | Microsoft Learn 概要説明QueryInterfaceで取得出来る。このように書く。 取得出来てる取得出来てる。Sample/com/IOleObject/IOleObject/src/IO…

IWebBrowser2

COM

IWebBrowser2は、いわゆるウェブブラウザコンポーネントの本体である。IWebBrowser2 (exdisp.h) - Win32 apps | Microsoft Learn 概要説明TestやBFCで作ってたCUserControlクラスを継承して、CWebBrowserHostクラスを作成し、そこにIWebBrowser2などを使って…

OleInitialize

COM

OleInitializeは、OLEの初期化をする。OleInitialize 関数 (ole2.h) - Win32 apps | Microsoft Learn内部でCoInitializeExを呼んでCOMの初期化してるらしい。 OleInitialize.cppで、この先、デスクトップアプリで使うので、_tWinMainで呼び出すことにした。 …

IsEqualCLSID

COM

IsEqualCLSIDでも、同じか判定できる。 といっても、中身は一緒。IsEqualCLSID - Win32 apps | Microsoft LearnIsEqualCLSID.cppで、今度は、"{53F56307-B6BF-11D0-94F2-00A0C91EFB8B}"とGUID_DEVINTERFACE_DISKを比較。 同じ。同じ。Sample/com/IsEqualCLSI…