问题标签 [interopservices]

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 回答
3058 浏览

c# - 为什么我会使用此代码得到“InteropServices.COMException / ForwardCallToInvokeMember”?

在检索数据并将其存储在通用列表中之后,我得到了这段代码来使用 Excel 互操作代码填充 Excel 电子表格:

它在 AddData() 方法的第一行崩溃(尝试分配给 UnitCell),并带有“ System.Runtime.InteropServices.COMException 未处理... StackTrace: at System.RuntimeType.ForwardCallToInvokeMember(String memberName, BindingFlags flags, Object ……

我不知道为什么会这样;我在尝试添加数据之前调用它:

完整的例外是:

System.Runtime.InteropServices.COMException 未处理 HResult=-2146827284 Message=Exception from HRESULT: 0x800A03EC Source="" ErrorCode=-2146827284 StackTrace: at System.RuntimeType.ForwardCallToInvokeMember(String memberName, BindingFlags flags, Object target, Int32[] aWrapperTypes , MessageData& msgData) 在 Microsoft.Office.Interop.Excel.Range.get__Default(Object RowIndex, Object ColumnIndex) 在 Pivotal.FormMain.AddData(PriceVarianceData _pvd) 在 c:\Projects\Pivotal\Pivotal\Form1.cs:line 155 C:\Projects\Pivotal\Pivotal\Form1.cs 中的 Pivotal.FormMain.GenerateAndSaveSpreadsheetFile():c:\Projects\Pivotal\Pivotal\Form1.cs 中 Pivotal.FormMain.buttonRun_Click(Object sender, EventArgs e) 的第 134 行: System.Windows.Forms.Control.OnClick(EventArgs e) 处的第 77 行。Windows.Forms.Button.OnClick(EventArgs e) 在 System.Windows.Forms.Button.OnMouseUp(MouseEventArgs 事件) 在 System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks) 在 System.Windows。 Forms.Control.WndProc(Message& m) 在 System.Windows.Forms.ButtonBase.WndProc(Message& m) 在 System.Windows.Forms.Button.WndProc(Message& m) 在 System.Windows.Forms.Control.ControlNativeWindow.OnMessage( Message& m) 在 System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m) 在 System.Windows.Forms.NativeWindow.DebuggableCallback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam) 在 System.Windows.Forms.UnsafeNativeMethods System.Windows.Forms.Application.ComponentManager.System.Windows.Forms 处的 .DispatchMessageW(MSG& msg)。UnsafeNativeMethods.IMsoComponentManager.FPushMessageLoop(IntPtr dwComponentID, Int32 reason, Int32 pvLoopData) at System.Windows.Forms.Application.ThreadContext.RunMessageLoopInner(Int32 reason, ApplicationContext context) at System.Windows.Forms.Application.ThreadContext.RunMessageLoop(Int32 reason, ApplicationContext context) 在 System.Windows.Forms.Application.Run(Form mainForm) at Pivotal.Program.Main() in c:\Projects\Pivotal\Pivotal\Program.cs:line 19 at System.AppDomain._nExecuteAssembly(RuntimeAssembly 程序集, String[] args) 在 System.AppDomain.ExecuteAssembly(String assemblyFile, Evidence assemblySecurity, String[] args) 在 Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly() 在 System.Threading.ThreadHelper.ThreadStart_Context(Object state) 在 System .线程。ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx) at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx) at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback回调,对象状态)在 System.Threading.ThreadHelper.ThreadStart() InnerException:对象状态)在 System.Threading.ThreadHelper.ThreadStart() InnerException:对象状态)在 System.Threading.ThreadHelper.ThreadStart() InnerException:

这里可能是什么问题?我看了这个,但似乎没有任何建议适用于这种情况。

更新

今天早上我注意到我有大约 40 个 Excel 进程正在运行,所以想知道这是否可能是问题(我猜它们没有被关闭/处理)并将它们全部杀死。不过,我仍然得到了相同的结果 - 并且 Excel 进程也一直存在(正如可以预料的那样,突然停止执行会发生什么)。

0 投票
1 回答
1212 浏览

c# - 如何从另一个进程而不是子控件获取子窗口?

我的任务是找到一种方法让另一个应用程序出现在其他窗口的顶部(始终在顶部)。我可以使用 RetrieveProcesses() 函数获取具有窗口标题的进程。一旦用户选择了他们想要修改的进程,我的应用程序将调用 MakeProcessOnTop 或 MakeProcessNormal。这两个函数都会修改主应用程序的窗口。在我添加修改它的孩子之前,这工作正常。

然后我发现这不适用于子窗口(如 Outlook 中的电子邮件),所以我开始寻找一种处理子窗口的方法。以下代码的编写方式最终会弄乱子窗口。如何获取子窗口的句柄指针而不是子控件?

0 投票
0 回答
373 浏览

c# - 在 C# System Runtime Interopservices 外部异常中保存位图时出错

下面的代码在这里和那里工作。有时它可以很好地保存图像,而其他时候则不能。图像正在本地保存,文件夹具有正确的权限。

这是我得到的错误:

在此处输入图像描述

有人可以告诉我我做错了什么吗?

0 投票
1 回答
421 浏览

c# - 使用 Range.InsertParagraphAfter() 时出现 COM 异常

大家好,下午好(阿根廷时间),我收到了一个项目,系统根据客户的一些要求格式化了一个 word 文档。我收到的 Word 文档是 .doc,而我以不同格式或内部设计导出或创建的 Word 文档是 .docx。核心是这个相同的代码曾经与 Office12 程序集一起使用,但是当我添加新的程序集是 Office15 时,它崩溃了。

我用于流程崩溃的项目部分的示例代码如下:

异常消息是:

有趣的东西:

  1. 当我使用新文件时,它不会崩溃。
  2. 当我手动编写内容时,它不会崩溃。
  3. 当我复制并粘贴内容或部分内容时,它会崩溃。
  4. 我删除了新文档中的内容,然后再试一次,崩溃了。

我相信这与文档原始文档中的单词或段落的格式有关。因为它只发生在我使用原始文档的内容时。但我还不确定发生了什么,或者如何处理这个问题,或者如何解决这个问题。由于该异常不是那么具有描述性(我知道,我并不总是会收到我需要的特定信息或错误消息),但我已经在网上搜索以查看是否有人有相同、相关或不相关的类型的错误。

任何帮助或指导都将受到高度赞赏,感谢大家花时间阅读和理解代码。

最诚挚的问候 道格拉斯·利卡姆

0 投票
1 回答
430 浏览

c# - 在 C# 中编组非托管变量

我在我的 C# 代码上导入了一个非托管 dll。.h 文件描述了如下所示的方法

我设法调用了 SetConfiguration 方法

提供一个简单的 C# 字符串就可以了。

现在我正在尝试 GetErrorMessage_UTF16 方法但没有成功。那么,如何分配 errorCode 的长度以及如何声明 wchar_t *messageText 变量?

我已经尝试过这样的事情,但它似乎不起作用

无论我尝试过什么,我都会得到

0 投票
1 回答
975 浏览

c# - 让 Unity 了解 System.Runtime.InteropServices 以使用 HoloToolKit 为 HoloLens 构建项目

首先,非常感谢你们,你们的帖子和答案在我的 HoloLens 开发工作中非常宝贵!

所以,这是我的问题:

  • HoloToolKit 刚开始时开发的旧项目。
  • 现在想实现空间映射和共享
  • 手动将带有元文件的 HoloToolKit 的共享文件夹导入 Unity
  • 按下播放键,在更改几个脚本以查找 HoloToolKit 命名空间而不是 HoloToolKit.Unity 后一切正常
  • 放入预制件进行共享
  • 测试,这在编辑器中效果很好(请参阅服务器上的连接没有问题)
  • 构建项目 - 一切都崩溃了!
  • 编辑器中出现 647 错误,而 Visual Studio 中没有任何内容
  • 所有这些都来自 SDK
  • 都有如下相同的错误:
  • 错误 CS0234:命名空间“System.Runtime.InteropServices”中不存在类型或命名空间名称“HandleRef”(您是否缺少程序集引用?)
  • 我试过的:
  • 仅从包中导入共享好东西....这破坏了我的项目,因为所有序列化的游戏对象都被重置。重置所有这些游戏对象是不可行的......
  • 将 System.Runtime.InteropServices.dll 文件复制到 assets 文件夹中的 plugins 文件夹中 - 不开心
  • 将 csc、gmcs、mcs 和 smcs 文件(无论它们是什么)复制到项目中并尝试重建 - 没有乐趣。
  • 把我的头发拉出来,把头撞在岩石和坚硬的地方,直到几乎没有意识——没有快乐。

你们的任何帮助将绝对 100% 感激。在此先感谢各位,祝您编码愉快!

0 投票
1 回答
1451 浏览

c# - 如何将 IntPtr 转换为 SafeHandle?

我有 C# Windows 服务类:

如何将 IntPtr(如 this.ServiceHandle)转换为“System.Runtime.InteropServices.SafeHandle”?以便我可以在函数调用“SetServiceObjectSecurity()”中使用它?我的最终目标是授予该服务的管理员权限。

0 投票
2 回答
1471 浏览

c# - System.Runtime.InteropServices.COMException (0x800A1436)

我们正在尝试使用 MVC 应用程序上的 Office 互操作服务打开位于共享驱动器上的 Word 模板。该解决方案在本地工作,但一旦部署到服务器,就会出现以下消息:

ApplicationPool 在已拥有共享驱动器权限的域用户帐户下运行。

有什么建议吗?

0 投票
3 回答
881 浏览

vb.net - 通过 Visual Basic 错误访问 Outlook

我正在尝试创建一个程序,该程序从 Outlook(2007 桌面版)收件箱中检索所有电子邮件并将它们放入 DataGridView。

代码:

当我尝试构建项目时,出现以下错误:

System.Runtime.InteropServices.COMException (0x80040154):检索具有 CLSID {0006F03A-0000-0000-C000-000000000046} 的组件的 COM 类工厂失败,原因是以下错误:80040154 未注册类(HRESULT 异常:0x80040154(REGDB_E_CLASSNOTREG) ))

更新

我已将编译器 CPU 更改为 x86 和 x64,这并不能解决错误。

目标平台

0 投票
0 回答
73 浏览

.net - 使用 Windows 服务进行跟踪

嗨,我正在尝试跟踪,当使用以下技术使用 Windows 服务打开特定的 Word 文件但这些方法在 Windows 服务中不起作用时,请帮助我,提供我可以实现的方法。