Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Windows窗体:防止ActiveX获取鼠标事件 上下文_C#_.net_Winforms_Activex - Fatal编程技术网

C# Windows窗体:防止ActiveX获取鼠标事件 上下文

C# Windows窗体:防止ActiveX获取鼠标事件 上下文,c#,.net,winforms,activex,C#,.net,Winforms,Activex,在Win7的C#Windows窗体应用程序中,我们托管一个ActiveX控件。到目前为止,一切顺利 需要:防止ActiveX接收鼠标事件 实际上,ActiveX的功能太多了。关闭我们不需要的功能不是很容易定制的 如果我们阻止它接收鼠标事件就好了 理想的做法是将事件视为ActiveX不存在,即鼠标单击直接进入底层(或包含)控件 但是,如果我们只是阻止ActiveX获取事件,我们就可以这样做 三思而后行 对前面问题的一些回答提到了受保护的覆盖无效WndProc(参考消息m),例如 实施IMessag

在Win7的C#Windows窗体应用程序中,我们托管一个ActiveX控件。到目前为止,一切顺利

需要:防止ActiveX接收鼠标事件 实际上,ActiveX的功能太多了。关闭我们不需要的功能不是很容易定制的

如果我们阻止它接收鼠标事件就好了

理想的做法是将事件视为ActiveX不存在,即鼠标单击直接进入底层(或包含)控件

但是,如果我们只是阻止ActiveX获取事件,我们就可以这样做

三思而后行 对前面问题的一些回答提到了
受保护的覆盖无效WndProc(参考消息m)
,例如

实施IMessageFilters的其他内容,例如:

实验:ActiveX仍然可以获取事件 我已经相当广泛地尝试了
覆盖WndProc
IMessageFilter
两种方法,过滤(选择加入和选择退出)许多事件。在某些情况下,我可以阻止事件到达本机C#控件,但ActiveX仍然占有一席之地

过滤过多,阻止控件和ActiveX绘制,甚至阻止应用程序正确绘制,或导致退出时崩溃。这可以通过仔细选择“选择加入”或“选择退出”选项来避免

还有别的办法吗?
从C#/.NET是否有另一种方法来承载ActiveX控件,同时防止它获取鼠标事件?可能在应用程序启动时?

创建ActiveX控件后,尝试在最上面的hwnd上执行启用窗口(手动,错误)。请参见如何在c#中执行此操作。

创建ActiveX控件后,尝试在ActiveX控件的最上面的hwnd上执行启用窗口(手动,错误)。看看如何在c#中做到这一点。

我刚刚遇到了同样的问题(使用不同的ActiveX)

@GunnarRoth的回答和页面暗示了具有窗口句柄的特定于平台的魔法,这在可能的情况下是最好避免的

还有一个提示是,它在名称中启用了

ActiveX主机对象是Windows窗体控件。我刚刚设置了
Enabled=false
,效果正是我想要的:ActiveX看不到鼠标点击或键盘事件,但它仍然显示良好


我甚至不知道这是否能用最初的ActiveX控件回答我最初的问题,但这次是这样的!:-)

我只是面临同样的问题(使用不同的ActiveX)

@GunnarRoth的回答和页面暗示了具有窗口句柄的特定于平台的魔法,这在可能的情况下是最好避免的

还有一个提示是,它在名称中启用了

ActiveX主机对象是Windows窗体控件。我刚刚设置了
Enabled=false
,效果正是我想要的:ActiveX看不到鼠标点击或键盘事件,但它仍然显示良好


我甚至不知道这是否能用最初的ActiveX控件回答我最初的问题,但这次是这样的!:-)

我看到赞成票和反对票。选民:为什么?这个问题不是表明了研究的努力吗?我想是的。它有用吗?不清楚吗?你能详细解释一下吗?没有回答?我们最后做的是。。。只是不在乎。也就是说,让事件传播到ActiveX中,公开比我们需要的更多的功能,并与之共存。选民:为什么?这个问题不是表明了研究的努力吗?我想是的。它有用吗?不清楚吗?你能详细解释一下吗?没有回答?我们最后做的是。。。只是不在乎。也就是说,让事件传播到ActiveX,公开比我们需要的更多的功能,并与之共存。感谢您的提示。现在正在做其他事情,请稍后再试。谢谢您的提示。现在正在做其他事情,可以稍后再试。