OleControlSite есть ключевые события - PullRequest
1 голос
/ 23 июля 2011

Я работаю над плагином Eclipse RCP, который содержит View.Это представление содержит OleControlSite, на котором размещена книга Excel.

Книга Excel добавляется в представление с помощью кода следующего содержания:

    public void createPartControl(Composite parent) {
        :
        OleFrame oleFrame = new OleFrame(parent, SWT.NONE);
        OleControlSite oleSite = new OleControlSite(frame, SWT.NONE, "Excel.Sheet");
        oleSite.doVerb(OLE.OLEIVERB_INPLACEACTIVATE);
        :
    }

Что я хотел бы иметь возможностьdo отвечает на привязку ключа Eclipse, когда в центре внимания находится книга Excel.Намерение состоит в том, чтобы открыть диалоговое окно «помощник», которое помогает пользователю выбрать подходящее значение для текущей выбранной ячейки в электронной таблице.

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

Я успешно зарегистрировался и получил множество событий Excel через OLE в ходе разработки.Тем не менее, все события, которые я имею в своем распоряжении через этот механизм, являются «специфичными для Excel» вещами, такими как «активированный лист», «измененный лист», «измененный выбор листа», и тому подобное.

:
String WORKBOOK_EVENT_SINK_ID   = "{00024412-0000-0000-C000-000000000046}";
int    WORKBOOK_SHEET_CHANGE_ID = 0x0000061c;

oleSite.addEventListener(controlSiteAuto, WORKBOOK_EVENT_SINK_ID, WORKBOOK_SHEET_CHANGE_ID, myListener);
:

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

Несмотря на то, что можно «сплевывать» возможные способы «услышать» ключевые события, когда Excel находится в фокусе, яПробовал добавлять фильтры, прослушиватели и ключевые прослушиватели к таким вещам, как дисплей по умолчанию, активная оболочка, само представление и т. д., но без радости.Такое ощущение, что Excel получает абсолютную первоклассную оценку ключевых событий.

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

Если у кого-то есть какие-либо понятия, я был бы рад услышать о них.

...