Andrey |
Отправлено: 14.12.2005, 12:54 |
|
Не зарегистрирован
|
Господа программисты. Нужна ВАША помощь. Работал ли кто с ОПС серверами. Любыми?? ЕСли да, то такой вопрос. Нужно получить с удаленной машины список серверов ОПС, установленных на ней. Есть такой код.
HRESULT hr=S_OK;
ZeroMemory(&tCoServerInfo,sizeof(tCoServerInfo));
int nSize=Edit1->Text.Length()*sizeof(WCHAR);
tCoServerInfo.pwszName=new WCHAR[nSize];
mbstowcs(tCoServerInfo.pwszName,Edit1->Text.c_str(),nSize);
hr = CoInitialize(NULL);
//CLSID clsid; // Get the CLSID from the Name
//hr = CLSIDFromProgID((L"CT.CTOPC3.1.DA.1"),&clsid);
hr=CoGetClassObject(CLSID_StdComponentCategoriesMgr,
CLSCTX_REMOTE_SERVER,&tCoServerInfo,IID_IClassFactory,reinterpret_cast<LPVOID*>(&pClassFactory));
ICatInformation* pcr = NULL ;
IUnknown *pOPCUnknown=NULL;
hr=pClassFactory->CreateInstance(pOPCUnknown,IID_ICatInformation,
(void**)&pcr);
IEnumCLSID* pEnumCLSID=0;
CLSID catid=CATID_OPCDAServer10;
pcr->EnumClassesOfCategories(1, &catid, 1, &catid, &pEnumCLSID);
enum { MAX = 20 };
CLSID rgclsid[MAX];
wchar_t *temp;
LPOLESTR p_strProgID;
ListBox1->Items->Clear();
do {
ULONG cActual = 0;
hr = pEnumCLSID->Next(MAX, rgclsid, &cActual);
if (SUCCEEDED(hr)) {
for (ULONG i = 0; i < cActual; i++)
{
StringFromCLSID(rgclsid[i],&temp);// DisplayClass(rgclsid[i]);
ProgIDFromCLSID(rgclsid[i],&p_strProgID);
ListBox1->Items->Add(WideCharToString(temp)+AnsiString(" ")+WideCharToString(p_strProgID));}
}
} while (hr == S_OK);
Но вопреки ожиданиям, постоянно получаю список ЛОКАЛЬНО зарегистрированных серверов. Хотя при работе с прямым указанаием clsid
> hr=CoGetClassObject(clsid,
производится подключение к удаленной машине и создание обьекта на ней. Почему происходит это?? Где грабли??Я только начал разбирать COM для работы с ОПС. Прошу подсказать.
|
|
LORN |
Отправлено: 14.12.2005, 16:19 |
|
Не зарегистрирован
|
посмотри сайт http://www.opcfoundation.org/
он англоязычный
хороший ресурс если будешь много работать по этой теме
(можно взять их исходники и библиотеки после регестрации) |
|
Andrey |
Отправлено: 15.12.2005, 09:13 |
|
Не зарегистрирован
|
Там я уже был. Исходники только для мемберов после оплаты 500 дохлых енотов. А после регистрации они дают только библиотеки скачать свои БЕЗ описания.!!!!!!!!!!
|
|
Andrey |
Отправлено: 15.12.2005, 10:25 |
|
Не зарегистрирован
|
Спасибо. Сам разобрался уже. |
|
|