问题标签 [dde]

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

vb.net - 如何缓存实时数据?

  • 我正在开发一个 Windows 窗体应用程序(.NET 4.0)。
  • 我的表单包含使用 VS2010 中包含的 Microsoft 图表控件的“快速线”图表。
  • 该图表填充了大约 20,000 个数据点。
  • 然后我的应用程序开始通过 DDE(动态数据交换)从服务器实时接收市场数据并将其添加到图表中。

注意:我无法控制服务器,因此我只能处理 DDE,即使它是一种过时的技术。VS 不再支持 DDE,所以我使用Ndde库,它就像一个魅力。

首先我们连接到服务器,创建一个通知循环,然后订阅 OnAdvise 事件以接收新数据的通知:

现在我们可以将更新图表的命令放入事件中:

你明白了。

问题:

这可以正常工作几秒钟,直到图表崩溃并抛出异常:“集合已修改;枚举操作可能无法执行。”

我花了很多时间研究在我的特定情况下可能是什么原因,我得出的结论是,这是因为图表接收数据的速度超过了它可以处理的速度。它已经加载了大量数据,需要一定的时间(不到一秒)将接收到的数据添加到新的 DataPoint 中并使其自身失效(刷新)。而服务器通常会非常快速地发送数据值(例如之间的 5 毫秒)。所以我尝试了以下方法:

因此暂停应用程序,让图表有时间在添加新点之前完成其工作,你猜怎么着?该应用程序现在可以在引发异常之前运行几分钟。(但是,更改 Sleep() 中的值并没有帮助)

我能在网上找到的唯一帮助是一篇旧帖子,有人提到您应该将传入数据放在缓存队列中,一次从现金中释放一个新数据值(每次图表完成工作时)。

我的问题是你会怎么做?

欢迎其他建议!

0 投票
1 回答
650 浏览

ms-word - Windows 2008 上的 DDE 打印失败

我有一个在本地系统帐户下运行的 Windows 服务应用程序(用 C++ 开发)。操作系统是 Windows Server 2008 Standard - Service Pack 2 - 32 位 - 4Gb RAM。还运行带有 Service Pack 3 的 Office 2003。

该服务采用 RTF 文件并使用 DDE 将其与 Microsoft Word 一起打印。但是 Word 无法执行打印并发出错误(如果我启用与桌面的交互,我会看到错误)。错误是

“运行时错误‘1001’:

内存不足。立即保存文档。C:...\file.rtf"

可以在这里看到截图:http: //img804.imageshack.us/img804/9550/worderror.png

它曾经在 Windows 2003 上工作。

任何的想法?建议?可能与许可有关吗?

0 投票
1 回答
587 浏览

c# - 将 DDE 消息传递到 Acrobat Reader 时路径中出现特殊字符的问题

一段时间以来,我一直在研究一个问题,但没有找到解决方案。谷歌也试过了,没有走上正轨......

任何帮助,将不胜感激!

问题是:

我正在发送一个 DDE 命令,以打开 PDF 文档以静默打印。问题在于路径,如果它有非 ASCII 字符。它不会被识别并引发错误。我应该如何处理路径字符串以避免这种情况并让 Acrobat 阅读器理解路径?我试过用“o”代替“ø”,而且效果很好......提前谢谢!

我正在使用NDde传递 DDE 消息。

0 投票
1 回答
2137 浏览

.net - 为什么在我使用线程池获得 .Net App 的渲染层后,我从 Excel 调用的 DDE 挂起?

我发现了一个非常奇怪的问题,如果我使用 ThreadPool 获得 .Net 应用程序的渲染层,它将挂起来自 Excel 的非常简单的 DDE 调用。在从 Excel 调用 DDE 的同时运行复杂的 WPF 应用程序时会出现此问题。我已经设法在下面的几行代码中重现了这个问题。

C# .Net 应用程序

Excel DDE 宏。

运行宏会在单独运行时弹出 3 个消息框。如果我在 c# 应用程序运行时尝试运行宏,它将挂起对 DDEInitiate 的调用。一旦 c# 应用程序关闭,excel 就会恢复活力。从主线程获取渲染层不会导致问题。我还注意到,如果调试器暂停,即使没有调用获取渲染层,宏也会挂起。

使用带有 Excel 2003、.Net3.5 和 .Net4 的 Windows Xp 以及带有 Excel 2010、.Net3.5 和 .Net4 的 Windows 7 复制了问题。

知道为什么会这样吗?这是 PresentationCore.dll 的错误吗?

谢谢你的帮助

[更新]

更改机器的渲染层似乎释放了这个“锁”(之后我不得不移动窗户)。我通过启动 NetMeeting 来更改渲染层,但可以通过强制您的显卡在显示属性中使用软件渲染来完成。

0 投票
2 回答
2746 浏览

c# - 使用 System.Windows.Automation 的 DDE

是否可以使用 .NET System.Windows.Automation 命名空间并执行与旧 DDE 等效的操作?

我的要求是从我的 .NET Windows Forms 应用程序中读取命令窗口(也可以是大型机屏幕)内的文本。

为此目的使用http://ndde.codeplex.com/会更好吗?

0 投票
2 回答
1867 浏览

c++ - SendMessage() WINAPI 在用于连接到 DDE 服务器时挂起

我有一个 DDE 客户端应用程序,它使用SendMessage()WINAPI 连接到 DDE 服务器应用程序。在SendMessage()请求连接到 DDE 服务器时挂起的呼叫之后。DDE 客户端应用程序和服务器应用程序都在 VC++ 中。

现在SendMessage()它在做什么被绞死了?基本上它是WM_DDE_INITIATE向系统中的所有窗口广播窗口消息。它所针对的窗口(DDE 服务器)应处理该消息并应以确认回复。收到确认后,SendMessage()呼叫完成并连接客户端。

在我们的例子中,它正在挂起并且永远不会返回,因此我们的 DDE 客户端应用程序正在挂起。

我在网上搜索,发现SendMessage()通常不推荐使用广播,因为它会挂很多次。

我有 DDE 客户端应用程序和 DDE 服务器应用程序的代码。

让我知道是否有某种方法可以检索 DDE 服务器窗口句柄或某种方法可以为 DDE 服务器窗口分配一个唯一名称。

通过这样做,我相信在客户端我可以从唯一名称(使用FindWindow()winapi)检索 DDE 服务器的窗口句柄,而不是使用广播,SendMessage()我可以使用窗口句柄将消息直接发送到 DDE 服务器。

如果您觉得上述获取 DDE 服务器窗口句柄的方法不可行或不推荐,那么请告诉我一些其他使用SendMessage()winapi 连接到 DDE 服务器的方法。

0 投票
2 回答
5123 浏览

windows - DDE:实现通过 Shell 和 ddeexec 正确启动的应用程序

我正在尝试实现一个将自身注册为 DDE 服务器的应用程序,以便它正确响应我们的自定义“.qsx”文件类型,就像 WinWord 响应“.docx”文件类型一样。

IE

  1. 如果应用程序已经在运行并且有人双击“.qsx”文件,那么我们希望已经打开的应用程序接收 DDE 打开命令并打开相关文件。
  2. 但是,如果应用程序尚未运行,那么 shell 应该启动我们的应用程序,然后与应用程序建立 DDE 连接并告诉它像以前一样打开文件。

我们的第 1 部分工作完美。

但是,对于第 2 部分,Shell 启动命令,但随后失败并显示“将命令发送到程序时出现问题”。这对应于从“ShellExecute”Windows API 函数返回的返回代码“SE_ERR_DDEFAIL”(29)。

事实上,我已经编写了一个名为“ShellExecute.exe”的自定义控制台应用程序,它可以完全独立于 explorer.exe 来重现这个问题。

如果我运行 ShellExecute.exe 并且我们的“DDE 服务器”应用程序已经启动,那么它可以正常工作。如果我为“.docx”文档运行 ShellExecute.exe 而 WinWord 没有运行,WinWord 会正确启动并加载该文档但在我们的服务器应用程序甚至有机会注册为 DDE 服务器之前,立即返回 SE_ERR_DDEFAIL。

出于某种原因,对于 WinWord,ShellExecute 似乎等待它启动。

我尝试在运行 procmon.exe 的情况下运行这两种情况,以查看 ShellExecute 可能在注册表中查找的内容,从而将我们的情况与 WinWord.exe 区分开来,但我找不到任何东西。

我真正需要的是 ShellExecute 算法的源代码,这样我就可以找出为什么它适用于 WinWord 但不适用于我们的自定义扩展。

谁能详细解释一下 ShellExecute 启动应用程序时做了什么,特别是它如何知道“等待”应用程序注册为 DDE 服务器?

0 投票
3 回答
1509 浏览

java - NetBeans 在导入的 jdde pretty-tools jar 文件中找不到类

我想将 DDE 与 Java 一起使用,经过一些研究,我决定使用http://jdde.pretty-tools.com/

我的这个项目的编程平台是 NetBeans。

但是,我遇到了一个小问题。我已经导入了 jar 文件,因为它应该完成,即右键单击包 > 属性 > 库 > 添加 JAR/文件夹。我还尝试通过这种方式创建一个新库并添加 jar 文件。在这两种情况下,我都设法导入了 jar,在 Libraries 文件夹中,我可以看到 jar 和该 jar 中的源文件,这意味着在此之前一切正常。当我尝试将包导入我的源文件时,问题就开始了,即:

其结果是 DDEClientConversation 被标记为错误,并显示消息“找不到符号”。我正在考虑漂亮的工具 jar 文件可能会以某种奇怪的方式出现问题,因为当我从不同的包导入不同的 jar 时,一切正常。

0 投票
0 回答
988 浏览

linux - 如何在 Linux 中获取浏览器的当前 url?

在 Windows 中,使用简单的 DDE 命令很容易从大多数浏览器中获取当前 url。同样使用 DDE,您可以告诉浏览器转到另一个位置。

如何在 Linux 中执行类似的任务?我需要为我正在制作的工具检索浏览器指向的 url。

我知道 Linux 中没有 DDE 等价物,但通常命令行可以做魔术......

首选浏览器:依次为 Firefox 或 Chrome。

0 投票
2 回答
1823 浏览

c# - 如何确定 Acrobat Reader 版本?

我需要确定 Adob​​e Acrobat Reader 版本以使用 DDE 连接字符串名称。

在 10.0 版本中,Adobe 更改了“DDE 命名约定 — DDE 服务器名称对于 Acrobat 和 Reader 是唯一的。新的命名约定如下:Acroview{A|R}{MajorVersion} 其中 {A|R} 指分别是 Acrobat 和 Reader。”

注册表中有任何信息吗?

更多信息:http: //blogs.adobe.com/pdfdevjunkie/2011/01/big-changes-in-the-dde-naming-convention-for-acrobat-x.html