Put on your wayback hats...
I have to use DDE (sorry, absolutely no choice in this) to communicate with an industrial control system. The control system is the DDE server and runs on the same Windows 7 PC as my DDE client. The client uses MfcDDE as it's interface which in turn makes calls to the DdeClientTransaction()
functions.
The DDE advise operations work as expected after calling MfcDDE to establish them with DdeClientTransaction(XTYP_ADVSTART
). All data points of interest are successfully read through the advice mechanism.
Unfortunately, attempts to write data through the DdeClientTransaction(XTYP_POKE)
function fails. Within my client, DdeGetLastError()
returns DMLERR_INVALIDPARAMETER (16390 0x4006)
. Interestingly, DDESpy (yes, I am that desparate) is reporting DMLERR_POSTMSG_FAILED (16396 0x400C)
.
The client worked in its initial NT implementation, but rebuilt and running under Win7, the XTYPE_POKE
is failing. I've contemplated both security and threading as possibilities.
I've been unsuccessful finding a pointing gun for DDE security changes between NT and Win7.
If it matters, the DdeClientTransaction()
call is being made in a thread started with WinMain()
calling through to AfxWinMain()
and CDialog::DoModal()
to get to client's functional code.
Thanks for any help you can provide...