问题标签 [com-object]

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.

0 投票
1 回答
2035 浏览

c# - 检测并动态加载已安装的 Microsoft Word 对象库

一点背景故事:我有一个小型应用程序,它将使用 Word 根据 Word 模板和公司活动目录中的数据生成 Outlook 签名。它在装有 Office 2007 的计算机上运行良好,因为我在自己的计算机上编码时使用了“Microsoft Word 12.0 对象库”。

不过,网络上有不少安装了 Office 2003 的计算机,并且在这些计算机上缺少“Microsoft Word 12.0 对象库”,导致左右出现异常。

我的问题是:如何检测安装了哪个版本的 Office,从而检测到哪个版本的“Microsoft Word 对象库”可用,然后加载它。我很确定我正在使用的功能在“Microsoft Word 12.0 对象库”和“Microsoft Word 11.0 对象库”中。

如果有人感兴趣,这是我当前用于生成签名的代码:

任何帮助都感激不尽。也欢迎输入上面的代码;我没有任何针对 Office 互操作库进行编码的经验,因此我确信我可以做一些不同的事情。

最好的问候,埃吉尔。

0 投票
1 回答
5408 浏览

vb.net - 从“String”类型到“String”类型的转换无效

我正在将用 VBA 编写的旧 excel 插件移植到 VB .NET。Excel 插件与许多外部 com 对象交互。代码排序如下所示:

我要做的是从 COM 对象中读取字符串并将其放入 durr 以供以后在我的程序中使用。

第二行导致上面发布的异常。如果我尝试使用 CStr/CType 进行强制转换,我会得到同样的异常。Visual Studio 监视窗口将 hurr.getString 的类型报告为“System.__ComObject”,而 VBA 监视窗口将类型报告为“Variant/Object/String”。Microsoft.VisualBasic.Information.TypeName(hurr.getString) 说类型是“字符串”。任何想法我应该如何让这个工作?

谢谢!

0 投票
1 回答
3486 浏览

powershell - 使用 Powershell 列出可用的 COM 对象

我目前正在使用以下脚本来列出我机器上可用的 COM 对象。

我在另一个网站上读到 InProcServer32 密钥的存在证明该对象是 64 位兼容的。

那么使用 powershell 如何确定每个 COM 对象是否存在 InProcServer32?如果这甚至是确定它是 32 位还是 64 位的正确方法。

0 投票
1 回答
1056 浏览

powershell - PowerShell,在没有附加组件的情况下打开 IE

我想将 Internet Explorer 作为没有附加组件的新 Com 对象打开。

$ie=New-Object -comobject InternetExplorer.Application

如何在没有附加组件的情况下启动 Internet Explorer?

0 投票
2 回答
1975 浏览

asp.net - 如何在 ASP.NET 类文件中使用 COM 对象

我有一个 COM 对象,我试图将其包装在 C# 类中,以便使其更容易被其他希望使用它的应用程序使用。

我有以下代码创建 COM 对象的实例,然后使用反射调用方法来检索用户数据。此代码位于 aspx 页面中时可以正常工作。

但是,当我将代码移动到类文件 (JD_API.cs) 以便从实际网站中抽象出来时,我无法再让它工作。例如,我有如下声明的静态方法:

不幸的是,Server 对象仅限于一些默认包含在 Web 应用程序中的 ASP.NET 库,因此上面的代码是行不通的。所以此时我决定尝试创建一个 COM 对象的实例,如下所示:

但是在运行时我收到一条错误消息,“尝试读取或写入受保护的内存。这通常表明其他内存已损坏。 ”。

我不知道从这里去哪里。任何有关如何将创建此 COM 对象的实例抽象到不在 Web 应用程序本身内的层的任何帮助将不胜感激。谢谢!!

0 投票
1 回答
1169 浏览

c# - powershell 进程如何从外部加载的 DLL 返回类型/对象?

我是 .NET 和 Powershell 的新手程序员,

我有一个小型编译的 .NET DLL,它利用目录服务和 TSUserExLib 来获取 TerminalService 属性。DLL 有一个返回“IADsTSUserEx”的静态函数。我测试了 DLL,它在返回字符串时可以工作,但是是否可以将 IADsTSUserEx 类\对象类型返回给 powershell?当我从 powershell 执行静态函数时,我什么也得不到,甚至没有。我使用以下命令进行了尝试

DLL 包含以下代码片段:

0 投票
1 回答
1207 浏览

matlab - 如何在 MATLAB 中从 COM 对象(activex 服务器)读取数据?

我正在尝试将模拟器连接到 MATLAB。模拟器程序公开了一个 COM 对象接口。

我已通过以下命令连接到 COM 对象,并且可以执行其中的大部分方法:

但是它的一些方法需要传递一个Variant*类型作为输出。

这是“invoke”方法指示的方法之一的签名:

我用几种语法调用了这个方法,但它们都不起作用:

我尝试过但没有结果的其他语法是:使用uint16, uint32, int8, int16,int32用于以下所有内容:

我也使用过 libpointer:

问题是我不确定以下项目:

  1. MATLAB 中类似的“Variant(Pointer)”类型是什么?
  2. 将变量作为输出传递给 MATLAB 中的 COM 方法的方法是什么?
  3. 甚至可以从 COM 对象方法结果中获取值作为 MATLAB 中的指针吗?

为了了解数据在其他客户端中的显示方式,我将相同的 dll 文件导入到 Delphi 中,上述方法的类型库签名如下:


是的,西门子已为此 com 服务器 (prosim) 提供了指南,并且基于此类文档,我已连接并执行了其大部分方法。但是读取 I/O 数据的方法不起作用。在文档中,方法签名指定如下:(在 VB 中)

你的应用程序怎么样,它有效吗?它是否包含变体指针作为返回参数?你在那个应用程序中有类似的方法吗?

谢谢

0 投票
1 回答
4194 浏览

c++ - 在 C++ 中使用托管 COM 对象

我已经学习了许多关于如何在 C++ 中使用 COM 对象的详细教程。我正在使用 VS 2010 专业版。我做了一个新的解决方案,叫做TestComInterop. 制作了一个名为TestMath. 通过选择 中的选项使其可见properties->Assembly Information->Make assembly COM-visible。然后我去了 Signing 属性,签署了名为MyMathCom.snk(无密码)的程序集。然后我使用GUID generator并制作了 2 个 GUID。然后把这段代码放到我的程序中编译。(成功)

然后我为控制台应用程序制作了一个 C++ 项目。允许的 MFC。

然后我添加了一个TypelibMFC 类。我能够使用下拉框找到TestMath<1.0>并且它有我的iClass1. 我选择了它,它为我制作了头文件

编译,它为我制作了tlhtli文件..成功..

所以最后一步是运行我的代码。打开TestComInterop.cpp,这是我找不到“标准”的方式。我尝试了各种不同的东西,但不确定要放入什么......这是我的代码

现在我期待它将答案粘贴到我的控制台..但什么也没有。我也期待它显示一个消息框......什么都没有。至少可以说我是 COM 对象的新手。到目前为止,使用所有工具等并不太难做到这一点......但对于我的生活,我无法让它发挥作用。

以防万一这里需要的是我的tlhtli文件。

0 投票
2 回答
180 浏览

c# - 指定 COM 对象从位置运行

我一直在扯我的头发。我有一个我编写的 C++ OPOS 驱动程序。我用 C# 编写了一个虚拟密码键盘。它有效,一切都很好。

不过,给我的一个要求是 C# 驱动程序必须与调用程序一起出现。这需要一段时间才能弄清楚,因为我们期望它必须是 OPOS 驱动程序所在的位置。让我觉得我在设置它时做错了什么。

我知道这很模糊,并且需要更多信息,但我不知道从哪里开始,或者您需要哪些信息来帮助您解决这方面的问题。我会经常检查并回答任何问题....啊,我讨厌这样含糊不清..请不要发火:)我会根据需要进行编辑。

编辑

很抱歉没有很好地表达这一点。当我写这篇文章时,我发生了很多事情。我自己重新阅读它并在想“NEWB!” 哈。

好吧,如此低落和肮脏。问题不在于 COM 驱动程序,而在于 C# 虚拟键盘。总结一下我要说的是为什么我的 C# 虚拟 pinpad dll 必须与我的可执行文件位于同一位置,而不是与我注册的 UPOS 驱动程序位于同一位置?

所以要详细说明。驱动程序有效(前提是我不会再搞砸了)。正如所指出的,任何程序都必须注册它才能使用它。一切都很好。我们将与此 UPOS 驱动程序相关的所有必要文件放在同一个文件夹中。有一次,我们有一个内置在 UPOS 驱动程序中的 C++ 虚拟密码键盘,但为了简单起见,我决定只制作一个 COM 可见的 C# 虚拟密码键盘会更快、更容易。在大多数情况下,它是。这很好,因为如果我进行任何图形更改,我可以替换 VPP.dll 并且生活很好。然后我在电脑上安装了这组驱动,当我试图打开VPP时它会崩溃。出于绝望,我开始复制VPP。dll到不同的位置,发现当我把它放在与执行程序相同的位置时,它就会开始工作。这不是我想要的。我希望能够将它与我的其他驱动程序放在同一目录中。(因环境而异,但通常位于“程序文件”文件夹中)这让我回到了上面总结的问题。令人难以置信的是,我的 UPOS 驱动程序是发出 COM 调用的驱动程序。当我进行安装时,我的安装部分是将 VPP.dll 放入 Program Files 文件夹并在其上运行 regasm(这表示它是成功的)。因此,它必须与正在执行的程序一起使用,这让我感到难以置信。哦,它需要位于集中位置的另一个原因是我们在不同的位置安装了一些不同的程序(确切地说是 4 个)。人为错误就是我不想将 VPP.dll 复制到每台计算机上可能的 4 个位置。(最终将达到 500 左右)

所以现在我澄清了,(实际上问了一个问题……对此感到抱歉),我们有什么建议吗?

0 投票
2 回答
663 浏览

php - 使用 PHP com 对象在 IIS 服务器上读取注册表不起作用

我正在尝试使用以下脚本读取 iis 上的注册表值。

它不起作用。它一直告诉我“无法打开注册表项”。我假设这是一个权限问题,但不确定。我怎样才能让它工作。

谢谢您的帮助。