Перетаскивание в управляемый элемент управления браузером

У меня есть программа WinForms, написанная на .NET 2, которая содержит элемент управления веб-браузером и отображает страницы asp.net с известного сервера.

Я хотел бы иметь возможность перетаскивать дерево дерева node из дерева в моем приложении winforms в определенное место на размещенной веб-странице и запускать там javascript-событие. В настоящее время я могу реализовать интерфейс IDocHostUIHandler и получить события перетаскивания \drop в элементе управления браузера, а затем вызвать Navigate("javascript:fire_event(...)") в элементе управления для выполнения script на странице. Однако я хочу, чтобы это работало только тогда, когда я удалял данные на определенной части страницы.

Одним из решений, я полагаю, было бы укусить пулю и написать собственный плагин для браузера в виде элемента управления activex, внедрить его в место, куда я хочу отказаться, и позволить этому реализовать необходимые интерфейсы drag\drop.

Будет ли это работать? Есть ли более чистый подход? Могу ли я воспользоваться тем фактом, что элемент управления браузером размещен в моем приложении и обеспечивает некоторый дополнительный уровень взаимодействия?

Ответы

Ответ 1

Взгляните на проект BrowserPlus в Yahoo.

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

Ответ 2

Если вы можете узнать положение на экране той части страницы, которая вас интересует, вы можете сравнить ее с положением мыши, когда получите событие drop. Я не уверен, насколько это практично, если вы можете получить информацию из DOM или еще чего-то.

В качестве альтернативы вы можете реализовать события мыши на бите страницы с помощью javascript?