问题标签 [activex]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c# - IE 中的 .NET ActiveX 组件 - 如何获取浏览器参考
我承认我对 COM 和 IE 体系结构了解得足够多,只是很危险。我有一个与此类似的工作 C# .NET ActiveX 控件:
我使用 regasm 注册并创建了一个类型库:
并且可以在 javascript 中成功实例化它:
如何在 CTIActiveX 中获取对客户端站点(浏览器窗口)的引用?我通过实现 IObjectWithSite 在 BHO 中完成了这项工作,但我认为这不是 ActiveX 控件的正确方法。如果我在尝试用 Javascript 实例化时在 CTIActiveX 上实现任何接口(我的意思是像 IObjectWithSite 这样的 COM 接口),我会收到一个错误,即该对象不支持自动化。
c# - .NET WebBrowser 控件中的阻止对话框
我有一个 .NET 2.0 WebBrowser 控件,用于在没有用户交互的情况下导航某些页面(不要问......长篇大论)。由于此应用程序的无用户特性,我已将 WebBrowser 控件的 ScriptErrorsSuppressed 属性设置为 true,VS 2005 中包含的文档将 [...]“隐藏其所有源自底层 ActiveX 控件的对话框,不仅仅是脚本错误。” 但是,MSDN 文章没有提到这一点。我已经设法取消了 NewWindow 事件,它可以防止弹出窗口,所以已经处理好了。
任何人都有使用其中之一并成功阻止所有对话框、脚本错误等的经验吗?
编辑
这不是 IE 的独立实例,而是位于 Windows 窗体应用程序上的 WebBrowser 控件的实例。任何人都对此控件或底层控件AxSHDocVW有任何经验吗?
再次编辑
对不起,我忘了提这个...我试图阻止JavaScript alert(),只有一个 OK 按钮。也许我可以转换为 IHTMLDocument2 对象并以这种方式访问脚本,我已经使用了一点 MSHTML,有人知道吗?
security - 在 Vista 中使用保护模式进行战斗
我们的应用程序通常使用 ActiveX 控件在 IE(XP 和更早版本)上下载和安装我们的客户端,但是随着我们的用户群转向更多启用“保护模式”的 Vista 框,我们需要进行调查。
那么接下来,尝试使用保护模式 API 是否值得头疼?这是否会导致大量对话框和管理员权限来执行我们的应用程序需要做的事情(写入一些本地文件位置,访问其他一些应用程序等)?
我一心只想添加一个非基于浏览器的安装程序应用程序,如果需要,它将完成下载和安装客户端的繁琐工作......这只需要安装一次,在大型公司结构中它可能是被 IT 淘汰了。
我还缺少其他一些想法吗?
c++ - 在 C++ 中触发 COM 事件 - 同步还是异步?
我有一个使用 MS ATL 库编写的 ActiveX 控件,我正在通过pDispatch->Invoke(..., DISPATCH_METHOD)
. 该控件将由 .NET 客户端使用,我的问题是 - 事件的触发是同步调用还是异步调用?我担心的是,如果是同步的,处理事件的应用程序可能会导致性能问题,除非它立即返回。
.net - 如何使用 64 位 COM 互操作构建 64 位 .NET DLL?
我需要构建一个针对 x64 的托管 DLL,并通过 x64 COM 公开它。我需要一个演练,好文章,等等......
互操作相当简单,但是当您在双方都谈论 x64 时,我找不到任何东西。
c# - 如何仅在代码中创建 AxHost [C#]
我正在使用 COM Wrapper 与 Windows Media Player 进行交互。
它使用 AxHost 以某种方式包裹播放器,对我来说这只是引擎盖下的魔法^^
AxHost.AttachInterfaces 看起来像这样
只要我将此 AxHost 托管在 Windows 窗体控件中,一切正常。但我无法在构造函数中连接事件。
例如,这不起作用:
remote.Player 始终为 null,并且程序因 NullReferencesException 而崩溃。
AttachInterfaces() 中的代码以某种方式仅在窗体绘制后或其他所有操作完成后才执行。
我尝试手动调用 AttachInterfaces(),但这也不起作用,因为 GetOcx() 什么也不返回。
那么如何在没有 Windows 窗体的情况下实例化我的 AxHost 继承控件,以便在控制台应用程序中使用它?
com - 如何为 OLE 自动化编写类库?
我有 Excel 插件,我添加了很多类模块,现在它非常庞大。我想将其转换为类型库或 COM 包,以便我可以将其重新用于 MS Office 套件中的其他应用程序。
我将加载项作为类库项目移植到 Visual Studio,但 Excel 自动化无法识别已编译的 .dll 文件中的类。直觉上,我认为我的代码中需要一个清单、一个接口或类似的东西。
为了公开类的方法和属性以在 OLE 自动化中使用,我需要知道什么?
c# - 尝试从 C# 在 ActiveX WebBrowser 中设置/获取 JavaScript 变量
我们有一个包含 ActiveX WebBrowser 控件的 Windows 应用程序。作为此应用程序常规操作的一部分,将对 ActiveX WebBrowser 控件显示的页面进行修改。这些修改的一部分涉及在加载到 ActiveX WebBrowser 的网页中设置 JavaScript 变量。
我们需要在 C# 中初始化这个变量(最初,VB6 代码正在初始化这个值)。此变量的值是 COM 可见的类对象。
但是,为简单起见,我们将问题简化为设置字符串值。我们的原始页面涉及框架等,但同样的问题发生在这样的页面中:
我们想要访问字段变量并为其赋值。在 VB6 中,这方面的代码非常简单:
但是,在 C# 中,我们不得不求助于其他技巧,例如:
该页面的重点是测试我们的变量是否由 C# 正确分配。单击该按钮应该会产生 C# 注入的任何新值。例如,单击页面中的按钮,我们会收到一条警报,显示:“newValue”。
这第一次有效,但如果我们重新加载页面,它就不起作用了。在随后的调用中,我们无法设置变量的值field
。
以前有没有人做过这种手术的经验?
javascript - 如何在 Javascript 中处理 ActiveX 事件
这在某种程度上是对此处答案的跟进。
我有一个自定义 ActiveX 控件,它引发了一个需要由 Web 浏览器中的 Javascript 处理的事件(带有“msg”参数的“ReceiveMessage”)。从历史上看,我们已经能够在不同的项目中使用以下仅限 IE 的语法来完成此操作:
但是,当在控件被隐藏的布局内时,Javascript 无法找到该控件。具体来说,如果我们把它放到一个普通的 HTML 页面中,它可以正常工作,但是如果我们把它放到一个由<Form>
标签包裹的 ASPX 页面中,我们会得到一个“MyControl is undefined”错误。我们尝试了以下变体:
...但它会导致 Javascript 错误“GetControl 未定义”。
处理从 ActiveX 控件发送的事件的正确方法是什么?现在我们只对让这个在 IE 中工作感兴趣。这必须是我们正在做的自定义 ActiveX 控件。
谢谢。
delphi - 公寓之间的 ActiveX 事件
环境:VS2008 (ATL),Borland Developer Studio 2006。
大家好。我在处理 ActiveX 控件事件时遇到了一些问题。
以下是我的应用架构的简要说明:
有一个包含 STA ActiveX 控件(又名控件)和 MTA COM 对象(又名对象)的 inproc COM 服务器。
下面是控制和对象接口的 IDL 定义:
客户端是一个 Delphi 应用程序,窗体上带有 ActiveX 控件,它创建 MTA 对象并调用其 DoWork 方法
此方法直接调用 ActiveX 控件类的 Fire_SomeEvent 方法,并将“this”作为参数传递(指向 IObject 接口的指针)。Delphi 代码成功接收事件,但是当它尝试访问任何 IObject 方法或属性(为简单起见未在 idl 中显示)时,在 oleaut32.dll 中发生访问冲突。
一个重要的注意事项 - 我使用 ATLCPImplMT 类来实现从不同线程触发的事件(有关详细信息,请参阅http://support.microsoft.com/kb/280512)。此实现允许在事件触发时切换公寓(从对象的 MTA 公寓到 STA Delphi 形式的公寓)。我建议这个问题与不正确的事件参数封送处理有关,因为当使用标准 ATLCPImpl 类时一切正常。
跨公寓活动是否有任何限制?也许需要一些特殊的 Delphi 环境设置才能正确使用 activex 对象......