使用 Reg-Free-COM 时未发送到基于 WPF 的 ActiveX 控件(COM 互操作)的事件
Posted
技术标签:
【中文标题】使用 Reg-Free-COM 时未发送到基于 WPF 的 ActiveX 控件(COM 互操作)的事件【英文标题】:Events not sent to WPF based ActiveX control (COM interop) when using Reg-Free-COM 【发布时间】:2010-05-13 14:55:42 【问题描述】:我有一个基于 WPF 的 ActiveX 控件(COM 互操作)。我可以通过注册控件来正确使用它。当我尝试 Reg-Free-COM(使用清单文件)时,控件似乎已激活,但事件(如鼠标单击、RequestBringIntoView 等)没有响应。有趣的是,双击和 Tab 键可以工作。
我在这篇文章http://blogs.msdn.com/karstenj/archive/2006/10/09/activex-wpf-gadget.aspx 中读到“...这些好处是有代价的:ActiveX 控件必须在注册表中注册,这需要某种安装,例如 .msi。默认小工具安装进程无法安装 ActiveX。无法通过无注册 COM 访问 ActiveX 控件。..."
有没有人有过类似的经历?谁能解释一下是怎么回事?
其他细节: 当控件在注册后被激活时,它会显示为 COM 客户端 UI 的一部分。控件不接收焦点,它的元素接收它。
使用 reg-free-com 时,控件无法正确加载。 1) 控件接收焦点而不是其子元素 2)控件的区域是黑色而不是窗口默认颜色 3)当我tab进出控件或双击它时,它的子元素接收焦点,控件开始接收事件,黑色区域被正确的颜色替换
【问题讨论】:
【参考方案1】:我发现控件处于非活动状态,因为在注册 COM 时设置的 miscStatus 属性需要激活它。我将就此发布一个单独的问题。
【讨论】:
以上是关于使用 Reg-Free-COM 时未发送到基于 WPF 的 ActiveX 控件(COM 互操作)的事件的主要内容,如果未能解决你的问题,请参考以下文章
使用 Apollo 客户端时未将 GraphQL 突变发送到请求?