Сейчас на форуме: bartolomeo, vasilevradislav, rmn, Magister Yoda (+6 невидимых)

 eXeL@B —› Программирование —› Com
Посл.ответ Сообщение

Ранг: 4.0 (гость)
Активность: 0=0
Статус: Участник

Создано: 29 июня 2008 11:43
· Личное сообщение · #1

Всем доброго времени суток ....
столкнулсо с необходимостью работать с ocx компонентом из с ++ ....
но есть кое какие пробдлемы .... я юзаю msrdp.ocx

он поддерживает несколько интерфейсов :
IMsTscSecuredSettings interface
IMsTscAx interface
IMsTscAxEvents interface
IMsTscAdvancedSettings interface

как вызвать какую нить функу из обьекта ....
для примера .... в VB это делаетсо очень просто и изящно ....


if MsTsc.SecuredSettingsEnabled then
MsTsc.SecuredSettings.StartProgram = "notepad.exe"
else
msgbox "Cannot access secured setting (startprogram) in the current browser zone"
end if


как например этот код переписать только на сях .....
линки на доки не нужны ... нужны примеры .... заранее благодарен



Ранг: 4.0 (гость)
Активность: 0=0
Статус: Участник

Создано: 29 июня 2008 13:29
· Личное сообщение · #2

меня еще интересует как обратитьсо к интерфейсу ???
как вызвать наприер функу ... из IMsTscAx интерфейса функу put_Domain ???



Ранг: 271.5 (наставник), 12thx
Активность: 0.150
Статус: Участник
Packer Reseacher

Создано: 29 июня 2008 14:25
· Личное сообщение · #3

felixx
1. Вызвать CoInitialize
2. Создать КоОбъект
3. Вызвать QueryInterface

ЗЫ:
Юзай дельфи, там с COM попроще в разы

-----
My love is very cool girl.





Ранг: 196.6 (ветеран), 11thx
Активность: 0.070.01
Статус: Участник

Создано: 29 июня 2008 18:16
· Личное сообщение · #4

или c++ builder - внешне как с++, но на деле так же просто как в делфи



Ранг: 4.0 (гость)
Активность: 0=0
Статус: Участник

Создано: 29 июня 2008 19:47
· Личное сообщение · #5

HRESULT QueryInterface(
REFIID iid,
void ** ppvObject
);

//iid

//[in] Identifier of the interface being requested.


как получит этот самый iid ???




Ранг: 196.6 (ветеран), 11thx
Активность: 0.070.01
Статус: Участник

Создано: 29 июня 2008 21:22
· Личное сообщение · #6

он должен быть известен тебе, у всех зарегистрированных ком-объектов есть гуид, если я ничего не путаю



Ранг: 271.5 (наставник), 12thx
Активность: 0.150
Статус: Участник
Packer Reseacher

Создано: 29 июня 2008 21:36
· Личное сообщение · #7

[wl] Без GUID вся технология COM накроется медным тазом )

-----
My love is very cool girl.




Ранг: 52.1 (постоянный), 1thx
Активность: 0.020
Статус: Участник

Создано: 30 июня 2008 02:55
· Личное сообщение · #8

В составе VisualStudio (у меня .Net, там есть, должна быть и в остальых) есть утилитки:
1. ActiveX Control Test Container (TSTCON32.EXE) - позволяет экспериментировать с ActiveX компонентами;
2. OLE/COM Object Viewer (OLEVIEW.EXE) - просмотр информации об установленных компонентах;



Ранг: 4.0 (гость)
Активность: 0=0
Статус: Участник

Создано: 30 июня 2008 10:36
· Личное сообщение · #9

guid контрола я знаю .....
а вот uid интерфейса ???



Ранг: 37.1 (посетитель)
Активность: 0.010
Статус: Участник

Создано: 30 июня 2008 11:42
· Личное сообщение · #10

Wyfinger написал же... Вот присоединяю - должен вроде работать отдельно от SDKl

d373_30.06.2008_CRACKLAB.rU.tgz - OleView.rar



Ранг: 271.5 (наставник), 12thx
Активность: 0.150
Статус: Участник
Packer Reseacher

Создано: 30 июня 2008 11:56 · Поправил: theCollision
· Личное сообщение · #11

felixx гы ))) ЖЖЖОШЬ ))) Есть уникальный идентификатор, который делает чтото уникальном в пределах всего земного шара, по задумке авторов ))) Когда ты делаешь GUID ты его можешь идентифицировать для :
- Класса (CLSID)
- Интерфейса (UID)
etc

Чуешь ? GUID всего лишь дает понять программисту, что интерфейс\класс с таким номером точно не будет в системе. (еще большой конено вопрос, если вспомнить китайские поделки )))

Вот и спрашивай у КоОБъекта через QueryInterface нужней тебе интерфейс посредством передачи UID и если не вернется E_NOIMPL, то юзай его.

Вот пример на дельфи:
IPlugin = Interface
['{A602C550-E13A-466B-AD8D-A30A6842F16A}']
function GetName : string;
function GetAuthor : string;
function GetVersion : string;
function GetDescription : string;
function GetType : TPluginType;
End;

вишь число красивое ? Это и есть UID интерфейса и как правило называют его IID_<чего-то там>

Вобщем --> Вот <-- http://delphikingdom.ru/asp/viewitem.asp?catalogid=1109

-----
My love is very cool girl.



 eXeL@B —› Программирование —› Com
:: Ваш ответ
Жирный  Курсив  Подчеркнутый  Перечеркнутый  {mpf5}  Код  Вставить ссылку 
:s1: :s2: :s3: :s4: :s5: :s6: :s7: :s8: :s9: :s10: :s11: :s12: :s13: :s14: :s15: :s16:


Максимальный размер аттача: 500KB.
Ваш логин: german1505 » Выход » ЛС
   Для печати Для печати