COleDispatchDriver から exe を呼び出すプログラムがあります。これにより、m_lpDispatch ポインターが NULL になります。メインexeのdllからこれを呼び出しています。コードの先頭と末尾に CoInitialize(NULL)/CoUninitialize() を追加しました。しかし、それでもexeは表示されません。
CoInitialize(NULL);
matProp = IMatProp();
matProp.CreateDispatch(_T("MatProp.Document"));
matProp.Initialize();
matProp.ShowApplication( SW_SHOW );
CoUninitialize();
IMatProp は、ColeDispatchDriver クラスをサブクラス化するマシン生成の IDispatch ラッパー クラスです。以下はそのクラスのメソッドです。
long IMatProp::Initialize() {
long result;
InvokeHelper(0x1, DISPATCH_METHOD, VT_I4, (void*)&result, NULL);
return result;
}
long IMatProp::ShowApplication(長いショー) {
long result;
static BYTE parms[] =
VTS_I4;
InvokeHelper(0x2, DISPATCH_METHOD, VT_I4, (void*)&result, parms,
show);
return result;
}
これはexeから呼び出すときはうまくいきましたが、dllから呼び出すとこの問題が発生しました。私を助けてください。どうもありがとう。