Наблюдаю интересные фишки. Если нажать CTRL+N (новое окно)
действительно запускается ie c моей страницей. И много другого...
Очень хочется от этого избавиться, с тем, что бы из моего окна
никак нельзя было шарится по диску. Хотя бы вырубить все горячие
клавиши IE. Менюшки вырубаются из java-script....
Здравствуйте server_mouse, Вы писали:
SM>Привет народ!
SM>Использую в приложении WebBrowser control.
SM>Наблюдаю интересные фишки. Если нажать CTRL+N (новое окно) SM>действительно запускается ie c моей страницей. И много другого... SM>Очень хочется от этого избавиться, с тем, что бы из моего окна SM>никак нельзя было шарится по диску. Хотя бы вырубить все горячие SM>клавиши IE. Менюшки вырубаются из java-script....
Вставил я обработчик NewWindow2, но на CTRL+N он всё равно не срабатывает...
Люди, как прикрыть эту комбинацию?
Если нельзя поймать событие, может что-нить ещё посоветуете, скрипты, хуки на окно, или ещё что-нить....
Здравствуйте server_mouse, Вы писали:
SM>Вставил я обработчик NewWindow2, но на CTRL+N он всё равно не срабатывает... SM>Люди, как прикрыть эту комбинацию? SM>Если нельзя поймать событие, может что-нить ещё посоветуете, скрипты, хуки на окно, или ещё что-нить....
Есть вполне реальный способ — через TranslateAccelerator . В этом форуме я писал о подобной проблеме .Нужно реализовать свой интерфейс и и передать его через SetUIHandler
Здравствуйте Rand1, Вы писали:
R>Здравствуйте server_mouse, Вы писали:
SM>>Вставил я обработчик NewWindow2, но на CTRL+N он всё равно не срабатывает... SM>>Люди, как прикрыть эту комбинацию? SM>>Если нельзя поймать событие, может что-нить ещё посоветуете, скрипты, хуки на окно, или ещё что-нить.... R>Есть вполне реальный способ — через TranslateAccelerator . В этом форуме я писал о подобной проблеме .Нужно реализовать свой интерфейс и и передать его через SetUIHandler
А можно где-нить пример увидать, а то не силён я в COM....
Здравствуйте server_mouse, Вы писали:
SM>Здравствуйте Rand1, Вы писали:
R>>Здравствуйте server_mouse, Вы писали:
SM>>>Вставил я обработчик NewWindow2, но на CTRL+N он всё равно не срабатывает... SM>>>Люди, как прикрыть эту комбинацию? SM>>>Если нельзя поймать событие, может что-нить ещё посоветуете, скрипты, хуки на окно, или ещё что-нить.... R>>Есть вполне реальный способ — через TranslateAccelerator . В этом форуме я писал о подобной проблеме .Нужно реализовать свой интерфейс и и передать его через SetUIHandler
SM>А можно где-нить пример увидать, а то не силён я в COM....
Здесь на сайте есть статья "Как избавиться от контекстного меню"
Так вот помимо ShowContextMenu есть метод TranslateAccelerator в нем вернешь — S_False кажется -> В этом случае мессаги от клавы не будут приходить в browser
Всем спасибо, сделал то, что хотел, и даже больше... Но недостаточно.
Как словить 'перетягивание' на окно эксплорера какого-то файла. Точнее забить на перетягивание чего-бы то нибыло. Подскажите, куда копать плз...
Здравствуйте server_mouse, Вы писали:
SM>Всем спасибо, сделал то, что хотел, и даже больше... Но недостаточно. SM>Как словить 'перетягивание' на окно эксплорера какого-то файла. Точнее забить на перетягивание чего-бы то нибыло. Подскажите, куда копать плз...
см. IDocHostUIHandler::GetDropTarget
Ну если ты взял СDocHostUIHandler из вышеупомянутого примера, остается определить еще один интерфейс — IDropTarget, кажется, вполне достаточно возвращать DROPEFFECT_NONE в качестве "выходного" параметра метода DragOver.
Здравствуйте 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 !
SM>
Всегда найдется способ сделать "в одну срочку" SM>Но всё равно интересно, почему не пулучилось вставить свой обработчик?
Так не ты должен вызывать этот метод, а MSHTML. Поставь брякпойнт на GetDropTarget, не вызывай ее, посмотри, вызывает ли ее MSHTML...
SM>> EY>Всегда найдется способ сделать "в одну срочку" SM>>Но всё равно интересно, почему не пулучилось вставить свой обработчик? EY>Так не ты должен вызывать этот метод, а MSHTML. Поставь брякпойнт на GetDropTarget, не вызывай ее, посмотри, вызывает ли ее MSHTML...
Во блин! Здорово я торможу...
Бряколку поставил. Не работает. Вообще, как-то странно IDocHostUIHandler работает. Например ShowContextMenu нормально вызывается, а GetDropTarget и TranslateAccelerator нет. Хотя 'горячие' кнопки не работают, а перетаскивание работает. Чудны дела твой дядя Бил...
Интересно, где собака порылась?
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);
SM>>> EY>>Всегда найдется способ сделать "в одну срочку" SM>>>Но всё равно интересно, почему не пулучилось вставить свой обработчик? EY>>Так не ты должен вызывать этот метод, а MSHTML. Поставь брякпойнт на GetDropTarget, не вызывай ее, посмотри, вызывает ли ее MSHTML...
SM>Во блин! Здорово я торможу... SM>Бряколку поставил. Не работает. Вообще, как-то странно IDocHostUIHandler работает. Например ShowContextMenu нормально вызывается, а GetDropTarget и TranslateAccelerator нет. Хотя 'горячие' кнопки не работают, а перетаскивание работает. Чудны дела твой дядя Бил... SM>Интересно, где собака порылась?
У меня GetDropTarget вызывается при инициализации один раз