从我的程序的一个实例发送字符串到我的程序的另一个实例的最佳和最简单的方法是什么?接收程序必须使用接收的字符串作为参数来执行过程.
我开始阅读DDE,但我感到困惑.我还有其他选择,实现这个的最简单方法是什么?
我在MATLAB中使用外部java包jdde.请注意,对于以下示例,程序包附带的DLL文件需要位于MATLAB库路径中.执行此操作的方法因您的MATLAB版本而异.
在MATLAB中使用jdde工作正常,除了我重新启动计算机或在Windows中注销/登录后的第一次.当我在计算机重启后第一次运行以下代码时,MATLAB将永远保持繁忙模式(CPU为0%).发生这种情况时,我会在任务管理器中终止MATLAB进程并重新启动MATLAB.当我再次运行相同的代码时,它将立即执行(不会永远保持忙碌).
javaaddpath('C:\pretty-tools-JDDE-1.0.2.jar')
a = com.pretty_tools.dde.client.DDEClientConversation;
a.connect('','');
Run Code Online (Sandbox Code Playgroud)
总结一下,上面的代码将导致MATLAB在系统重启或用户注销/登录后第一次运行它时永远保持忙碌状态.当我在杀死MATLAB过程后再次运行它时,它将完美地工作(不要挂起MATLAB).
我在不同的计算机上以及不同版本的MATLAB(2010和2012)中看到过这种行为.我使用的是Windows 7 x64.
在代码示例中,a.connect命令是导致MATLAB永远保持忙碌的命令.将此命令放在try/catch块中无济于事,因为a.connect不会导致错误,它永远不会继续.
我不确定这个问题是由MATLAB还是java包引起的.任何想法如何摆脱这种行为将不胜感激.
注意:a.connect的输入参数无关紧要,它将始终挂起,所以我在这个例子中只给了''作为输入.
我开发了一个MATLAB函数,我正在寻找一种方法从另一个C#应用程序调用该函数并将一些参数传递给它并在C#程序中获得结果.
我听说我可以使用动态数据交换(DDE)或COM对象,但我能做到吗?
我的印象是,当您双击文件(或从右键菜单中选择"打开方式")时,Windows只是以文件名作为参数调用应用程序.像这样的东西:
C:\> App.exe file.abc
但是,我只是双击一个.xls文件,然后检查出现的Excel实例的PEB.令我吃惊的命令行并没有包含文件名作为参数.
这让我感到疑惑.Windows用于使相关应用程序打开文件的机制究竟是什么?是否有一个特殊的API,每个支持此类工具的应用程序必须公开?
我正在研究股票交易所信息平台,我们正在考虑在我们的平台和自制的Excel文件之间提供链接.金融市场仍然受旧DDE服务器方式的束缚,现在它仍然重要吗?
哪些是在Excel文件,OLE DB查询上自动在线数据更新的替代方案?我想知道是否有人在C#和.NET中实现OLE DB提供程序的任何示例.
我们的API将完全在线和RESTful,有任何Web服务替代方案将此数据链接到Excel?我记得Excel 2003有一个Web服务工具包但我在Excel 2007中找不到任何接近的东西.
是否有可靠的方式以编程方式打开特定的bloomberg终端页面(例如"MSFT Equity")?
我对任何建议和代码示例持开放态度:
非常感谢
我使用TeXnicCenter for LaTeX,并希望DDE控件能够轻松查看pdf版本.Acrobat X似乎更改了服务器名称,这是破坏事情.我试过"AcroViewR10"或"acroviewR10"等组合,但仍然无法正常工作.
作为一种解决方法,使用命令行参数"%bm.pdf"可以工作,但我需要在重新编译之前每次手动关闭pdf.因此,需要额外点击左右.
任何人都可以通过修复DDE或如何在重新编译时自动关闭pdf来解决问题吗?
我有一个数据提供程序,它提供了一个DDE链接(我可以在Excel中使用)和一个在后台运行的exe文件,它充当数据管理器(不确定这是否称为DDE服务器)和DDE链接连接到该exe文件.
我想绕过Excel并直接在Python中工作.我看到了一些关于DDE的例子,但它们都在Python 2中,我使用的是Python 3.
我在网上看到了一些例子:
import win32ui
import dde
...
...
server = dde.CreateServer()
server.Create("SomeName")
...
Run Code Online (Sandbox Code Playgroud)
但这些示例显示了如何创建DDE服务器.在我的情况下,有一个现有的exe是数据管理器(DDE服务器可能是?),在Excel中有一个菜单,我可以通过它来获取数据,如
' = DataProviderFunc1(Param1, Param2)'
' = DataProviderFunc2(Param1, Param2)'
Run Code Online (Sandbox Code Playgroud)
我想在Python中编写一个直接输出' = DataProviderFunc1(Param1, Param2)'等的代码,而不是打开Excel工作表,然后让Python读取Excel工作表的输出.
这可能吗?
我使用的是Python 3.4.谢谢
DDE模块上的文档似乎很少,例如http://docs.activestate.com/activepython/2.4/pywin32/dde.html
我在C#中使用Win Api实现了DDE客户端的功能.如果我打电话DdeInitializeW和DdeConnect单线程,一切正常.具体来说,这些是包装器定义:
[DllImport("user32.dll")]
protected static extern int DdeInitializeW(ref int id, DDECallback cb, int afcmd, int ulres);
[DllImport("user32.dll")]
static extern IntPtr DdeConnect(
int idInst, // instance identifier
IntPtr hszService, // handle to service name string
IntPtr hszTopic, // handle to topic name string
IntPtr pCC // context data
);
Run Code Online (Sandbox Code Playgroud)
如果我打电话DdeInitializeW,并DdeConnect在不同的线程,DdeConnect返回空指针.
此外,如果我在一个线程中调用它们(已建立的DDE连接),我不能在另一个线程中使用此DDE通道(我收到INVALIDPARAMETERDDE错误).
正如我所说,一切都在单线程中没有问题.
我希望能够允许用户在Excel的单元格中输入自定义公式,该公式将订阅外部.NET应用程序提供的数据.例如,用户可能会输入...
=getCurrentValue("ABC")
Run Code Online (Sandbox Code Playgroud)
有一个外部.NET(C#)应用程序每分钟确定"ABC"的值.
单元格应该从外部应用程序显示"ABC"的初始值,并在外部应用程序发送新值时更新.
在过去,我认为外部应用程序将是一个DDE服务器,公式将是一个DDE客户端公式,但DDE显然已经死了.用于执行此操作的"正确"技术是什么?
请注意,电子表格需要通过公式提取数据.该信息不会进入固定模板excel文件,而是进入用户输入公式的任何电子表格中.
谢谢,
约翰