Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Потрепаться";
Текущий архив: 2003.08.14;
Скачать: [xml.tar.bz2];

Вниз

не вызывается Invoke   Найти похожие ветки 

 
Е-Моё имя   (2003-07-30 15:40) [0]

Помогите разобраться с проблемкой.
надо управлять опциями загрузки TWebBrowser.
в MSDN:
The WebBrowser Control gives you control over what it downloads, displays, and executes. To gain this control, you need to implement your host"s IDispatch so it handles DISPID_AMBIENT_DLCONTROL. When the WebBrowser Control is instantiated, it will call your IDispatch::Invoke with this ID. Set pvarResult to a combination of following flags, using the bitwise OR operator, to indicate your preferences.

и пример
STDMETHODIMP CAtlBrCon::Invoke(DISPID dispidMember, REFIID riid,
LCID lcid, WORD wFlags,
DISPPARAMS* pDispParams,
VARIANT* pvarResult,
EXCEPINFO* pExcepInfo,
UINT* puArgErr)
{
switch (dispidMember)
{
case DISPID_AMBIENT_DLCONTROL:
pvarResult->vt = VT_I4;
pvarResult->lVal = DLCTL_DLIMAGES | DLCTL_VIDEOS | DLCTL_NO_SCRIPTS;
break;

default:
return DISP_E_MEMBERNOTFOUND;
}

return S_OK;
}

------------------------
делаю себе на форме с браузером:
TMyForm = class(TForm, IDispatch)
...
function Invoke(DispID: Integer; const IID: TGUID; LocaleID: Integer;
Flags: Word; var Params; VarResult, ExcepInfo, ArgErr: Pointer): HResult; stdcall;
...


реализация

function TMyForm.Invoke(DispID: Integer; const IID: TGUID;
LocaleID: Integer; Flags: Word; var Params; VarResult, ExcepInfo, ArgErr: Pointer): HResult;
var
I: Integer;
begin
if DispId = DISPID_AMBIENT_DLCONTROL then begin ( VarResult) Помогите разобраться с проблемкой.
надо управлять опциями загрузки TWebBrowser.
в MSDN:
The WebBrowser Control gives you control over what it downloads, displays, and executes. To gain this control, you need to implement your host"s IDispatch so it handles DISPID_AMBIENT_DLCONTROL. When the WebBrowser Control is instantiated, it will call your IDispatch::Invoke with this ID. Set pvarResult to a combination of following flags, using the bitwise OR operator, to indicate your preferences.

и пример
STDMETHODIMP CAtlBrCon::Invoke(DISPID dispidMember, REFIID riid,
LCID lcid, WORD wFlags,
DISPPARAMS* pDispParams,
VARIANT* pvarResult,
EXCEPINFO* pExcepInfo,
UINT* puArgErr)
{
switch (dispidMember)
{
case DISPID_AMBIENT_DLCONTROL:
pvarResult->vt = VT_I4;
pvarResult->lVal = DLCTL_DLIMAGES | DLCTL_VIDEOS | DLCTL_NO_SCRIPTS;
break;

default:
return DISP_E_MEMBERNOTFOUND;
}

return S_OK;
}

------------------------
делаю себе на форме с браузером:
TMyForm = class(TForm, IDispatch)
...
function Invoke(DispID: Integer; const IID: TGUID; LocaleID: Integer;
Flags: Word; var Params; VarResult, ExcepInfo, ArgErr: Pointer): HResult; stdcall;
...


реализация

function TMyForm.Invoke(DispID: Integer; const IID: TGUID;
LocaleID: Integer; Flags: Word; var Params; VarResult, ExcepInfo, ArgErr: Pointer): HResult;
var
I: Integer;
begin
if DispId = DISPID_AMBIENT_DLCONTROL then begin !!!здесь бряк!!!
I := DLCTL_DOWNLOADONLY + DLCTL_NO_DLACTIVEXCTLS +
DLCTL_NO_RUNACTIVEXCTLS+DLCTL_DLIMAGES;
PVariant(VarResult)^ :=VT_I4;
PVariant(VarResult)^ := I;
Result := S_OK;
end else
Result := DISP_E_MEMBERNOTFOUND;
end;

так вот, Invoke не вызывается при создании формы, на бряке не останавливается, результата тоже нет.
Подскажите что неправильно делаю?


 
Е-Моё имя   (2003-07-30 16:43) [1]

эта... ну хоть ткните куда копать...


 
Е-Моё имя   (2003-07-30 17:19) [2]

эта... я так понял на своей форме так извратиться нельзя? только с компонентом? сделал компоненту-наследника от браузера, так получилось

спасибо за внимание к моему монологу.


 
nikkie   (2003-07-30 17:26) [3]

отгадай, куда я тебя хочу ткнуть :)

TEmbeddedWB - там есть событие OnInvoke


 
Е-Моё имя   (2003-07-30 17:45) [4]

;))
я думал уже его поставить, но он много чо хочет - обновлять библиотеки типов...не надо мне это

тем более практика полезная ;)

так а почему приведенный вариант не работает? если я свою форму наследую от IDispatch, почему не вызывается Invoke? или так и должно быть (есть какие-то правила)? почему в компоненте работает, а в форме нет?


 
nikkie   (2003-07-30 18:17) [5]

>но он много чо хочет - обновлять библиотеки типов
Не правда. Может ему нужны файлы типа mshtml_tlb.pas - это исходники, автоматически создаваемые delphi при импорте библиотеки типов. Либо импортируй их, либо замени в исходниках компоненты mshtml_tlb.pas на mshtml.pas. Просто в более ранних версиях Дельфи mshtml.pas отсутствовал, поэтому было необходимо осуществить импорт самому, а компонента написана с поддержкой тех версий Дельфи.

>так а почему приведенный вариант не работает?
To gain this control, you need to implement your host"s IDispatch ...
Дело в том, что форма не является хостом для этого ActiveX контрола. Хостирование осуществляет vcl-ный класс TOleControl, откоторого и пронаследован TWebBrowser.


 
Е-Моё имя   (2003-07-30 18:59) [6]

>>форма не является хостом для этого ActiveX контрола

вона как... понятно..



Страницы: 1 вся ветка

Форум: "Потрепаться";
Текущий архив: 2003.08.14;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.111 c
14-45051
NickBat
2003-07-25 17:12
2003.08.14
Компьютер дома.


14-45159
Е-Моё имя
2003-07-30 15:40
2003.08.14
не вызывается Invoke


14-44988
Князь Мышкин
2003-07-29 16:06
2003.08.14
Вакансия заместителя Верховного Программиста


14-45158
Вопрошающий.
2003-07-30 17:12
2003.08.14
Утечка памяти в собственной программе


14-45111
Axis_of_Evil
2003-06-09 15:51
2003.08.14
Hook trouble





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский