OleControlSite吃关键事件

我正在使用包含View的Eclipse RCP插件。 此视图包含承载Excel工作簿的OleControlSite。

将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); : } 

我希望能够做的是响应一个Eclipse键绑定,而Excel工作簿则是重点。 其目的是popup一个“助手”对话框,帮助用户为电子表格中当前选定的单元格select适当的值。

我碰到的问题是,Excel正在咀嚼关键事件(正如你所期望的),但是也吞下了它们; 他们从来没有去Eclipse工作台的路上,所以我可以听到他们的消息。

我在开发过程中成功注册并通过OLE接收了各种Excel事件。 但是,我通过这个机制可以处理的事件,都是“Excel激活”,“表单更改”,“表单select更改”等“特定于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的焦点,我已经尝试添加filter,监听器和键监听器的东西,如默认显示器,主动壳牌,视图本身等,但没有喜乐。 感觉就像Excel在关键事件中获得绝对优先。

我开始思考可能性,例如注入一个macros的Excel工作簿,将密切关注击键的兴趣,并会通过生成一个事件,我可以注册通过OleControlSite响应。 当我想到像这样的想法时,感觉就像我冒险超越常识

如果有人有任何想法,我会很高兴听到他们的消息。