问题标签 [rtd]

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 投票
2 回答
3244 浏览

c++ - RTD - 将示例 COM DLL 制作成 COM exe

我正计划将我现有的应用程序变成RTD 服务器

该应用程序目前是用 C++ 编写的,虽然我最终会将它移植到 C#/Mono,但我希望能够使用 C++ 添加 RTD 功能。

我找到了一些示例代码(MSVCRTDServer)和这个站点:http ://weblogs.asp.net/kennykerr/archive/2008/10/29/excel-rtd-server-in-c.aspx

不幸的是,这些是 DLL,而且我很久以前就忘记了我所知道的所有 COM(摆脱困境)。

如何将 DLL 示例合并到 EXE 中?这显然是将 COM 服务器封装在 EXE 而不是 DLL 中。

编辑:

请注意,现有应用程序具有 MFC GUI。

编辑:

预期用途是运行现有的 GUI 应用程序 - 无需 COM/RTD 接口的客户端启动应用程序。(虽然我不会否认那会很好)

基本上我想用我自己的数据实现 IRTDServer 接口——以便 Excel(或其他应用程序)可以访问应用程序提供的动态数据。(这是一个与串行端口设备对话的程序 - 该设备的状态/状态会发生变化,我希望能够异步更新客户端的变化)

所以,我需要创建一个 COM 对象并注册它,以便客户可以“看到”它。

我不确定如何将 COM 对象添加到 exe 并让该 COM 对象实现现有/预定义的接口。

编辑我为此开始了赏金,所以我可以获得代码示例。显然,我太懒惰和愚蠢(或者可能只是对 COM 的过度厌恶),无法开始使用 Franci Penov 的现有答案。(这非常有用,也是一个很好的开始)

所以基本上我正在寻找的是:

代码以获取我现有的基于对话框的 MFC 应用程序,该应用程序运行了一堆线程并将其转换为 RTD 服务器(具有相同的 UI)

所有的 cocreate 和 CoThisandthat 等等。我在哪里把代码放在我的 exe 中?我如何扩展/实现 IRTD 的东西?

一个示例 MFC hello world 应用程序(基于对话框)的前后将得到公认的答案。

  1. 在应用程序之前包含 mfc 对话框应用程序的所有源代码。
  2. “after”应用程序,它基于步骤 #1 中的 MFC 应用程序,实现 RTD srver 接口及其所有源。(所有项目文件、源代码等)
  3. 在 GUI/Visual Studio 中采取的步骤,否则从步骤 1 创建步骤 2。(创建 IDL 等其他文件。)

理想情况下,这是为 VS2008 提供的,但任何版本都可以使用。

谢谢。

0 投票
3 回答
9148 浏览

c++ - Excel RTD(实时数据)客户端不是 Excel 吗?

我一直在寻找,但找不到任何 RTD CLIENT 示例(尽管有许多 RTD 服务器示例)。

我的目标是将数据从 RTD 服务器“拉”到我的应用程序中以用于算法交易。

如果可能,不使用 C#/.Net,因为我正在寻找一个轻量级、可部署的解决方案。

你能给我一些建议吗?

0 投票
1 回答
2572 浏览

c# - Excel RTD COM 服务器 - 无法将 UpdateEvent(类)转换为 IRTDUpdateEvent(接口)

此问题与 Kenny Kerr 在“Excel RTD 服务器:C# 接口”上的博文有关,该博文可在此处找到,它应该允许您构建 Excel RTD 服务器,而无需包含对任何特定 Excel 类型库的引用;必须包含引用使您的 RTD 服务器 Excel 版本特定(我相信向前兼容,但不向后兼容)。不依赖 Excel 类型库可简化将 RTD 部署到具有不同 Excel 版本(XP、2003、2007 和 2010)的机器上。

现在,没有 RTD 引用特定的 Excel 类型库来获取接口 IRtdServer 和 IRTDUpdateEvent 是非常好的。但我正忙着让肯尼的建议奏效。

这是我所做的:

我在 VBA 和 VBScript 中有小型测试工具,通过模拟 Excel 对 RTD 的调用来测试我的 MyRTD.dll RTD 服务器。以下是相关的代码片段:

第一个VBA:

此代码在最后一行失败,消息为“无法将 MyRTD.UpdateEvent 转换为 MyRTD.IRTDUpdateEvent”。虽然类 UpdateEvent 实现了接口 IRTDUpdateEvent。

第二个VBScript:

此代码在最后一行失败,消息沿“无效的过程调用或参数”行(我假设回调的结果是错误的类型/接口)。

任何帮助,将不胜感激。

0 投票
2 回答
1741 浏览

c# - 使用 C#(用于 Excel 的 RTD 服务器)写入和读取相同的 xml 文件

我正在为 C# 中的 Excel 开发一个附加组件,其中包括一个 RTD 服务器。因为我们还没有 SQL 数据库,所以我必须使用 XML 文件来存储数据。

XML 文件通过一侧在 Excel 中使用的 C# 函数进行更新。另一方面,多个用户必须能够实时检索这些数据。

当我同时运行这两个函数(更新和读取 XML 文件)时,写入函数不时崩溃并出现错误file being usee by another process

写函数:

和读取功能:

我看不出如何解决这个问题,所以任何想法都会受到欢迎。

0 投票
1 回答
651 浏览

excel - 如何在 excel 启动时汇集所有 RTD 调用?

我有一个从实时源获取值的 RTD 服务器。问题是用户有相当大的 Excel 表,接近 20,000 个 RTD 公式。因此,当用户打开工作表时,所有 RTD 公式都会被触发,从而向服务器发送 20,000 个查询。这目前有效,但如果我可以将查询分组并将其发送到服务器,服务器可以执行得更好。

我的想法是维护一面旗帜。当计算开始时,标志将被设置为假,当计算结束时我可以重置它。调用 RTD 公式时,如果未设置标志,我不会将查询发送到 RTD 服务器,而是将其汇集。当标志设置为 true 时,我可以合并池查询并将其发送到服务器

我不确定如何在 excel 开始和停止计算时获得通知。请帮忙。此外,如果您知道解决此问题的任何其他方法,那就太好了。我正在使用 Excel 2007,C# 3.5

请帮忙。非常感谢。拉什米

谢谢,

0 投票
1 回答
2270 浏览

c# - 从 Excel 调用 RTD 服务器时出现异常

我使用 Visual Studio 2010 编写了一个 VSTO Excel 插件,在设法解决了微软在正义开发者的道路上设置的大部分障碍之后,我最终不得不承认失败。

我的项目包含一个带有一些控件的功能区、一个允许用户通过 RESTful 界面搜索数据库的自定义任务窗格和一个允许他们将这些数据放入工作表中的 RTD 服务器。到目前为止,所以……嗯,很痛苦,我想:在与 Interop、ComVisibility 和 AppDomains(多么棒的主意!)进行了很多斗争之后,我目前的状态如下。

在工作表中,我像这样调用 RTD 的包装函数(截断):

这是(部分)插件类:

以及 RTD Server 类的相关部分:

在调试模式下我:

  1. 创建一个空的新工作簿
  2. 将“=RTD(...)”公式添加到单元格
  3. 将包装函数调用“=call(...)”添加到单元格
  4. 保存工作簿
  5. 打开工作簿
  6. 停止调试并重新启动
  7. 打开工作簿

我观察到:

  • 3点,一切正常
  • 5点,一切正常
  • 在 7 点,当重新计算我的单元格时,我Unable to get the RTD property of the WorksheetFunction class在 3) 的单元格和 2) 的单元格中出现异常#N/A。但是,我可以看到主题已在 RTD 服务器中注册,并且一旦数据可用,异常就会被正确的数据替换。此外,如果我重新计算单元格,它们会显示保存的值,然后在数据可用后正确更新为检索到的值。

如果处于部署模式,我观察到:

  • 在 2,我得到#N/A
  • 在 3,我得到一个Unable to get the RTD property of the WorksheetFunction class例外

请问有什么帮助吗?:(

编辑:

在空白的 Addin 项目中使用非常基本的 RTD 服务器测试相同的过程会显示完全相同的结果:#N/A如果在服务器获得可用数据之前重新计算 RTD 公式,则会显示加载的 excel 文件。我想问一下:WTF?

干杯,车

0 投票
3 回答
18285 浏览

c# - 如何使用 RtdServer 在 C# 中创建实时 Excel 自动化加载项?

我的任务是使用 RtdServer 在 C# 中编写一个实时 Excel 自动化插件来工作。我非常依赖在 Stack Overflow 中学到的知识。我决定通过写一个如何将我所学的知识联系在一起的文档来表达我的谢意。Kenny Kerr 的Excel RTD 服务器:最小的 C# 实现文章帮助我入门。我发现Mike RosenblumGovert的评论特别有帮助。

0 投票
1 回答
2470 浏览

c# - 如何在 C# 中创建一个包装 RTD 函数的 Excel 自动化加载项?

我有一个有效的基于 RtdServer 的自动化加载项:
如何使用 RtdServer 在 C# 中创建实时 Excel 自动化加载项?.

创建 VBA 包装器很简单:

这行得通。我试图创建一个 C# 包装器,如下所示:

当我在 Excel 中的单元格中输入“=Countdown(150)”时,它会显示 ConnectData 返回的初始值 150,但从不更新。我应该注册一些回调吗?我是否正确实例化了 Application 对象?我错过了什么?

谢谢,

坦率

0 投票
1 回答
15022 浏览

excel - 如何通过注册表启用 Excel 自动化加载项?

我有一个由我的安装程序向 COM 注册的 Excel 自动化插件。通过注册 COM,我的加载项出现在(对于 Excel 2007)Excel 选项 > 加载项 > 管理 Excel 加载项转到... > 自动化列表中。用户仍必须导航到上面的对话框并选择我的加载项以启用它。

在向 COM 注册类型后,是否可以(可能通过注册表项)在我的安装程序类(或 VBA)中以编程方式启用我的自动加载项?

提前致谢 - 弗兰克

0 投票
3 回答
12697 浏览

excel - “Microsoft Office Excel 正在等待另一个应用程序完成 OLE 操作”是什么意思。意思是?

我有一个可用的 RTD Excel 自动化插件,类似于此处描述的插件。间歇性地,在尝试加载包含此公式的工作表时,我收到以下错误:

Microsoft Office Excel 正在等待另一个应用程序完成 OLE 操作。

根据一些论坛讨论(我无法再找到),我已选中并取消选中“忽略使用动态数据交换 (DDE) 的其他应用程序”。两者都不起作用。

谷歌为此错误产生了许多点击,但没有解决方案。这里有一篇古老的知识库文章,但同样没有解决方案。

是什么导致了这个错误?有什么办法可以避免吗?

谢谢!