为什么当我使用一个exe的com组件时,我向其中传递一个BSTR参数的变量,但是com中得到的字符串是空值。代码如下:
::CoInitialize(NULL);
IXLockEx *pLockEx = NULL;
HRESULT hr = ::CoCreateInstance(CLSID_XLockEx, NULL, CLSCTX_ALL,
IID_IXLockEx, (LPVOID*)&pLockEx); if (SUCCEEDED(hr) && NULL!=pLockEx)
{
USES_CONVERSION;
hr = pLockEx->put_SystemID(L"hello");
if (SUCCEEDED(hr))
{
AfxMessageBox(L"OK");
}
if (SUCCEEDED(hr))
{
long nData;
//AfxMessageBox(OLE2T(out));
pLockEx->Release();
}
}
::CoUninitialize();
其中hr都是范围正确的值。
谢谢大家了。
::CoInitialize(NULL);
IXLockEx *pLockEx = NULL;
HRESULT hr = ::CoCreateInstance(CLSID_XLockEx, NULL, CLSCTX_ALL,
IID_IXLockEx, (LPVOID*)&pLockEx); if (SUCCEEDED(hr) && NULL!=pLockEx)
{
USES_CONVERSION;
hr = pLockEx->put_SystemID(L"hello");
if (SUCCEEDED(hr))
{
AfxMessageBox(L"OK");
}
if (SUCCEEDED(hr))
{
long nData;
//AfxMessageBox(OLE2T(out));
pLockEx->Release();
}
}
::CoUninitialize();
其中hr都是范围正确的值。
谢谢大家了。
::CoInitialize(NULL);
IXLockEx *pLockEx = NULL;
HRESULT hr = ::CoCreateInstance(CLSID_XLockEx, NULL, CLSCTX_ALL,
IID_IXLockEx, (LPVOID*)&pLockEx);if (SUCCEEDED(hr) && NULL!=pLockEx)
{
USES_CONVERSION; hr = pLockEx->put_SystemID(_bstr_t(L"hello"));
// 或者BSTR bstr = SysAllocString(L"hello"); hr = pLockEx->put_SystemID(bstr); SysFreeString(bstr);
if (SUCCEEDED(hr))
{
AfxMessageBox(L"OK");
} if (SUCCEEDED(hr))
{
long nData; //AfxMessageBox(OLE2T(out));
pLockEx->Release();
}}
::CoUninitialize();