CString strError;
HRESULT hr=CoInitializeEx(NULL,COINIT_MULTITHREADED);
CString strNode = _T("172.16.2.68");
CString strProID = _T("Kingview.view");
if (strNode.IsEmpty()) // local server
{
CLSID clsid;
hr = CLSIDFromProgID(strProID, &clsid);
ASSERT(hr == S_OK);
MULTI_QI mqi[1];
mqi[0].hr = S_OK;
mqi[0].pIID = &IID_IOPCServer;
mqi[0].pItf = NULL;
hr = CoCreateInstanceEx(clsid, NULL, CLSCTX_ALL, NULL, 1, mqi);
ASSERT(hr == S_OK);
}
else // remote server
{
COSERVERINFO si;
ZeroMemory(&si, sizeof(si));
si.pwszName = (LPWSTR)(strNode.GetString());
IOPCServerList *pIServerList;
MULTI_QI mqi[1];
mqi[0].hr = S_OK;
mqi[0].pIID = &IID_IOPCServerList;
mqi[0].pItf = NULL;
hr = CoCreateInstanceEx(CLSID_OPCServerList, NULL, CLSCTX_ALL, &si, 1, mqi);
if (FAILED(hr) || FAILED(mqi[0].hr))
{
strError.Format(_T("CoCreateInstanceEx失败,错误码 = %d"), hr);
MessageBox(strError);
CoUninitialize();
return;
}
pIServerList = (IOPCServerList*)mqi[0].pItf;
ASSERT(pIServerList);
CLSID clsid;
hr = pIServerList->CLSIDFromProgID(strProID, &clsid);
ASSERT(hr == S_OK);
mqi[0].hr = S_OK;
mqi[0].pIID = &IID_IOPCServer;
mqi[0].pItf = NULL;
hr = CoCreateInstanceEx(clsid, NULL, CLSCTX_ALL, &si, 1, mqi);
ASSERT(hr == S_OK);
}
CoUninitialize();
转载自: http://blog.sina.com.cn/s/blog_3e730dc10100xuet.html