COM

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…

IsEqualGUID

COM

IsEqualGUIDで、2つのGUIDが同じか判定する。IsEqualGUID - Win32 apps | Microsoft LearnIsEqualGUID.cppで、GUID文字列"{53F5630D-B6BF-11D0-94F2-00A0C91EFB8B}"は、GUID_DEVINTERFACE_VOLUMEのことなので、GUID構造体guid1にして、IsEqualGUIDでGUID_DEV…

CLSIDFromString

COM

CLSIDFromStringは、GUID文字列をCLSIDつまりGUIDに変換する。CLSIDFromString 関数 (combaseapi.h) - Win32 apps | Microsoft LearnCLSIDFromString.cppで、GUID_DEVINTERFACE_VOLUMEを文字列に変換して出力、GUIDに戻して中身をGUID文字列書式で出力。 こ…

CoTaskMemFree

COM

CoTaskMemFreeは、CoTaskMemAlloc(これについてはいずれ取り扱う。)などで確保したメモリを解放する。CoTaskMemFree 関数 (combaseapi.h) - Win32 apps | Microsoft LearnStringFromCLSIDで取得した文字列も、内部でメモリ確保してる。CoTaskMemFreeで解放し…

StringFromCLSID

COM

StringFromCLSIDでも、GUIDから文字列に変換できる。StringFromCLSID 関数 (combaseapi.h) - Win32 apps | Microsoft LearnWCHARバッファではなく、ポインタのアドレスを渡すと内部で自動でバッファを確保するので、終わったらCoTaskMemFreeで解放する必要が…

StringFromGUID2

COM

StringFromGUID2で、指定のGUID構造体の内容を、GUID文字列に変換する。StringFromGUID2 関数 (combaseapi.h) - Win32 apps | Microsoft LearnStringFromGUID2.cppで、こう書く。 楽にGUID文字列に変換できた。楽にGUID文字列に変換できた。Sample/com/Strin…

GUID

COM

GUIDは、GUID構造体各メンバに各桁の値を格納し、GUID系の関数でいろいろ操作する。GUID - Win32 apps | Microsoft LearnGUID構造体に値をセットして、出力する時はGUID文字列形式で出力する。 GUID.cppで、こう書く。 Data4[0]とData4[1]は、Data2やData3と…

IWbemClassObject::GetObjectText

COM

IWbemClassObject::GetObjectTextを使うことで、オブジェクトの内容をテキスト形式で取得できる。IWbemClassObject::GetObjectText (wbemcli.h) - Win32 apps | Microsoft DocsIWbemClassObject.cppで、このようにする。 でUSBポータブルHDDの前のモデルを挿…

IWbemClassObject::Get

COM

IWbemClassObject::Getで、指定された名前のプロパティの値を取得する。IWbemClassObject::Get (wbemcli.h) - Win32 apps | Microsoft DocsIWbemClassObject.cppで、"SELECT * FROM Win32_OperatingSystem"のクエリで取得した一覧の要素のNameプロパティを取…