问题标签 [comobject]

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 投票
0 回答
133 浏览

c# - 无法添加自定义属性 - 需要修复

我正在使用DSOFile以下代码将自定义属性写入文件:

但是在运行代码时它给了我以下错误:

batchFile.exe 中出现“System.InvalidCastException”类型的未处理异常

附加信息:无法将“DSOFile.OleDocumentPropertiesClass”类型的 COM 对象转换为接口类型“DSOFile._OleDocumentProperties”。此操作失败,因为 IID 为“{58968145-CF01-4341-995F-2EE093F6ABA3}”的接口的 COM 组件上的 QueryInterface 调用因以下错误而失败:不支持此类接口(来自 HRESULT 的异常:0x80004002 (E_NOINTERFACE)) .

然后在执行该行时更改类型,filedynamic无法添加或查看与文件关联的属性,所有属性都显示函数评估需要所有线程运行。 那就是代码将如下所示:

这是我在调试时观察变量时发生的图像:

在此处输入图像描述

我做错了什么?任何建议将不胜感激。

0 投票
2 回答
358 浏览

powershell - Outlook/Powershell - 截断“.Body”的邮件对象

我正在编写一个脚本,它将在用户机器上运行一个 exe,然后提示他们将详细信息通过电子邮件发送给我。

问题代码是这样的:

问题在于$ResultsOutput被添加到$Mail.Body邮件对象的属性中,它似乎只将其截断为第一行 - 的内容$ResultsOutput是:

然后$Mail.Body设置为:

下面没有更多信息。

在 Notepad++ 中运行$ResultsOutput | Out-File .\ResultsOutput.txt和打开确认输出是CRLF分开的。

我还尝试了以下方法来排除格式上的一些奇怪之处。

最后一行通常在哪里:

任何帮助解决这个奇怪的问题将不胜感激。

编辑 -

$Details通过以下代码检索:

0 投票
0 回答
107 浏览

vb.net - 串行端口在通过捕获异常关闭后花费大量时间重新打开自身

我试图通过这样的串行端口发送数据来捕获超时异常,

通过捕获超时异常,我可以立即关闭端口,但是当我再次重新打开 serialPort 时,我必须等待大约 1-2 分钟才能重新打开端口。因为,我是新手,我阅读了文档并发现 serialPort 它是一个非托管资源,因此它不受垃圾收集器的直接控制。

我发现了一个名为 ReleaseCOMObject(o as Object) 的 API 作为 Integer。我试着像那样使用这个 API,

API 接受此 COMPort 作为 SerialPort 对象,但是当我发布并运行此代码时,它给了我一个 ArgumentException。这是下面的例外,

我发现还有另一种方法是实现 IDisposable 接口,但是如何在我的表单类中实现这个接口,该接口已经由 Visual Studio 在 Form1.Designer.vb 文件中实现。Visual Studio给出的代码如下,

在这方面的任何帮助将不胜感激。

0 投票
1 回答
83 浏览

c# - 未分配给 var 的事项 COM 对象是否未释放?

如果我使用这样的代码,将释放所有非托管 COM 对象

而不是这样的代码

?

如果有一些文件,请在回答中发送链接。

0 投票
0 回答
26 浏览

c# - 从内存中正确释放 Excel

我正在使用 C# & VS2013 和 VSTO。我的代码执行得非常完美,但我遇到的一个问题是,当我转到任务管理器并查看详细信息时,即使之后 Excel 仍然显示为正在运行,我觉得我已经正确清理了。

这是我用来清理和关闭对 Excel 的所有引用的语法。只是对 Excel 和 VSTO 的引用,我省略了腿部工作的肉和肉汁,否则这篇文章会很长。

我有什么设置不正确吗?为什么 Excel 仍然显示在任务管理器中?

编辑
我添加了GC.Collect()&GC.WaitForPendingFinalizers()但现在我的语法挂起

它已经在这条线上坐了大约 5 分钟,是什么原因导致冻结?

编辑#2
仍然没有这样的运气。这是代码

0 投票
1 回答
910 浏览

asp.net - .Net 应用程序能否同时支持 AspCompat 指令和 WebSockets(由 SignalR 使用)?

我正在从 .Net 4.5.2 框架上运行的 Web 应用程序中的 Web 表单调用 COM 对象。我在使用 AspCompat="true" 页面指令时收到以下错误消息,这是调用 STA(单线程单元)COM 对象所必需的:

错误消息指出我需要在 web.config 文件的应用程序设置中包含aspnet:UseTaskFriendlySynchronizationContext = false。这解决了第一个异常,但会引发一个新异常,请求删除应用程序设置,因为应用程序还使用 WebSockets(由 SignalR 使用):

是否可以在 Web 表单中包含 AspCompat="true" 页面指令并在 .Net 应用程序的其他地方仍然使用 WebSockets(由 SignalR 使用)?

0 投票
1 回答
317 浏览

com - 为具有进程 ID 或 MainWindowHandle 的多个实例查找 COM 对象 (Corel.Application)

我有一个客户端服务器应用程序执行以下操作:
服务器启动并监听特定端口。许多 corelDraw 会话手动或以编程方式启动。每个 corel 会话(客户端)连接到发送当前进程 ID 的服务器。服务器将所有连接保存在 listView 中,并且 EndPoint 可以根据每个连接更改(发送和接收)消息。现在我想使用特定此类进程 ID 的 COM 对象。我试过了:

有没有办法获得 corel COM 对象,让我有机会像这样使用 Corel.Application 对象?

提前致谢!

0 投票
2 回答
4179 浏览

c# - 如何修复“无法转换类型为‘Microsoft.Office.Interop.Outlook.ApplicationClass’的 COM 对象/RPC 服务器不可用”?

当在特定机器上运行时,我收到上述错误,它会暂停我的应用程序中的活动。当我在自己的机器上运行它时,不会发生这样的错误。

也许“ RPC 服务器不可用”是问题的症结所在,但是在应用程序之前运行(并且仍在我的机器上运行)之后会导致它弹出?

在更多上下文中(显示似乎有价值/重要的内容),错误消息是:

System.InvalidCastException:无法将“Microsoft.Office.Interop.Outlook.ApplicationClass”类型的 COM 对象转换为接口类型“Microsoft.Office.Interop.Outlook._Application”。此操作失败,因为 IID 为“{00063001-0000-0000-C000-000000000046}”的接口的 COM 组件上的 QueryInterface 调用由于以下错误而失败:RPC 服务器不可用。(来自 HRESULT 的异常:0x800706BA)。在 System.StubHelpers.StubHelpers.GetCOMIPFromRCW(Object objSrc, IntPtr pCPCMD, IntPtr& ppTarget, Boolean& pfNeedsRelease) 在 Microsoft.Office.Interop.Outlook.ApplicationClass.CreateItem(OlItemType ItemType) 在 RoboReporter2017.ExceptionLoggingService.EmailMessageToAssignee(String unit, String notificationRecipient,字符串 rptName) 在 RoboReporter2017。RoboRprtrLib.GenerateAndSaveDueReports() 在 RoboReporter2017.FormMain.RunDueReports() 在 RoboReporter2017.FormMain.FormMain_Load(Object sender, EventArgs e) 。. .

************** 加载的程序集 ************** -------------------- -------------------- Microsoft.Office.Interop.Outlook 程序集版本:12.0.0.0 Win32 版本:12.0.4518.1014 代码库:file:///C:/Windows /assembly/GAC/Microsoft.Office.Interop.Outlook/12.0.0.0__71e9bce111e9429c/Microsoft.Office.Interop.Outlook.dll ------------------------ ----------------- office 程序集版本:12.0.0.0 Win32 版本:12.0.4518.1014 代码库:file:///C:/Windows/assembly/GAC/office/12.0。 0.0__71e9bce111e9429c/office.dll ----------------------------------------

如 err msg 中所引用的,在该机器上中断的方法是:

我注意到我的项目参考中的 Microsoft.Office.Interop.Outlook 版本是 12.0.0.0,与错误消息中列出的“已加载程序集”中列出的版本相同。

更新

考虑到 Outlook 未运行可能是问题所在,我编写了以下代码:

...从这里改编,但在实施之前,我关闭了 Outlook 并运行了应用程序,看看如果 Outlook 没有运行,我是否会在我的机器上收到相同的错误消息。但不是!它会自行重新启动 Outlook,而无需我花哨的 StartOutlookIfNotRunning() 方法。

所以这不是问题,反正...

0 投票
1 回答
654 浏览

php - 如何在 PHP 中循环并输出变量数组对象的值

在我的 PHP 代码中,我有一个数组对象 $myArrayIbject ,我想获取它的值。我知道它不是一维数组。这是我确定的。

当我跑

它返回对象。

当我跑

它返回 1632。

当我跑

它返回

对象(变体)#3(0){ }

当我跑

它返回 8209。

我观察到的另一件事是,当我运行以下代码时,从 $myArrayIbject[0] 一直到 $myArrayIbject[1631] 它返回整数值

我知道这不是访问其所有值的方法。我正在寻找一种提取和访问其所有值的方法。

0 投票
1 回答
912 浏览

php - 如何将 8209 数组对象变量转换为 VT_VARIANT

我正在调用一个 COM 对象方法,该方法在我的 PHP 代码中返回一个类型为 8209 的数组变体对象。

最后,我希望将转换后的 VT_VARIANT 对象作为另一个 COM 对象方法的值传递,该方法要求其输入为 VT_VARIANT[12]。

我通过发出以下命令将 $com_VArray 转换为 VT_VARIANT 对象变体类型

但后来我收到以下错误

致命错误:未捕获的异常“com_exception”和消息“变体类型转换失败:类型不匹配。” 在 C:\xampp\htdocs\waterCompany\reservoir.php:110 堆栈跟踪 #0 C:\xampp\htdocs\waterCompany\reservoir.php(110): variant_cast(Object(variant),12)#1{main} 抛出在第 110 行的 C:\xampp\htdocs\waterCompany\reservoir.php 中。

我在这里http://php.net/manual/en/function.variant-set-type.php对 variant_cast 做了更多阅读,但我没有取得太大进展。

我正在使用 PHP 5.5.11。