问题标签 [idispatch]
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# - 关于 C# 项目中神秘接口的警告
每次构建我的 C# 解决方案时,我都会收到一些关于我从未见过或编写过的接口的警告。我尝试用谷歌搜索其中一些,但没有得到任何点击。这些可能被埋在我引用的程序集中吗?如果是这样,有没有办法让这些警告消失?
接口“IAlertable”被标记为 [dual],但不是从 IDispatch 派生的。它将被转换为 IUnknown 派生接口。
接口“ICustomizationPermissionsReports”被标记为 [dual],但不是从 IDispatch 派生的。它将被转换为 IUnknown 派生接口。
接口“IAlertable2”被标记为 [dual],但不是从 IDispatch 派生的。它将被转换为 IUnknown 派生接口。
asp.net - asp.net 站点的修补方法
我正在开发一个 .net 3.5 中的新项目。
目前客户端正在使用存储过程,我们真的很想使用 LINQ to SQL 来代替。他们使用存储过程的主要原因是因为他们认为它们更容易更新等,他们不使用任何特殊权限或这样我可以看到证明在 LINQ to SQL 上使用存储过程是合理的,只是他们不想更改。
我想如果我可以向他们提供一个解决方案,他们可以轻松地将更改部署到 LINQ to SQL,他们可能更愿意改变主意。
因此,我对 asp.net 项目(而不是 mvc)很好奇如何更新在构建过程中创建的各种程序集。
例如,我所有的 LINQ 代码都在 System.DataAccess 项目中,并且部署到生产环境中,然后使用 LINQ 识别出产品错误。仅部署更改后的 DataAccess 项目(或者更确切地说,部署自 prod 部署以来发生重大变化的任何项目)有多困难。
我不确定会帮助这种情况的一件事是,每次有构建时,所有项目的构建号都会更新,无论是否实际发生更改,因此只需查看项目的版本号即可不足以确定需要重新部署的项目。
我什至不确定是否可以修改构建,所以只有更改后的项目才会更新其版本?
所以基本上我只是对那里的各种修补过程以及利弊(即需要 iis 重置等)感到好奇。
干杯
c++ - 深奥的 JScript 托管问题:IDispatch::Invoke 返回 SCRIPT_E_PROPAGATE 时的错误代码在哪里?
我们的应用程序托管 Windows Scripting Host JScript 引擎并公开几个可以从脚本代码调用的域对象。
其中一个域对象是一个 COM 组件,它实现了 IDispatch(实际上是 IDispatchEx),它有一个将脚本函数作为回调参数的方法(一个 IDispatch* 作为参数)。此 COM 组件由脚本调用,执行一些操作,然后通过提供的 IDispatch 参数回调到脚本中,然后返回调用脚本。
如果回调脚本碰巧抛出异常(例如,调用另一个 COM 组件,它返回的不是 S_OK),那么对回调脚本的 IDispatch::Invoke 调用将返回 SCRIPT_E_PROPAGATE 而不是 HRESULT来自其他 COM 组件;不是来自其他 COM 对象的预期 HRESULT。如果我将该 HRESULT (SCRIPT_E_PROPAGATE) 返回给第一个 COM 组件的调用者(例如,返回给调用脚本),那么脚本引擎会正确地从另一个 COM 对象抛出一个带有预期 HRESULT 的错误。
但是,找不到实际错误。它不是从 Invoke 调用返回的(返回值为 SCRIPT_E_PROPAGATE)。它不是通过提供给 Invoke 的 EXCEPINFO 返回的(结构保持为空)。而且,它不能通过 GetErrorInfo 获得(调用返回 S_FALSE)!
我真的很想解决这个错误,因为缓存它并在后续调用中返回相同的错误会很有用(遇到错误通常涉及由作为传递的脚本函数定义的昂贵操作参数,但我知道如何缓存错误)。有没有办法让脚本化的 COM 组件在回调到提供的脚本函数时遇到异常???
c# - 在 C# 中使用参数打包 IDispatch 调用(使用 DISPARAMS)
我正在使用 Invoke 对支持 IDispatch 的旧 COM 对象进行后期绑定。这似乎是必要的,因为 .NET 的 Type.GetMethod Type.InvokeMember 似乎不适用于这些对象。
以下代码适用于从对象获取属性,调用者将属性名称作为字符串传递,以获取具有后期绑定的属性值。该类在其构造函数中获取一个对象,并将 this.idisp(和 this.lcid)设置为指向该对象的接口指针(欢迎批评!)
我现在正在尝试编写 setter 等效项,即
但是我不确定如何用 C# 打包 Dispatch 参数。
即如何设置结构:
我知道我需要从托管对象创建一个非托管变体来编组。任何建议如何做到这一点?
delphi - 获取对 IDispatch 接口成员的访问权限
我是物理学家。我正在尝试使用导入的 activex 控件(ocx 文件)在 Delphi 上工作。假设库中有 3 个自动化接口:IGraph、IGraphAxes 和 IAxis。图书馆的结构是这样的:
===IGraph 的属性:===
Idispatch* IGraphAxes;
... //其他成员
===IGraphAxes 的属性:===
Idispatch* XAxis;
Idispatch* Y轴;
Idispatch* Z轴;
整数颜色;
整数样式;
… //其他成员
===IAxis 属性:===
float Min, Max;
布尔显示编号;
… //其他成员
通过 IGraph,我可以使用 GetIDsOfNames() 和 Invoke() 函数访问 IGraphAxes 的简单成员(颜色和样式)。但是当我尝试访问 XAxis(或 YAxis、Zaxis)时,它会产生错误。首先,我使用 GetIDsOfNames() 它返回 XAxis 的 dispid 没有任何问题。但是当我用那个 dispid 调用 Invoke 时,会出现错误“地址访问冲突......”。看来,idispatch 指针 (**Xaxis)* 没有指向任何内容。我该如何解决这个问题?如何使
Idispatch* Xaxis
和
IAxis 接口相互连接?
PS对不起我的英语,我不是母语人士
c++ - 为连接点客户端提供 IDispatch 实现
我用一个简单的 COM 对象编写了一个简单的 COM DLL inproc 服务器。COM 对象实现了一个连接点。
我知道如何创建一个派生自 的 ATL 客户端IDispEventImpl
,并使用接收器映射来简化此过程。
但是,出于演示的目的,我想创建一个 win32 控制台应用程序,它使用一个调用我的简单 COM 对象的类,然后充当连接点接收器。
我不知道如何提供一个实现IDispatch
- 有人可以推荐这方面的文档,因为我找不到任何文档(我有 ATL Internals,但这似乎不能满足我的需要)。
这是我已经上过的课程:
windows - 将结构传递给 IDispatch 方法
在第三方 COM 模块中,我必须将结构传递给方法。
IDL 定义的重要部分如下所示:
我如何使用 ATL 从 C++ 调用该方法?
.net - 如何使用 .net 向 COM 对象发送事件回调参数
我有一个引用的 COM dll。某些方法需要回调参数。我检查了反射器中的 interop.MyComLib.dll:
如何发送此参数?我无法发送委托(编译异常)。我试过发送this
和接收InvalidCastException
。
c++ - IDispatch 错误和/或消息文本列表
我在返回 HRESULTS 的 WMI/WBEM 接口上调用方法。我想向用户显示这些错误代码的有意义的错误消息。但是,当我查看 HRESULT 的错误消息时,我只会得到像“IDispatch error #3598”这样的字符串。
我是否可以找到解释其含义的这些 IDispatch 错误代码的列表?
可能出现错误的示例代码:
错误查找:
注意:这没有帮助 - 它不包含我得到的 HRESULTS。它们也不包含在 winerror.h 中。