za ActiveX control i WWW

10 отговора 269 прегледа
#1

za ActiveX control i WWW

abe imam edin siriozen problem, triabva da se napravi edna programa, koiato se durji v eksplorera kato inplace server, t.e. primerno kakto se otvariat pdf fail4etata. ama tva e lesno, oba4e horata iskat tva da stava direktno kato se otvori dadena internetska strani4ka, bez da e neobhodimo da se svalia i instalira prilojenieto na lokalnia komputer. demek kato obiknoveno activex component4e. osnovnia problem e 4e triabva da ima niakolko prozoreca i menu.. i toolbar. ne mi triabva gotovo reshenie, ami nekoia umna glava da kaje e li fazmojno takova jivotno, i ako ne ima li neshto s koeto da se zameni.. stava vapros za programka na VeCe++. ako puk moje i dadete niakvi nasoki i preporuki.. she 4erpia po bira;)

Отговор
в отговор на troshko #2

Re: za ActiveX control i WWW

Не може да се изпълнява код, който не е в машината
Програмата ще трябва да се download-ва, независимо дали е COM контейнер, java аплет или каквото и да било друго.
Но ако имаш предвид, че потребителят не трябва да инсталира нищо (софтуера да се инсталира автоматично), то тогава има 2 решения - едното е интернетски инсталатор, не може да не си виждал такива, а другото е както казваш - ActiveX контрола. Но без значение на какво ще се спреш, ако имаш твой код, който се изпълнява на конкретна машина, то можеш да правиш каквото си искаш - прозорци, тулбарове, менюта и т.н.


Я вышел им наперерез...
Отговор
в отговор на MиГ #3

Re: za ActiveX control i WWW

dobre be basi, az to4no tva imam predvid.. usera ne triabva da instalira nishto! ama ActiveX controlite niamat menuta, niamat pravo da suzdavat prozorci.. i izobshto.. samo niakuv OnDraw metod. ili pone az ne moga da vdiana kak!!! help pls

Отговор
в отговор на troshko #4

Re: za ActiveX control i WWW

нямат право да създават прозорци?
и само някакъв OnDraw метод?

от IOleClientSite правиш QueryInterface - получаваш IOleInPlaceSite, от него викаш GetWindowContext и получаваш IOleInPlaceFrame и IOleInPlaceUIWindow - което ти и трябва.
това е.

Отговор
в отговор на troshko #5

Re: za ActiveX control i WWW

mi ima edno nesto BHO(Browser Helper Object) koeto se startira sas vsiaka instacia na explorera i mu se podava ukazatel kam IE(raboti samo s Internet Explorer obache). No taka ili inache triabva da se sloji v registry-to za da moje da se vika ot IE prozoreca kogato se startira. Inache s nego mojesh da pravish kakvoto si poiskash obache triabva da go ima na komputera na klienta i da se sloji v registry-to 8-))))

Отговор
в отговор на troshko #6

Re: za ActiveX control i WWW

За пръв път чувам за win програма, която да "няма право да създава прозорци"
Но в интерес на истината, OnDraw ти е достатъчен за всичко, стига да ти се занимава.
И изобщо имам едно такова чувство, че си се захванал с нещо, което не ти е по силите


Я вышел им наперерез...
Отговор
в отговор на xenomeno #7

Re: za ActiveX control i WWW

Не е само за Internet Explorer, а за Explorer (shell-a на win) като цяло. Това е готино нещо (БХО), но трябва да се пише много прецизно, тъй като има доста разлики между браузването на машината, на www на ftp и т.н. Примерно като си браузваш диска, get_Document на IWebBrowser2 връща NULL и ако нямаш съответната проверка, получаваш "бум".
А за регистрито има една хитрост: при линкването на COM dll-a в ресурсите се включват едни .rgs файлчета,които обикновено съдържат информацията, необходима при регистрирането на dll-a. Те по принцип се генерират автоматично, и не се забелязват, но нищо не пречи да си добавиш в тях своя информация, като например необходимата за BHO-то. При изпълнение на DllRegisterServer ATL-a ти ъпдейтва регистрито автоматично.


Я вышел им наперерез...
Отговор
в отговор на MиГ #8

Re: za ActiveX control i WWW

ok, dobre priznavam.. mai niakoi raboti mi idvat v pove4ko
i blagodaria za ideite. no rabotata triabva da se vurshi, i to skoro
naistina vsi4ko moje da se napravi s OnDraw, no tva e bezmisleno shtoto ve4e ima gotovo prilojenie na MFC raboteshto localno. ideiata e da se prenese to v ActiveX i da se startira samo v browsera, kato prosto izpolzvam document-view arhitekturata koiato e izgradena ve4e.. i pls, kak da si go izvikam tva IOleClientSite ebasi

Отговор
в отговор на troshko #9

Re: za ActiveX control i WWW

контейнерът ще ти предаде pointer към своя IOleClientSite като прави IOleObject->SetClientSite() (като преди това е взел от теб IOleObject)..

опасявам се, че това ти звучи като Traditional Chinese.. :(

не разбирам много от MFC, no ако това готовото MFC приложение не е направено като COM сървър, можете да направиш ново като кажеш на AppWizard-а да бъде COM сървър и после да пренесеш останалите класове от стария проект в новия.
по принцип не е задължително COM сървъра да е inproc (тоест DLL) - например когато отвориш DOC файл в Internet Explorer-a - MS Word се активира inplace, нищо че е out-of-process server (EXE).

Отговор
в отговор на _ #10

Re: za ActiveX control i WWW

Аз се опасявам, че използването на MFC в този случай не е много уместно, тъй като работата става дебела, а за download трябват тънки неща...


Я вышел им наперерез...
Отговор
в отговор на MиГ #11

Re: za ActiveX control i WWW

dobre, niakvi idei.. otkude da si nameria niakuv gotov skelet na prilojenie ot koito da se u4a? pls

Отговор