Web Brouser conrol
От: server_mouse Беларусь  
Дата: 20.09.02 13:50
Оценка:
Привет народ!

Использую в приложении WebBrowser control.

Наблюдаю интересные фишки. Если нажать CTRL+N (новое окно)
действительно запускается ie c моей страницей. И много другого...
Очень хочется от этого избавиться, с тем, что бы из моего окна
никак нельзя было шарится по диску. Хотя бы вырубить все горячие
клавиши IE. Менюшки вырубаются из java-script....
Если человек программист, то это надолго.
Re: Web Brouser conrol
От: retalik www.airbandits.com/
Дата: 20.09.02 13:52
Оценка:
Здравствуйте server_mouse, Вы писали:

Может, хватит кросспостить?
http://www.rsdn.ru/rules.htm
Успехов,
Виталий.
Re: Web Brouser conrol
От: e-yes Россия http://e-yes.nm.ru
Дата: 20.09.02 14:17
Оценка: 8 (1)
Здравствуйте server_mouse, Вы писали:

SM>Привет народ!


SM>Использую в приложении WebBrowser control.


SM>Наблюдаю интересные фишки. Если нажать CTRL+N (новое окно)

SM>действительно запускается ie c моей страницей. И много другого...
SM>Очень хочется от этого избавиться, с тем, что бы из моего окна
SM>никак нельзя было шарится по диску. Хотя бы вырубить все горячие
SM>клавиши IE. Менюшки вырубаются из java-script....

Вот тут описано, как избежать этого:
http://www.rsdn.ru/QnA/default.asp?inet/wbnewwnd.xml
Damn I'm good
Re[2]: Web Brouser conrol
От: server_mouse Беларусь  
Дата: 20.09.02 14:32
Оценка:
Здравствуйте e-yes, Вы писали:

EY>Вот тут описано, как избежать этого:

EY>http://www.rsdn.ru/QnA/default.asp?inet/wbnewwnd.xml

Это конечно хорошо, но я юзаю сабж напрямую, как ActiveX в диалоге. А по указаному адресу пример для CHtmlView.
Если человек программист, то это надолго.
Re[3]: Web Brouser conrol
От: server_mouse Беларусь  
Дата: 23.09.02 08:04
Оценка:
Вставил я обработчик NewWindow2, но на CTRL+N он всё равно не срабатывает...
Люди, как прикрыть эту комбинацию?
Если нельзя поймать событие, может что-нить ещё посоветуете, скрипты, хуки на окно, или ещё что-нить....
Если человек программист, то это надолго.
Re[4]: Web Brouser conrol
От: Rand1  
Дата: 23.09.02 09:06
Оценка: 4 (1)
Здравствуйте server_mouse, Вы писали:

SM>Вставил я обработчик NewWindow2, но на CTRL+N он всё равно не срабатывает...

SM>Люди, как прикрыть эту комбинацию?
SM>Если нельзя поймать событие, может что-нить ещё посоветуете, скрипты, хуки на окно, или ещё что-нить....
Есть вполне реальный способ — через TranslateAccelerator . В этом форуме я писал о подобной проблеме .Нужно реализовать свой интерфейс и и передать его через SetUIHandler
Re[5]: Web Brouser conrol
От: server_mouse Беларусь  
Дата: 23.09.02 10:47
Оценка:
Здравствуйте Rand1, Вы писали:

R>Здравствуйте server_mouse, Вы писали:


SM>>Вставил я обработчик NewWindow2, но на CTRL+N он всё равно не срабатывает...

SM>>Люди, как прикрыть эту комбинацию?
SM>>Если нельзя поймать событие, может что-нить ещё посоветуете, скрипты, хуки на окно, или ещё что-нить....
R>Есть вполне реальный способ — через TranslateAccelerator . В этом форуме я писал о подобной проблеме .Нужно реализовать свой интерфейс и и передать его через SetUIHandler

А можно где-нить пример увидать, а то не силён я в COM....
Если человек программист, то это надолго.
Re[6]: Web Brouser conrol
От: Rand1  
Дата: 23.09.02 10:53
Оценка: 9 (2)
Здравствуйте server_mouse, Вы писали:

SM>Здравствуйте Rand1, Вы писали:


R>>Здравствуйте server_mouse, Вы писали:


SM>>>Вставил я обработчик NewWindow2, но на CTRL+N он всё равно не срабатывает...

SM>>>Люди, как прикрыть эту комбинацию?
SM>>>Если нельзя поймать событие, может что-нить ещё посоветуете, скрипты, хуки на окно, или ещё что-нить....
R>>Есть вполне реальный способ — через TranslateAccelerator . В этом форуме я писал о подобной проблеме .Нужно реализовать свой интерфейс и и передать его через SetUIHandler

SM>А можно где-нить пример увидать, а то не силён я в COM....

Здесь на сайте есть статья "Как избавиться от контекстного меню"
Так вот помимо ShowContextMenu есть метод TranslateAccelerator в нем вернешь — S_False кажется -> В этом случае мессаги от клавы не будут приходить в browser
Re[7]: Web Brouser conrol
От: server_mouse Беларусь  
Дата: 24.09.02 12:45
Оценка:
Всем спасибо, сделал то, что хотел, и даже больше... Но недостаточно.
Как словить 'перетягивание' на окно эксплорера какого-то файла. Точнее забить на перетягивание чего-бы то нибыло. Подскажите, куда копать плз...
Если человек программист, то это надолго.
Re[8]: Web Brouser conrol
От: e-yes Россия http://e-yes.nm.ru
Дата: 24.09.02 13:10
Оценка:
Здравствуйте server_mouse, Вы писали:

SM>Всем спасибо, сделал то, что хотел, и даже больше... Но недостаточно.

SM>Как словить 'перетягивание' на окно эксплорера какого-то файла. Точнее забить на перетягивание чего-бы то нибыло. Подскажите, куда копать плз...

см. IDocHostUIHandler::GetDropTarget

Ну если ты взял СDocHostUIHandler из вышеупомянутого примера, остается определить еще один интерфейс — IDropTarget, кажется, вполне достаточно возвращать DROPEFFECT_NONE в качестве "выходного" параметра метода DragOver.

rgds.
Damn I'm good
Re[9]: Web Brouser conrol
От: server_mouse Беларусь  
Дата: 24.09.02 18:10
Оценка:
Здравствуйте e-yes, Вы писали:

EY>Здравствуйте server_mouse, Вы писали:


SM>>Всем спасибо, сделал то, что хотел, и даже больше... Но недостаточно.

SM>>Как словить 'перетягивание' на окно эксплорера какого-то файла. Точнее забить на перетягивание чего-бы то нибыло. Подскажите, куда копать плз...

EY>см. IDocHostUIHandler::GetDropTarget


EY>Ну если ты взял СDocHostUIHandler из вышеупомянутого примера, остается определить еще один интерфейс — IDropTarget, кажется, вполне достаточно возвращать DROPEFFECT_NONE в качестве "выходного" параметра метода DragOver.


Не получается. Делаю примерно так:
class CMyHost : public IDocHostUIHandler {//Всё перегружено};
class CMyDropTarget : public IDropTarget {//Всё перегружено};
CMyHost *pHost;
CMyDropTarget *pDropTarget;
HRESULT hr;
// ... Получаем pHost
pDropTarget=new CMyDropTarget;
hr=pHost->GetDropTarget([IN]pDropTarget,[OUT]NULL);
// hr!=S_OK !


help pls.
Если человек программист, то это надолго.
Re[10]: Web Brouser conrol
От: server_mouse Беларусь  
Дата: 25.09.02 06:19
Оценка:
Сделал всё проще:
IWebBrowser2::put_RegisterAsDropTarget(VARIANT_FALSE);


Но всё равно интересно, почему не пулучилось вставить свой обработчик?
Если человек программист, то это надолго.
Re[11]: Web Brouser conrol
От: e-yes Россия http://e-yes.nm.ru
Дата: 25.09.02 06:38
Оценка: 12 (1)
Здравствуйте server_mouse, Вы писали:

SM>Сделал всё проще:

SM>
SM>IWebBrowser2::put_RegisterAsDropTarget(VARIANT_FALSE);
SM>

SM>
Всегда найдется способ сделать "в одну срочку"
SM>Но всё равно интересно, почему не пулучилось вставить свой обработчик?
Так не ты должен вызывать этот метод, а MSHTML. Поставь брякпойнт на GetDropTarget, не вызывай ее, посмотри, вызывает ли ее MSHTML...
Damn I'm good
Re[12]: Web Brouser conrol
От: server_mouse Беларусь  
Дата: 25.09.02 07:44
Оценка:
Здравствуйте e-yes, Вы писали:

EY>Здравствуйте server_mouse, Вы писали:


SM>>Сделал всё проще:

SM>>
SM>>IWebBrowser2::put_RegisterAsDropTarget(VARIANT_FALSE);
SM>>

SM>>
EY>Всегда найдется способ сделать "в одну срочку"
SM>>Но всё равно интересно, почему не пулучилось вставить свой обработчик?
EY>Так не ты должен вызывать этот метод, а MSHTML. Поставь брякпойнт на GetDropTarget, не вызывай ее, посмотри, вызывает ли ее MSHTML...

Во блин! Здорово я торможу...
Бряколку поставил. Не работает. Вообще, как-то странно IDocHostUIHandler работает. Например ShowContextMenu нормально вызывается, а GetDropTarget и TranslateAccelerator нет. Хотя 'горячие' кнопки не работают, а перетаскивание работает. Чудны дела твой дядя Бил...
Интересно, где собака порылась?
Если человек программист, то это надолго.
Re[13]: Web Brouser conrol
От: Rand1  
Дата: 25.09.02 08:14
Оценка:
Здравствуйте server_mouse, Вы писали:

SM>Здравствуйте e-yes, Вы писали:


EY>>Здравствуйте server_mouse, Вы писали:


SM>>>Сделал всё проще:

SM>>>
SM>>>IWebBrowser2::put_RegisterAsDropTarget(VARIANT_FALSE);
SM>>>

SM>>>
EY>>Всегда найдется способ сделать "в одну срочку"
SM>>>Но всё равно интересно, почему не пулучилось вставить свой обработчик?
EY>>Так не ты должен вызывать этот метод, а MSHTML. Поставь брякпойнт на GetDropTarget, не вызывай ее, посмотри, вызывает ли ее MSHTML...

SM>Во блин! Здорово я торможу...

SM>Бряколку поставил. Не работает. Вообще, как-то странно IDocHostUIHandler работает. Например ShowContextMenu нормально вызывается, а GetDropTarget и TranslateAccelerator нет. Хотя 'горячие' кнопки не работают, а перетаскивание работает. Чудны дела твой дядя Бил...
SM>Интересно, где собака порылась?
Вроде как и у меня была подобная проблема : TranslateAccelerator не вызывался .Решил я ее так :
переопределил данный метод в своем activex
STDMETHODIMP TranslateAccelerator(LPMSG lpmsg)
{
// Call TranslateAccelerator on the in-place active
// object so that the accelerator will be passed to the
// hosted WebBrowser control.
if(m_spBrowser)
{
CComQIPtr<IOleInPlaceActiveObject,
&IID_IOleInPlaceActiveObject> spInPlaceActiveObject(m_spBrowser);

return spInPlaceActiveObject->TranslateAccelerator(lpmsg);
}
return S_OK;
}
Re[13]: Web Brouser conrol
От: Rand1  
Дата: 25.09.02 08:20
Оценка: 4 (1)
Здравствуйте server_mouse, Вы писали:

SM>Здравствуйте e-yes, Вы писали:


EY>>Здравствуйте server_mouse, Вы писали:


SM>>>Сделал всё проще:

SM>>>
SM>>>IWebBrowser2::put_RegisterAsDropTarget(VARIANT_FALSE);
SM>>>

SM>>>
EY>>Всегда найдется способ сделать "в одну срочку"
SM>>>Но всё равно интересно, почему не пулучилось вставить свой обработчик?
EY>>Так не ты должен вызывать этот метод, а MSHTML. Поставь брякпойнт на GetDropTarget, не вызывай ее, посмотри, вызывает ли ее MSHTML...

SM>Во блин! Здорово я торможу...

SM>Бряколку поставил. Не работает. Вообще, как-то странно IDocHostUIHandler работает. Например ShowContextMenu нормально вызывается, а GetDropTarget и TranslateAccelerator нет. Хотя 'горячие' кнопки не работают, а перетаскивание работает. Чудны дела твой дядя Бил...
SM>Интересно, где собака порылась?
У меня GetDropTarget вызывается при инициализации один раз
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.