информационная безопасность
без паники и всерьез
 подробно о проектеRambler's Top100
Все любят медСетевые кракеры и правда о деле ЛевинаГде водятся OGRы
BugTraq.Ru
Русский BugTraq
 Анализ криптографических сетевых... 
 Модель надежности двухузлового... 
 Специальные марковские модели надежности... 
 700 с лишним git-серверов пострадало... 
 От повторного пришествия Шаи-Хулуда... 
 Крупный сбой Azure и других сервисов... 
главная обзор RSN блог библиотека закон бред форум dnet о проекте
bugtraq.ru / форум / programming
Имя Пароль
ФОРУМ
если вы видите этот текст, отключите в настройках форума использование JavaScript
регистрация





Легенда:
  новое сообщение
  закрытая нитка
  новое сообщение
  в закрытой нитке
  старое сообщение
  • Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
  • Новичкам также крайне полезно ознакомиться с данным документом.
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 Статус: Незарегистрированный пользователь
<"чистая" ссылка>
1




Rambler's Top100
Рейтинг@Mail.ru


  Copyright © 2001-2025 Dmitry Leonov   Page build time: 0 s   Design: Vadim Derkach