戴上你的退路帽...
我必须使用 DDE(对不起,在这方面绝对没有选择)与工业控制系统进行通信。控制系统是 DDE 服务器,运行在与我的 DDE 客户端相同的 Windows 7 PC 上。客户端使用 MfcDDE 作为它的接口,然后调用DdeClientTransaction()
函数。
DDE 建议操作在调用 MfcDDE 以使用DdeClientTransaction(XTYP_ADVSTART
) 建立它们后按预期工作。通过建议机制成功读取所有感兴趣的数据点。
不幸的是,尝试通过该DdeClientTransaction(XTYP_POKE)
函数写入数据失败。在我的客户中,DdeGetLastError()
返回DMLERR_INVALIDPARAMETER (16390 0x4006)
. 有趣的是,DDESpy(是的,我就是这么绝望)正在报告DMLERR_POSTMSG_FAILED (16396 0x400C)
。
客户端在其最初的 NT 实现中工作,但在 Win7 下重建和运行,XTYPE_POKE
失败了。我已经考虑过安全性和线程化的可能性。
我一直没有成功地为 NT 和 Win7 之间的 DDE 安全更改找到指向枪。
如果重要的话,DdeClientTransaction()
调用是在一个线程中进行的,该线程从WinMain()
调用AfxWinMain()
到CDialog::DoModal()
客户端的功能代码开始。
感谢您的任何帮助,您可以提供...