问题标签 [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.
c# - 如何从另一个进程显示 wpf 窗口
我创建了 3 个不同的应用程序
应用程序 1: 它是一个 WPF 应用程序,它有 1 个显示“Hello Word”的窗口(MainWindow)。
应用程序 2: 它是一个 WPF 应用程序 此应用程序将创建应用程序 1 的 MainWindow 实例。如下所示
应用程序 3: 这又是一个 WPF 应用程序,它有 2 个按钮“显示应用程序 1”和“隐藏应用程序 1”
现在我将启动应用程序 2 和应用程序 3。一旦我单击应用程序 3 中的“显示应用程序 1”按钮,窗口(应用程序 1)就会出现黑色背景。它没有显示“Hello world”。它显示窗口标题,但窗口的其余部分是黑色的。
如果有人知道如何解决它?请告诉我。
如果您对我的查询有任何疑问,请告诉我:)。
c# - 在 C# 中使用 GCHandle.Alloc 固定类实例
我正在使用一个非托管 C 库,该库具有一个从 C 库中的内部线程调用的回调函数。回调有一个 void * 'context' 参数。
我想将此上下文设置为 C# 类实例的地址,以便我可以从回调中访问成员字段和属性。
我的理解是我需要固定类的内存以确保 GC 不会移动它,因为 C 代码将获取实例地址的副本。但是,GCHandle.Alloc() 声明:“不能固定具有非原始(非 blittable)成员的实例。”
并且确定有足够多的代码尝试固定包含类类型字段的类或结构在运行时会失败。
如何将 C# 类实例的地址传递给我的 C++ 代码并确保地址保持有效(即不被 GC 移动)?
编辑#1 更正:该库是 C 库,而不是前面所述的 C++(在上面的文本中更正)。并不是说它应该有任何区别。
这是 C 回调的原型:
并用 C# 包装:
pvParams
在安装回调时传递到 C 库中。库存储指针,但不尝试以任何方式访问它。它只是在调用回调时将其传回。
当使用 C++ 代码中的库时,我通常会传递一个this
指向pvParams
.
c# - RPC 服务器不可用。(来自 HRESULT 的异常:0x800706BA)- Excel
我尝试使用 asp.net c# 将数据写入 excel 模板文件。但是我得到了以下异常。
ExceptionType:“System.Runtime.InteropServices.COMException”消息:“RPC 服务器不可用。(来自 HRESULT 的异常:0x800706BA)”
有时它适用于少量行。我找不到问题所在。
我想一次写超过 500 行。
c# - 无法使用 C# 服务打开 xls 文件
我必须创建一个服务来将数据从 excel 文件导入到 SQL Server 表中;整个系统属于我公司的一个客户,所以我必须使用 Visual Studio 2010。有些打开可能打开了这个文件,所以我决定将它复制到一个临时目录,然后解析这个副本。我以为我做到了,因为它在调试模式下正常工作:打开文件,读取所有行,最后将值写入数据库。我将它作为服务安装,但我不断收到相同的错误(翻译成英文):
该文件存在,我可以在文件夹中找到它,并且在服务尝试打开它时没有人使用它(我只是复制了它)。我不想保存它,我以只读模式打开它,这样我也可以排除第三点。我正在开发服务的机器与运行服务的机器相同,即 Windows 7 Ultimate、Service Pack 1。
我认为这可能是服务用户的问题,所以我尝试在 Visual Studio 中以调试模式启动服务,并使用相同的服务用户(管理员级别)登录到系统,它工作得非常好。然后我认为可能是时间问题,也许服务试图在系统没有释放文件的情况下“过早”打开文件,所以我添加了一个
之前
线,但没有任何改变。当然,每次我修改服务我都会停止它,将新文件复制到系统然后重新启动它。
代码是:
我能做些什么来解决这个问题?谢谢你的帮助。
c# - 如何从很长的路径中获取文件的创建日期时间?
我的文件路径很长,因此只能使用SafeFileHandle
.
想要获取创建日期时间。
当尝试获得 Millies 然后转换时,DateTime
它会减少 1600 年。
代码:
上面creationTime
少了1600年。而不是 2019 年,而是 0419。
然后我不得不这样做
以上creationTime
是正确的,因为我添加了 1600 年。
是什么让日期减少了 1600 年?
我做错什么了吗?
c# - 从多个客户端使用 COM DLL
我正在尝试构建一个将由多个客户端使用的 COM DLL。
为此,我有 2 个客户。
- 控制台应用程序(订阅者)
- WPF 应用程序(发布者)
WPF 应用程序将调用 COM DLL 的 Publish 方法,该方法又会引发一个事件,订阅此事件的控制台应用程序将响应。
事件是静态的。
COM DLL
WPF 应用程序:
控制台应用程序:
当前状态是 COM DLL 中 Publish() 方法中的 Ack() 为空...
c# - 如何在基于 Linux 的服务器上创建 Office 文档?
我在 C# 上开发了一个“报告应用程序”,它根据从用户收到的一些参数创建报告(基本上是 .doc 和 .ppt 的格式(使用 MS Office 互操作库))。当应用程序在 Windows 服务器或计算机上执行时,一切都按预期工作。问题是一位客户的服务器是基于 Linux 的。是否可以在 Linux 环境中创建 Office 文档?有什么想法吗?
我目前正在使用这些库:
请帮忙。
c# - microsoft excel 无法访问该文件有几个可能的原因 + Workbooks.Open +
在我的 C#.net 应用程序中,我正在创建 excel 文件,它在我的本地系统上运行良好,但是在 IIS 中部署应用程序时出现以下错误
- 我的 Web 服务器没有安装 office。
错误:
ExceptionMessage> Microsoft Excel 无法访问文件 '\............xltm'。有几个可能的原因: • 文件名或路径不存在。• 该文件正被另一个程序使用。• 您尝试保存的工作簿与当前打开的工作簿同名。System.Runtime.InteropServices.COMException
c# - 在 C# 中保留 C++ 指针
我正在用 C# 编写一个小程序,其中包括一个 C++ Dll。
在 C++ 中,有许多类需要实例化并留待以后使用。这看起来像以下函数:
如您所见,我只是创建了一个 FrameCapture 类并返回一个指向它的指针。
此指针作为 IntPtr 存储在 C# 中。
到目前为止,这非常有效。但是,如果我使用该指针来获取 FrameCapture 的实例
该类将完全是空的。如何获得我在第一步中初始化的类的实例?
编辑:
我做了一些测试并将指针替换为更好看的整数。
我将“捕获”转换为 Int32 并返回它。在我的测试用例中,它返回字节(208,113,244,194)。正如预期的那样,这些值在 C++ 和 C# 中是相同的。
但是,现在变得奇怪了。
如果我将此 Int32 传递给“GetBitmapFileHeader”,则该值突然变为字节(184,231,223,55)。
这甚至不接近!我想到了 Little <-> Big Endian 或类似的东西,但是,这是一个全新的 Memoryblock?
IntPtr 将继续进行相同的行为。
根据要求,我还发布了“GetBitmapFileHeader”的导入