Легенда:
новое сообщение
закрытая нитка
новое сообщение
в закрытой нитке
старое сообщение
|
- Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
- Новичкам также крайне полезно ознакомиться с данным документом.
 |
OLE/COM 15.11.01 22:54 Число просмотров: 1130
Автор: + <Mikhail> Статус: Elderman
|
> Как программно (С++) узнать установлен и зарег-н ли > определенный COM-сервер? C++ sdes` ni prichem ispolzuesh Win32 API (OLE)
elsi ty znaesh progig to ispolzuii foo:
hr = CLSIDFromProgId(L"MSScriptControl.ScriptControl.1",&clsid);
esli znesh naoborot classid to:
hr = ProgIDFromCLSID(...);
elsi class zaregestrirovan to hr == S_OK
A voobcheto vse chto eti funccii delaut eto smotriat v registri HKEY_CLASS_ROOT; i tam vsia informacia ob etom objecte :
path, threading model, progid, version, typelib esli suchestvuet i t. d.
tak chto mozhesh napisat` funciu kotoraiy budet proveriat` vse chto ty hochesh is registry.
> И еще вопрос. > В своей проге использую ScriptControl. > Соответственно, делаю все на базе MFC: > > CoInitialize(NULL); > pScriptControl= new > IScriptControlPtr(__uuidof(ScriptControl)); > ........................................ > pScriptControl->Run(FunctionName, &args); > > Как сделать это же не пользуясь MFC?
CoInitialize(NULL);
CLSID clsid;
HRESULT hr;
IScriptControl *pScriptCtr;
hr = CLSIDFromProgId(L"MSScriptControl.ScriptControl.1",&clsid);
if(SUCCEEDED(hr))
{
hr = CoCreateInstance(clsid, NULL, CLSCTX_SERVER,IID_IScriptControl,(void**)&pScriptCtr);
if(SUCCEEDED(hr))
{
hr = pScriptCtr->Run(FunctionName, &args);
//BCE chudesa sdes`. . .
//. . .
pScriptCtr->Release();
};
}
CoUnInitialize();
---
|
|
<programming>
|
OLE/COM 15.11.01 11:49
Автор: BOBAH Статус: Незарегистрированный пользователь
|
Как программно (С++) узнать установлен и зарег-н ли определенный COM-сервер?
И еще вопрос.
В своей проге использую ScriptControl.
Соответственно, делаю все на базе MFC:
CoInitialize(NULL);
pScriptControl= new IScriptControlPtr(__uuidof(ScriptControl));
........................................
pScriptControl->Run(FunctionName, &args);
Как сделать это же не пользуясь MFC?
|
 |
OLE/COM 15.11.01 22:54
Автор: + <Mikhail> Статус: Elderman
|
> Как программно (С++) узнать установлен и зарег-н ли > определенный COM-сервер? C++ sdes` ni prichem ispolzuesh Win32 API (OLE)
elsi ty znaesh progig to ispolzuii foo:
hr = CLSIDFromProgId(L"MSScriptControl.ScriptControl.1",&clsid);
esli znesh naoborot classid to:
hr = ProgIDFromCLSID(...);
elsi class zaregestrirovan to hr == S_OK
A voobcheto vse chto eti funccii delaut eto smotriat v registri HKEY_CLASS_ROOT; i tam vsia informacia ob etom objecte :
path, threading model, progid, version, typelib esli suchestvuet i t. d.
tak chto mozhesh napisat` funciu kotoraiy budet proveriat` vse chto ty hochesh is registry.
> И еще вопрос. > В своей проге использую ScriptControl. > Соответственно, делаю все на базе MFC: > > CoInitialize(NULL); > pScriptControl= new > IScriptControlPtr(__uuidof(ScriptControl)); > ........................................ > pScriptControl->Run(FunctionName, &args); > > Как сделать это же не пользуясь MFC?
CoInitialize(NULL);
CLSID clsid;
HRESULT hr;
IScriptControl *pScriptCtr;
hr = CLSIDFromProgId(L"MSScriptControl.ScriptControl.1",&clsid);
if(SUCCEEDED(hr))
{
hr = CoCreateInstance(clsid, NULL, CLSCTX_SERVER,IID_IScriptControl,(void**)&pScriptCtr);
if(SUCCEEDED(hr))
{
hr = pScriptCtr->Run(FunctionName, &args);
//BCE chudesa sdes`. . .
//. . .
pScriptCtr->Release();
};
}
CoUnInitialize();
---
|
 |  |
Спасибо, сейчас попробую. 16.11.01 12:02
Автор: BOBAH Статус: Незарегистрированный пользователь
|
|
|
 |  |
Сенькаю! И как я сам не догадался... :) 16.11.01 11:02
Автор: BioUnit Статус: Незарегистрированный пользователь
|
|
|
|
|