问题标签 [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.
c# - 无法添加自定义属性 - 需要修复
我正在使用DSOFile
以下代码将自定义属性写入文件:
但是在运行代码时它给了我以下错误:
batchFile.exe 中出现“System.InvalidCastException”类型的未处理异常
附加信息:无法将“DSOFile.OleDocumentPropertiesClass”类型的 COM 对象转换为接口类型“DSOFile._OleDocumentProperties”。此操作失败,因为 IID 为“{58968145-CF01-4341-995F-2EE093F6ABA3}”的接口的 COM 组件上的 QueryInterface 调用因以下错误而失败:不支持此类接口(来自 HRESULT 的异常:0x80004002 (E_NOINTERFACE)) .
然后在执行该行时更改类型,file
但dynamic
无法添加或查看与文件关联的属性,所有属性都显示函数评估需要所有线程运行。
那就是代码将如下所示:
这是我在调试时观察变量时发生的图像:
我做错了什么?任何建议将不胜感激。
powershell - Outlook/Powershell - 截断“.Body”的邮件对象
我正在编写一个脚本,它将在用户机器上运行一个 exe,然后提示他们将详细信息通过电子邮件发送给我。
问题代码是这样的:
问题在于$ResultsOutput
被添加到$Mail.Body
邮件对象的属性中,它似乎只将其截断为第一行 - 的内容$ResultsOutput
是:
然后$Mail.Body
设置为:
下面没有更多信息。
在 Notepad++ 中运行$ResultsOutput | Out-File .\ResultsOutput.txt
和打开确认输出是CRLF
分开的。
我还尝试了以下方法来排除格式上的一些奇怪之处。
最后一行通常在哪里:
任何帮助解决这个奇怪的问题将不胜感激。
编辑 -
$Details
通过以下代码检索:
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给出的代码如下,
在这方面的任何帮助将不胜感激。
c# - 未分配给 var 的事项 COM 对象是否未释放?
如果我使用这样的代码,将释放所有非托管 COM 对象
而不是这样的代码
?
如果有一些文件,请在回答中发送链接。
c# - 从内存中正确释放 Excel
我正在使用 C# & VS2013 和 VSTO。我的代码执行得非常完美,但我遇到的一个问题是,当我转到任务管理器并查看详细信息时,即使之后 Excel 仍然显示为正在运行,我觉得我已经正确清理了。
这是我用来清理和关闭对 Excel 的所有引用的语法。只是对 Excel 和 VSTO 的引用,我省略了腿部工作的肉和肉汁,否则这篇文章会很长。
我有什么设置不正确吗?为什么 Excel 仍然显示在任务管理器中?
编辑
我添加了GC.Collect()
&GC.WaitForPendingFinalizers()
但现在我的语法挂起
它已经在这条线上坐了大约 5 分钟,是什么原因导致冻结?
编辑#2
仍然没有这样的运气。这是代码
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 使用)?
com - 为具有进程 ID 或 MainWindowHandle 的多个实例查找 COM 对象 (Corel.Application)
我有一个客户端服务器应用程序执行以下操作:
服务器启动并监听特定端口。许多 corelDraw 会话手动或以编程方式启动。每个 corel 会话(客户端)连接到发送当前进程 ID 的服务器。服务器将所有连接保存在 listView 中,并且 EndPoint 可以根据每个连接更改(发送和接收)消息。现在我想使用特定此类进程 ID 的 COM 对象。我试过了:
有没有办法获得 corel COM 对象,让我有机会像这样使用 Corel.Application 对象?
提前致谢!
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() 方法。
所以这不是问题,反正...
php - 如何在 PHP 中循环并输出变量数组对象的值
在我的 PHP 代码中,我有一个数组对象 $myArrayIbject ,我想获取它的值。我知道它不是一维数组。这是我确定的。
当我跑
它返回对象。
当我跑
它返回 1632。
当我跑
它返回
对象(变体)#3(0){ }
当我跑
它返回 8209。
我观察到的另一件事是,当我运行以下代码时,从 $myArrayIbject[0] 一直到 $myArrayIbject[1631] 它返回整数值
我知道这不是访问其所有值的方法。我正在寻找一种提取和访问其所有值的方法。
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。