问题标签 [com-server]
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.
.net - 如何指定我的 .NET 互操作应该使用哪个 COM 服务器?
我有一个使用 COM 服务器的 .NET 应用程序。COM 服务器在我运行它的机器上注册,所以当我的代码到达new MyInterop.SomeObject()
适当MyComServer.exe
的位置时启动。
但是,当我调试时,我有几个副本MyComServer.exe
位于具有不同配置文件的不同文件夹中。我想指定我的应用应该加载哪个。
我知道的两种解决方法是:
- 我可以在每次
MyComServer.exe /regserver
使用前重新注册( )。但我不喜欢对局部问题使用全局解决方案。 - 我
MyComServer.exe
手动启动(然后它作为独立应用程序运行),COM 基础架构将重用这个现有进程。但这不是很自动化。
有没有更合适的?
matlab - MATLAB 互操作服务器(自动化服务器)可用于运行时库?
我想弄清楚是否可以在不安装整个 MATLAB 包(但只安装运行时库)的情况下使用 MATLAB COM 服务器(自动化服务器)。
python - Python COM 服务器抛出“模块”对象没有属性“VARIANT”
这是一个用 Python 实现的 COM 服务器:
它注册正常。当它运行时,它会导致在生产机器上发生以下情况,但不会在开发机器上发生:
我已经安装了 comtypes 0.6.2。运行 Python 2.6.6
com - 使用 Wix 注册 COM 服务器
我有以下注册 COM 服务器组件的 WiX 代码
它成功注册了服务器,但是当我以“运行方式”模式运行程序时,程序没有看到 COM 服务器。
请建议 - 我应该如何更改 WIX 代码
更新:答案是 - 以提升的权限运行 WiX 脚本或comserver.exe /regserver
以提升的权限运行,但它不起作用。我认为上面的脚本很有用,所以我保留问题并创建一个稍微不同的问题
mfc - 带有 ActiveX 控件的对话框的 CDialog::Create 失败
我有一个模块可以创建一个包含 ActiveX 控件的无模式对话框。该模块是 MFC EXE 应用程序的一部分,对话框的创建工作正常。最近,我将模块移到 ATL/COM 服务器中,并将对话框资源从 EXE 复制到 COM 服务器中。尝试使用CDialog::Create()
错误创建无模式对话框时。
我调试CDialog::Create
并注意到它在::CreateDialogIndirect()
返回NULL
和GetLastError
返回时失败0
。我在对话框资源属性中将“No Fail Create”标志更改为 True,并获得了有关错误的更多详细信息。问题发生在宏DoDataExchange()
内的对话框中。DDX_Control
这将调用CDataExchange::PrepareCtrl()
控件的资源 ID,如下所示:
由于传递的资源 ID ,对该函数的调用m_pDlgWnd->GetOleControlSite()
失败。顺便说一下,资源 ID 是控件的 ID。
关于为什么这在 EXE 中有效并在 COM 服务器中失败的任何建议?
delphi - 我找到了 ComClass,现在如何引用它?
我在 Delphi 2010 中编写了一个小型 COM 服务器,它充当零售应用程序的插件。零售应用程序寻找一个“发现”接口,该接口注册任意数量的附加接口调用TAutoObjectFactory.Create
每个接口。这工作得很好——所有插件接口都按设计工作。
但是现在我想从另一个接口调用一个接口的公共方法,这样我就不必重复代码了。看起来很简单,调用ComClassManager.ForEachFactory
查找我需要使用的接口的ClassID即可。也得到了它的工作!
但是现在我找到了这个类,我被一个看似微不足道的最后一步难住了:如何使用或转换我找到的类(或类引用?)以实际调用它的一个方法。
在我发送到的“FactoryProc”中ForEachFactory
,我假设 ComClass 属性TComObjectFactory
是我所追求的,但它是 TClass 类型,它是指向它所指向的实际类对象的类引用(至少我希望我是正确理解这一点)。我对类引用有点模糊,我尝试强制转换或取消引用此属性导致访问冲突或编译器错误。
有什么建议么?
c# - ComVisible 属性和 IDispatch 接口
ComVisible 属性和 IDispatch 接口之间有什么关系吗?我的意思是当用 C# 编写 COM 类 COMVisible TRUE 时,它会自动从 IDispatch 接口实现该类吗?
python - 何时为 COM 服务器生成新的 GUID?(Python 中的示例)
我是制作 COM 服务器和从 Python 使用 COM 的新手,所以我想澄清一些我找不到明确答案的事情:
为 COM 服务器正确创建 GUID
我是否生成:
我的预期 COM 服务器的 GUID 手动复制它并从那时起将 # 用于服务器?因此,当我分发应用程序时,其他用户将使用我在开发期间创建的相同 GUID。
每次初始化应用程序或 COM 服务器对象时都有一个新的 GUID?
每台计算机都有一个新的 GUID,在初始设置期间只有一次,然后让应用程序保存 GUID # 并在未来加载时从用户设置文件中提取该 #?
示例场景 1:
示例场景 2:
示例场景 3:
我可以使用 GUID 来跟踪程序/COM 服务器版本吗?
如果上面的场景 #1 是正确的,那么:当我进行升级时,我可以测试旧的 GUID,以便我可以正确地与之交互?
TODO:如何从 Python 和/或 VBA 获取 COM 服务器的 GUID?
com-interop - 查找应用程序的 COM 服务器
我有一些应用程序调用相同的 COM 服务器(通过相同的互操作 dll)。如果我必须终止这些应用程序之一,因为它挂起或其他属于 COM 服务器的事情继续。
有没有办法决定哪个 COM 服务器属于特定的应用程序?我已经搜索了一种使用进程 ID 或句柄的方法,但没有找到解决方案。
谢谢你的帮助。
c# - 从另一个线程更新 excel 电子表格
我使用 C# 创建了 COM 服务器,我的客户可以在其中接收实时更新。更新通常从不同的线程触发。但我注意到当回调方法更新电子表格时 Excel 会崩溃。有没有办法在 UI 线程中调用更新?
PS 我知道 Excel 的 RTD 功能。但它不适合我的需要,因为我需要在一次更新中使用多个参数。