.net 4.7.1 C# OCX 事件处理程序适用于 win10x 86/64,不适用于 win7/8 x86/64

Posted

技术标签:

【中文标题】.net 4.7.1 C# OCX 事件处理程序适用于 win10x 86/64,不适用于 win7/8 x86/64【英文标题】:.net 4.7.1 C# OCX event handler works on win10x 86/64, does not work on win7/8 x86/64 【发布时间】:2018-07-20 15:42:36 【问题描述】:

背景故事 - 我们公司有一个 C# Click Once 应用程序,它使用 .ocx 文件来注册事件处理程序。事件处理程序的功能是任意的,但在这种情况下,事件处理程序正在对返回的文件路径执行文件操作。此 OCX 控件由第 3 方供应商提供。我没有编辑第三方 OCX 控件的来源或能力。

问题 - 我正在注册的事件处理程序从未在 Windows 7/8 x86/64 上触发。 Windows 10 x86/64 运行良好。

为了让事情更有趣,在我安装 Visual Studio 2017 后,在 Windows 7/8 x86/64 上触发了事件处理程序。我们的应用程序的相同版本,在安装 VS2017 之前不起作用,在安装之后起作用。

我正在使用 Visual Studio 2017,目标是 .net 4.7.1,并在 64 位 Windows 10 安装上为 x86 进行编译。

我必须假设 Visual Studio 2017 安装程序正在 Windows 7/8 上安装允许成功调用事件处理程序的东西,但我不知道它是什么。

我检查了事件日志,没有错误。当应该调用事件处理程序或注册事件处理程序时,应用程序中不会引发异常。

问题 -

    有没有人经历过类似的事情? 您能解决问题吗? 您是如何解决此问题的?

我整个星期都在努力解决这个问题,并且我已经用尽了我所知道的所有选项。我非常感谢社区在这个问题上的帮助。

谢谢。

【问题讨论】:

【参考方案1】:

Visual Studio 2017 会在 Windows 7 上安装 .NET Framework 4.6(如果该框架版本不存在)。如果您的应用在 Windows 10 上运行良好但在 Windows 7 上无法正常运行,则表明您的应用可能需要最新的 .NET 框架版本。

【讨论】:

我遇到的问题不是应用程序无法运行。它专门针对应用程序的一部分 - 从 COM 互操作引用接收事件。在将应用程序重新定位到 4.7.1 之前,我还尝试安装 .net 框架 4.6。没有观察到行为变化。感谢您的评论,但这并不能解决问题。

以上是关于.net 4.7.1 C# OCX 事件处理程序适用于 win10x 86/64,不适用于 win7/8 x86/64的主要内容,如果未能解决你的问题,请参考以下文章

C# VB6 OCX 生成的消费事件

MFC OCX 事件 / 属性 / 接口参数相关小结

C#控制台程序中处理2个关闭事件的代码实例

C# 中简单的跨应用程序数据和事件传递

C# 中的 OCX 组件 - 使用和部署

VC++:如何捕获从 ATL 项目中的 ActiveX (.ocx) 触发的事件