■54842 / inTopicNo.1) |
_com_dispatch_methodの使い方 |
□投稿者/ 雲 (29回)-(2010/11/06(Sat) 10:56:09)
|
分類:[C/C++]
最近、何となく、COM の使い方を調べていたのですが、一つわからないことがあります。
良く、VBS で使う FileSystemObject を C++ から使ってみよう。としたのですが、以下のところがどうしてもわかりません。
_COM_SMARTPTR_TYPEDEF( IDispatch, __uuidof(IDispatch) );
IDispatchPtr fileSystsemObject; fileSystsemObject.CreateInstance( L"Scripting.FileSystemObject" );
DISPID id; _bstr_t str(L"FileExists"); fileSystsemObject->GetIDsOfNames( IID_NULL, &str.GetBSTR(), 1, LOCALE_USER_DEFAULT, &id );
// これは OK _variant_t argc(L"d:\\abc.tif"); DISPPARAMS arg = { 0 }; arg.cArgs = 1; arg.rgvarg = &argc; fileSystsemObject->Invoke( id, IID_NULL, LOCALE_USER_DEFAULT, DISPATCH_METHOD, &arg, &aaa, nullptr, nullptr );
// これは、NG BOOL b; _com_dispatch_method( fileSystsemObject, id, DISPATCH_METHOD, VT_BOOL, &b, L"d:\\abc.tif" );
何かを誤解しているとは思うのですが。。。
参考: http://support.microsoft.com/kb/178845/ja
|
|